- 论坛徽章:
- 0
|
Linux的启动顺序如下:
加载 BIOS 的硬件信息;
读取 MBR 的 Kernel Loader ( lilo, grub等)开机信息;
加载 Kernel 的操作系统核心信息;
Kernel 执行 init 程序并取得 run-level 信息;
init 执行 /etc/rc.d/rc.sysinit 文件; 如果有/etc/rc.serial那么运行它
启动核心的外挂式模块 (/etc/modprobe.conf);
init 执行 run-level 的各个启动脚本( Scripts );
init 执行 /etc/rc.d/rc.local 文件;
执行 /bin/login 程序;
登入之后开始以 Shell 控管主机。
系统的运行级在/etc/inittab中设置(把id:3:initdefault:中的3改为相应的级别),/etc下面有一个rc.d的目录,rc.d目录中还有很多文件和子目录,如下:
文件:rc.sysinit rc rc.local
目录:init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
另外rc*.d目录中的文件都是link,link到init.d目录中的执行脚本。在rc*.d目录中的文件命名是有规则规定的,SXXfilename表示当前运行级别要启动脚本,XX为两位数字,数字越大优先级就越低,要排在第XX次运行。KXXfilename表示是要执行关闭上一个运行级别程序的脚本,该目录下系统是先运行所有K打头的脚本,再运行S打头的脚本(具体可看rc这个脚本)。
另外,Init的运行级别0表示停机,1表示单用户模式,2表示多用户模式,但无NFS支持,3表示全功能多用户模式,4没有用到,5表示xwindow,6表示重新启动计算机
如何手动增加一个启动和停止脚本呢?首先在/etc/rc.d/init.d里创建一个脚本,起名为test,然后在脚本的start处加入一行语句touch /var/lock/subsys/test,stop处加入一行语句rm /var/lock/subsys/test,再在相应的运行级别rc3.d目录下创建一链接,ln -s /etc/rc.d/init.d/test S77test,在相应的运行级别rc0.d和rc6.d目录下创建一链接,ln -s /etc/rc.d/init.d/test K77test,注意S和K打头文件中数字后的字符串要和init.d目录下test文件中touch生成的文件一致。
ps:solaris中是依次从1运行到当前运行级别目录下所有的脚本。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/32458/showart_437296.html |
|