一,init进程工作
1.
为init设置信号处理过程
2.
初始化控制台
3.
剖析/etc/inittab文件
4.
执行系统初始化命令行,缺省情况下会使用/etc/init.d/rcS
5.
执行所有导致init暂停的inittab命令(动作类型:wait)
6.
执行所有仅执行一次的inittab命令(动作类型:once)
一旦完成以上工作,init进程便会循环执行以下进程:
1.
执行所有终止时必须重新启动的inittab命令(动作类型:once)
2.
执行所有终止时必须重新启动但启动前必须询问用户的inittab命令(动作类型:askfirst)
因此,只需要研究透inittab,就可以进行启动时间优化以及其他操作
二,inittab详解
具体说明可以参看 busybox源码 examples/inittab的说明
参考文档
http://www.cyberciti.biz/howto/question/man/inittab-man-page.php
1.格式
id:runlevels:action:process
2.id说明
id用来指定启动进程的控制终端。
note:如果busybox检测到一个串口控制终端在使用,那么其他非空的id将被忽略
3.runlevels说明
busybox中忽略,没有作用
4.action说明
action有sysinit, respawn,
askfirst, wait, once,restart,
ctrlaltdel, and shutdown.
sysinit:在系统引导期间执行进程
respawn:无论什么时候进程结束,都会重启这个进程
askfirst:和respawn的唯一区别是,在运行这个进程前,需要按下entr键确认
wait:进程执行,init将等待这个进程执行结束
once:进程执行
restart:重启时执行的进程
ctrlaltdel:接收到SIGINT信号,执行进程。在系统控制终端中按下ctrl+alt+del,可以发送SIGINT信号
shutdown:关闭时,执行的操作
5.process说明
特定的进程
三,example
/etc/inittab
note:-/bin/sh中”-“代表交互的,如果没有”-“,则不会执行/etc/profile,export等交互使用的命令也起不到相应的作用