BusyBox 是一個輕量級的開源工具箱,其中包含了許多標準的 Unix 工具,例如 sh
、ls
、cp
、sed
、awk
、grep
等,同時它也支援大多數關鍵的系統功能,例如自啟動、程式管理、啟動指令碼等等。而 inittab
檔案則是 BusyBox 中的一個重要檔案,掌握了 inittab
檔案的作用及如何配置有助於更好地管理 BusyBox 系統。
BusyBox 啟動過程
在瞭解 inittab
檔案的相關內容前,我們先來了解 BusyBox 在啟動時的過程。
當我們啟動 BusyBox 時,系統會首先進入核心態,這個過程經常稱為“引導 boot 過程”。在引導過程中,在系統載入時會先執行一些基本的硬體和核心配置、並在檔案系統下搜尋可引導的映象和錯誤修復等等。接下來,系統會呼叫 init
程式來完成系統初始化。
init
是一個非常基礎的程式,其主要功能是負責從系統引導之後啟動一些必要的程式,以便讓系統進入可用狀態。在 BusyBox 中,init
程式基於編譯時確定的 執行級別(也稱為系統執行級別)來啟動其他應用程式。BusyBox支援多達7個執行級別,包括:
- 執行級別 0:關閉(或關機)系統
- 執行級別 1:單使用者模式
- 執行級別 2-5:多使用者模式
- 執行級別 6:重啟系統
當 init
程式啟動時,它首先會獲取使用者指定的執行級別或者會預設地進入執行級別 5(圖形模式)。接下來,我們將透過 inittab
檔案來配置在不同執行級別下所需啟動的程式和服務等。
inittab 檔案在啟動過程中起到的作用
inittab
檔案位於 /etc/inittab
或 /etc/rc.d/inittab
路徑下,可以認為是系統中的一個配置檔案,其中定義了在不同執行級別下需要執行的程式。在 BusyBox 系統中,inittab
檔案的作用是告知 init
程式在不同的執行級別下要執行哪些操作。它能確定在不同的執行級別下,系統應該以何種方式啟動不同的程式和服務等。根據 inittab
檔案中的配置,init 程式將啟動不同的程式,以完成透過 inittab
檔案定義的啟動順序。
inittab
檔案由以下四個欄位組成:
id:runlevels:action:process
id
欄位:表示程式的唯一識別符號。runlevels
欄位:表示程式可以在哪些執行級別下執行。action
欄位:表示程式在進入該執行級別後要執行的操作,比如啟動程式等。process
欄位:表示要啟動的程式或要執行的命令。
舉例說明:
::sysinit:/etc/init.d/rcS
::shutdown:/sbin/swapoff -a
::ctrlaltdel:/sbin/reboot
::respawn:/sbin/getty 38400 tty1
在上面的示例中,::sysinit
表示該命令在所有的執行級別下執行,::ctrlaltdel
表示該命令在按下 Ctrl+Alt+Del
時執行,::shutdown
表示該命令在系統關閉時執行,::respawn
表示該命令在程式崩潰後重啟。
使用這些特定符號,inittab
檔案定義了在哪個執行級別下會執行哪些操作,並對系統啟動過程進行了管理。
總結
透過對 inittab
檔案的介紹,BusBox 的啟動過程與 init
程式的作用可以更加深入的瞭解。透過配置 inittab
檔案,我們可以控制哪些程式和服務在不同的執行級別下啟動,並以何種方式啟動和管理這些程式。當然,我們也可以透過配置 init.d
資料夾來管理並啟動其他程式和服務。同時,瞭解這些知識還可以幫助我們更好地管理和維護 BusyBox 系統。