Linux内核启动过程中,会挂载文件系统,在文件系统挂载后,运行的第一个程序就是根目录下的linuxrc,而这是一个指向/bin/busybox 的链接,也就是说,系统起来后运行的第一个程序就是busybox本身。
再然后,busybox会解析“/etc/inittab”配置文件,而/etc/inittab配置文件里面会运行/etc/init.d/rcS这个脚本!
脚本命令:for initscript in /etc/init.d/S[0-9][0-9]*
这句话的意思是遍历/etc/init.d/下的以名称为S开头的,紧接着是数字0-9,再紧跟着还是数字0-9,再往后有多少字符不限制的文件。
实际/etc/init.d/rcS/下的内容如下:
也就是说initscript依次为S01udev、S02init_rootfs、S03network、S10Startup
doif [ -x $initscript ] ;thenecho "[RCS]: $initscript"$initscriptfi
done
这段代码的意思是:依次检测$initscript,即S01udev、S02init_rootfs、S03network、S10Startup是否可执行,如果可执行,则给出提示,并且执行之;否则不执行
这几个文件都是加载根文件系统时被添加进来的,所以,如果要修改启动脚本,必须是在制作根文件系统时,修改这几个脚本文件。如果在系统启动后,通过vi /etc/init.d/rcS修改脚本,那么系统重新启动后,脚本恢复成原来的。
只能通过修改文件系统修改。