1. Linux 启动过程
1.1 init 进程和inittab 引导指令
内核完成系统引导后,加载init 进程。Init 进程是系统所有进程的起点。init
程序需要读取/etc/inittab 文件作为其行为指针,inittab 是以行为单位的描述性
(非执行性)文本,每一个指令行都具有以下格式:
id:runlevel:action:process
id 为入口标识符
runlevel 为运行级别
action 为动作代号
process 为具体的执行程序。
id 一般要求4 个字符以内,对于getty 或其他login 程序项,要求id 与tty
的编号相同,否则getty 程序将不能正常工作。
runlevel 是init 所处于的运行级别的标识,一般使用0-6 以及S 或s。0、
1、6 运行级别被系统保留,0 作为shutdown 动作,1 作为重启至单用户模式,6
为重启;S 和s 意义相同,表示单用户模式,且无需inittab 文件,因此也不在
inittab 中出现,实际上,进入单用户模式时,init 直接在控制台(/dev/console)
上运行/sbin/sulogin。在一般的系统实现中,都使用了2、3、4、5 几个级别,
在Redhat 系统中,2 表示无NFS 支持的多用户模式,3 表示完全多用户模式(也
是最常用的级别),4 保留给用户自定义,5 表示XDM 图形登录方式。7-9 级别
也是可以使用的,传统的Unix 系统没有定义这几个级别。runlevel 可以是并列
的多个值,以匹配多个运行级别,对大多数action 来说,仅当runlevel 与当前
运行级别匹配成功才会执行。
initdefault 是一个特殊的action 值,用于标识缺省的启动级别;当init
由核心激活以后,它将读取inittab 中的initdefault 项,取得其中的runlevel,
并作为当前的运行级别。如果没有inittab 文件,或者其中没有initdefault
项,init 将在控制台上请求输入 runlevel。
sysinit、boot、bootwait 等action 将在系统启动时无条件运行,而忽略
其中的runlevel,其余的action(不含initdefault)都与某
新手上路资料下载:http://www.51qa.net/bbs