文章目录
关注点
- busybox支持 uClibc和glibc,对linux2.2.x之后的内核良好支持
- busybox是一个遵循GPL V2协议的开源项目。将众多的unix命令集合进一个很小的可执行程序,替换GUN fileutiles,shellutils等工具。busybox中各种命令相对少,但能满足一般需要。体积相比动辄几MB的GNU工具,只有几百KB,缩小很多。
- 在使用busybox创建最小根文件系统时,只需/dev创建必要的设备节点,/etc下创建一些配置文件。如果busybox使用动态链接,还要在/lib目录下包含库文件
busybox init进程启动
如果内核启动同时设置了环境变量console或CONSOLE则使用指定的设备,未指定则使用/dev/console
- /etc/inittab的格式
<id>:<runlevels>:<action>:<process>
- 各个字段的作用
- id 表示这个子进程要使用的控制台(stdin,stdout,stderr),省略则和init进程使用一样的控制台
- runlevels busybox中无意义,可省略
- action 如何控制这个子进程,取值见下表
| action名称 | 执行条件 | 说明 |
|---|---|---|
| sysinit | 系统启动后最先执行 | 只执行一次,init进程等待它结束才执行其他动作 |
| wait | 执行完sysinit | 只执行一次,init进程等待它结束才执行其他动作 |
| once | 执行完wait时 | 只执行一次,init进程不等待它结束 |
| respawn | 启动完once进程时 | 监测子进程退出时,重新启动它 |
| askfirst | 启动完respawn进程后 | 等待用户按下回车后启动 |
| shutdown | 当系统关机时 | 即重启关闭系统命令时 |
| restart | busybox中配置CONFIG_FEATURE_USE_INITTAB,并且init进程接收到SIGHUP信号时 | 先重新读取,解析/etc/inittab 文件,再执行restart程序 |
| ctrlaltdel | 按下ctrl+alt+del时 | - |
- process 要执行的程序,可执行程序或脚本。
如果字段前有“-”,则被称为“交互的”
本文深入探讨BusyBox的功能及其实现最小根文件系统的方法,详细解析BusyBox作为init进程在Linux系统启动过程中的作用,包括信号处理、控制台初始化、inittab配置解析及子进程管理策略。
1567

被折叠的 条评论
为什么被折叠?



