天天看點

嵌入式linux的啟動過程,嵌入式Linux啟動過程

在嵌入式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

運作程序等待輸入運作模式