1、/sbin/init 是 /bin/busybox的符号链接,所以busybox是目标板上执行的第一个应用程序。
2、当busybox知道调用它的目的是init,它会立即跳转到init进程
3、busybox 的init 进程会依次执行以下工作:
a) 为init设置信号处理进程
b) 初始化控制台
c) 剖析inittab文件、/etc/inittab文件
d) 执行系统初始化命令。busybox在缺省情况下会使用/etc/init.d/rcS命令行。
e) 执行所有会导致init暂停的inittab命令(动作类型:wait)
f) 执行所有仅执行一次的inittab命令(动作类型:once)
一旦完成以上工作:init进程便会循环执行以下工作:
g) init进程便会从新启动Inittab命令(动作类型:respawn)
h) 执行所有终止时必须重启但启动前必须先询问用户的inittab命令(动作类型:askfirst)
在控制台初始化器件,busybox会判断系统是否被设置成在串行端口上执行控制台(console=ttyS0作为内核引导参数)
控制台初始化之后,busybox会检查/etc/inittab文件是否存在,如果此文件不存在,busybox会使用缺省的inittab配置。它主要为系统引导,系统挂起以及init重启动设置缺省的动作。如果存在则busybox会自动剖析/etc/inittab文件
4、/etc/inittab 文件格式
inittab文件中每一行的格式如下:
id:runlevel:action:process
id:用来指定所启动进程的控制tty;如果启动的进程并不是一个可以交互的shell,这个字段可以空,可以交互的shell,应该会有一个控制tty
runlevel: busybox会忽略此字段,可以不填
process:用来指明程序的路径
action字段用来表示应用到process的动作,该字段有:
sysinit :为init提供初始化命令行的路径
respwn:每当相应的进程终止执行便从新启动
askfirst:
wait:
once:
ctrlaltdel:按下组合件ctrl+alt+del执行相应的进程
shutdown:系统关机执行相应的程序
restart:init从新启动时,执行相应的进程
简单的模板:
::sysinit:/etc/init.d/rcS /*设置系统初始化文件*/
::respawn:/sbin/getty 115200 ttyS0 /*在115200bps 的串行端口启动一个登陆会话*/
::respawn:/control-module/bin/init /*控制模块初始化命令行*/
::restart:/sbin/init
::shutdown:/bin/umount -a -r
/*控制模块初始化命令行具体内容*/
#!/bin/sh
#以读写模式从新安装(挂载)根文件系统(需要 /etc/fstab)
mount -n -o remount,rw /
#挂载/proc文件系统
mount /proc
#启动网络接口
/sbin/ifconfig eth0 192.168.1.12
5、