在嵌入式Linux中,系統上電後,首先運作u-boot,u-boot引導核心啟動
在核心初始化完成後,嵌入式linux 檔案系統的啟動過程主要包含以下幾個步驟:
1. 核心執行/sbin/init 檔案,init程序開始運作
2. init程序分析并執行/etc/inittab 檔案
3. init程序根據inittab檔案執行/etc/init.d/rcS 檔案
3.1/etc/init.d/rcS 執行
/etc/init.d/rcS.d/S*目錄下的相關檔案
4.init程序根據inittab檔案中的runleve執行/etc/init.d/rc0.d到rc6.d目錄中的一個目錄中的檔案
說明1:inittab檔案内容
#設定預設的運作級别
id:5:initdefault:
#系統開機需要運作的第一個腳本
si::sysinit:/etc/init.d/rcS
# 運作級
#0 挂起系統,6 重新開機,1 單使用者模式,2-5多使用者模式
I0:0:wait:/etc/init.d/rc 0
I1:1:wait:/etc/init.d/rc 1
I2:2:wait:/etc/init.d/rc 2
I3:3:wait:/etc/init.d/rc 3
I4:4:wait:/etc/init.d/rc 4
I5:5:wait:/etc/init.d/rc 5
I6:6:wait:/etc/init.d/rc 6
上述格式如下(參考https://blog.csdn.net/pengrui18/article/details/49757451):
label:runlevel:action:process
action字段定義了該程序應該運作在何種狀态下
boot
在系統啟動時運作,忽略runlevel
bootwait
在系統啟動時運作,等待init程序完成。忽略runlevel
ctrlaltdel 當Ctrl+Alt+Del三個鍵同時按下時運作,把SIGINT信号發送給init。忽略runlevel
initdefault 不要執行這個程序,它用于設定預設runlevel
kbrequest
當init從鍵盤中收到信号時運作。這裡要求鍵盤組合符合KeyBoardSigral(參見/usr/share/doc/kbd-*關于鍵盤組合的文檔)
off
禁止進入,是以該程序不運作
once
每一個runlevel級别運作一次
ondemand
當系統指定特定的運作級别A、B、C時運作
powerfail 當init收到SIGPWR信号時運作
powerokwait 當收到SIGPWD信号且/etc/檔案中的電源狀态包含OK時運作
powerwait 當收到SIGPWD信号,并且init等待程序結束時運作
respawn
不管何時終止都重新啟動程序
sysinit
在運作boot或bootwait程序之前運作
wait
運作程序等待輸入運作模式