Busybox ---------- init進程解析
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、