嵌入式linux系统由内核态转用户态过程

接触过了几款嵌入式linux 机子,每个机子里都有个叫开机启动脚本的文件,在后续添加开机启动程序时总是不断地追加在这个文件里。此为知其然不知其所以然,究竟是谁决定了这个开机启动文件?

一路追本溯源,找到了/etc/inittab 这个文件,搜索到::sysinit:xxxx 这么个地方,这里的xxxx就值代了开机启动的脚本,于是搜了一把,从以下两篇文章中找到这个文件的作用

http://www.xshell.net/linux/inittab_rc.html

http://blog.csdn.net/wxlkeepmoving/article/details/6636547

具体的为,linux在引导完内核后,会跳到用户态去执行/sbin/init程序,而/etc/inittab是这个程序的执行清单,其中sysinit可以理解为开机就会去执行的标志,后面的xxxx是我们定义的开机启动文件。

抄了些用得着的:

respawn:表示init应该监视这个进程,即使其结束后也应该被重新启动。
wait:init应该运行这个进程一次,并等待其结束后再进行下一步操作。
once:init需要运行这个进程一次。
boot:随系统启动运行,所以runlevel值对其无效。
bootwait:随系统启动运行,并且init应该等待其结束。
off:没有任何意义。
initdefault:系统启动后的默认运行级别;由于进入相应的运行级别会激活对应级别的进程,所以对其指定process字段没有任何意义。如果inittab文件内不存在这一条记录,系统启动时在控制台上询问进入的运行级。
sysinit:系统启动时准备运行的命令。比如说,这个命令将清除/tmp.可以查看/etc/rc.d/rc.sysinit脚本了解其运行了那些操作。
powerwait:允许init在电源被切断时,关闭系统。当然前提是有U P S和监视U P S并通知init电源已被切断的软件。RH linux默认没有列出该选项。
powerfail:同powerwait,但init不会等待正在运行的进程结束。RH linux默认没有列出该选项。
powerokwait:当电源监视软件报告“电源恢复”时,init要执行的操作。
powerfailnow:检测到ups电源即将耗尽时,init要执行的操作,和powerwait/powerfail不同的哟。

ctrlaltdel:允许init在用户于控制台键盘上按下Ctrl + Alt + Del组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将Ctrl + Alt + Del组合键配置为别的行为,比如忽略等。


你可能感兴趣的:(嵌入式linux)