ITEEDU

Linux系统学习基础

第一章 开发工具学习

第二章 Linux内核制作

第三章 initramfs制作

第四章 Linux系统制作原理

第五章 文件系统启动方式配制

busybox的缺省init模式

当系统没有/etc/inittab文件时,它有一套缺省的模式,按下面配置执行:

::sysinit:/etc/init.d/rcS 
::askfirst:/bin/sh 
::ctrlaltdel:/sbin/reboot 
::shutdown:/sbin/swapoff -a 
::shutdown:/bin/umount -a -r 
::restart:/sbin/init 

如果busybox检测到/dev/console不是串口控制台,init还要执行下面的动作:

tty2::askfirst:/bin/sh 
tty3::askfirst:/bin/sh 
tty4::askfirst:/bin/sh 

Busybox init启动过程分析

它的init进程主要进行以下工作:

  1. 为init进程设置信号处理进程
  2. 对控制台进行初始化
  3. 解析/etc/inittab
  4. 在默认情况下,Busybox会运行初始化脚本 /etc/init.d/rcS

当init进程对控制台进行初始化完成之后,Busybox会去检查/etc/inittab文件是否存在,如果存在,就会解析该文件并执行相应的运行级别.

Busybox支持的inittab格式如下所示:

id : runlevel : action : process

这里需要注意的一点是,Busybox所认识的/etc/inittab的格式尽管与Sys V init非常相似,但其中的操作域id具有不同的含义.

Busybox中的id用来指定启动的控制台,如果所启动的进程不是可以交互的Shell,就可以空着id的操作域不用去填写.

注意

不论Busybox是否能找到inittab文件, Busybox下的init进行执行的第一个脚本都是/etc/init.d/rcS, 而不是Sys V init结构下执行的脚本文件/etc/rc.d/rc.sysinit