Centos开机启动主要过程如下:

找到系统引导分区,执行引导程序,加载内核

执行init程序

/etc/rc.d/rc.sysinit#由init执行的第一个脚本

/etc/rc.d/rc$RUNLEVEL#$RUNLEVEL为缺省的运行模式,服务器的运行级别为3

/etc/rc.d/rc.local  #相应级别服务启动以后、再执行该文件(当然也可以把须要执行的命令讲到该文件中)

/sbin/mingetty#等待用户登入

Centos启动过程详解_rc.sysinit初始化脚本_linux自启动c程序

在Redhat/Centos中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作linux入门,包括:

调入keymap以及系统字体

启动swapping

设置主机名

设置NIS域名

检测(fsck)并mount文件系统

打开quota

装载声卡模块,设置系统时钟等等。

/etc/rc.d/rc则依据其参数指定的运行模式(运行级别,你在inittab文件中可以设置)来执行相应目录下的脚本。但凡以Kxx开头的,都以stop为参数来调用;但凡以Sxx开头的,都以start为参数来调用。调用的次序按xx 从小到大来执行。(其中xx是数字、表示的是启动次序)诸如,假定缺省的运行模式是3,/etc/rc.d/rc都会按上述方法调用 /etc/rc.d/rc3.d/下的脚本。

值得一提的是,Redhat/Centos中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,所以用户可以自己在这个文件中添加一些须要在其他初始化工作以后,登陆之前执行的命令。(对此提出了疑惑,见旁边的:rc.local不一定是最后执行的脚本)

lrwxrwxrwx1rootroot11Apr1214:26S9999local->../rc.local

init在等待/etc/rc.d/rc执行完毕以后(由于在/etc/inittab中/etc/rc.d/rc的action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登入。 至此,LINUX的启动结束。

Linux系统有7个运行级别,她们各自的含意是:

第0级 关掉系统

第1级 单用户模式

第2级 没有网路多用户模式

第3级 有网路多用户模式

第4级 系统保留

rc.sysinit初始化脚本_Centos启动过程详解_linux自启动c程序

第5级 有网路和图形的多用户模式

第6级 重启系统

在centos中,rc.local不应是最后一个启动脚本。

centos运行级别为3,在/etc/rc3.d中存在S9999local和S9999smartd这两个文件。

lrwxrwxrwx1rootroot11Apr1214:26S9999local->../rc.local

lrwxrwxrwx1rootroot16Apr1214:26S9999smartd->../init.d/smartd

按照启动规则(启动的先后与文件名S以后的数字有关,数字越大,启动的次序越靠后),rc.local比smartd先执行linux自启动c程序,为了验证这个推测,在这两个脚本中分别添加下边的两个句子

rc.sysinit初始化脚本_Centos启动过程详解_linux自启动c程序

echo”rc.local”`date`>>/test

echo”smartd”`date`>>/test

/test结果为:

smartdThuJun2017:43:56CST2013

rc.localThuJun2017:45:21CST2013

smartdThuJun2017:45:21CST2013

可以发觉smartd执行了两次linux 下载,一次是在死机的时侯,一次是在rc.local执行以后。rc.local不一定是最后一个执行的脚本,虽让rc.local中给出了如下注释:

#!/bin/sh

2#

linux自启动c程序_rc.sysinit初始化脚本_Centos启动过程详解

3#Thisscriptwillbeexecuted*after*alltheotherinitscripts.

4#Youcanputyourowninitializationstuffinhereifyoudon't

5#wanttodothefullSysVstyleinitstuff.

7touch/var/lock/subsys/local

rc3.d中文件名为S开头时linux自启动c程序,传入的启动参数为start;rc3.d中文件名为S开头时,传入的启动参数为stop。系统先执行Kill脚本(以S开头),后执行start脚本(以S开始)。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复