2010年11月12日星期五

Linux启动过程之inittab脚本流程分析

系统从我们按下计算机的电源键到机器可以使用,执行流程如下:
power on–>BIOS–>Grub–>Kernerl boot–>init(rc.sysinit, rc)–>mingetty(login)–>Shell—->
Init进程进程号为1,是linux内核引导完之后运行的第一个进程,init进程运行初会去读取配置文件/etc/inittab。Inittab是一个不可执行的文本文件,由若干指令组成。这里总结一下init进程开始的系统脚本执行顺序,以及各个脚本的含义。
脚本/etc/inittab中所有的记录都以以下的格式呈现:
id:runlevel:action:process
id是入口标示符号,为一个字符串,对于getty或mingetty等login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。
runlevel是级别标志,init进程启动时会有一个运行级别,/etc/inittab脚本中和init运行级别匹配的记录会被执行。
Action表述后面的process的运行方式。action的取值包括initdefault、sysinit、boot 、bootwait。
Initdefalut是一个特殊的action值,用于标示缺省的启动级别。当init进程启动后会去读取initdefault的值,如果没有此值,则会在控制台请求用户输入runlevel值。
Process为具体的执行程序,程序可以带参数。
脚本中记录的含义:
id:5:initdefault:
用于指定当前的runlevel,5标示运行于界面模式。
si::sysinit:/etc/rc.d/rc.sysinit
此脚本主要用于完成系统初始化工作,它是每一个级别都要首先运行的重要脚本。rc.sysinit程序执行完后,将返回init继续执行。
l2:2:wait:/etc/rc.d/rc2
各守护进程的启动,rc2为一个shell脚本,在rc2中回去循环执行/etc/rc.d/rc2.d目录下的所有脚本,这些脚本一般都是符号链接,链接到别的位置文件,这些脚本一般都会接受start、stop、restart、status等参数。
1:2345:respawn:/sbin/getty 38400 tty1
用于启动终端

没有评论:

发表评论