一、引导流程
当kernel被BootLoader引导起来后,就进行一系列的初始化动作,当初始化所有的设备驱动程序和数据结构完毕后,第一件事会去调用init的程序,去完成引导流程。所以init进程是第一个进城,编号始终为1。init进程启动后会首先去读取**/etc/inittab文件中的initdefault id**值,这个值决定了系统的启动级别,决定需要运行/etc/下哪一个rcX.d文件。这个级别从0到6 ,具有不同的功能。不同的运行级定义如下:
# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 – 系统保留的
# 5 - X11 (x window)
# 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 )
值得注意的是,在debian和Ubuntu下并没有这个文件,他们有自己的处理方式。
二、init.d
init.d文件夹下放的是一些脚本,一般是在开机后需要启动的一些服务脚本,执行这些脚本可以控制服务的启动,停止,重启等一些服务。
但在init.d文件夹下的脚本并不能直接使用,而是有选择的,因为系统并不是需要所有的服务。那系统是如何分辨需要启动那些服务的呢?答案就是上面所说到的启动级别,在/etc下有对应的启动级别目录rc0.d
、rc1.d
、rc2.d
、