掌握這些,輕鬆管理BusyBox:inittab檔案的配置和作用解析

JobYan發表於2023-12-04

BusyBox 是一個輕量級的開源工具箱,其中包含了許多標準的 Unix 工具,例如 shlscpsedawkgrep 等,同時它也支援大多數關鍵的系統功能,例如自啟動、程式管理、啟動指令碼等等。而 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 系統。