/etc/inittab 是 SysVinit 系統的核心配置文件,定義了運行級別、系統初始化腳本、終端啟動、關機重啟動作等。本文詳細解析每欄含義、運行級別定義、action 類型及典型配置示例。
文件格式
id:runlevels:action:process [arguments]
| 欄位 | 說明 |
id | 標識符,2-4 字符,唯一 |
runlevels | 生效的運行級別集合(如 123、2345) |
action | 動作類型(詳見下表) |
process | 執行的命令及參數 |
運行級別定義
| 級別 | 名稱 | 說明 |
| 0 | Halt | 關機 |
| 1 / S / s | Single | 單用戶維護模式 |
| 2 | Multi-user | 無網絡多用戶 |
| 3 | Multi-user + Net | 完整多用戶(文本界面) |
| 4 | User defined | 預留自定義 |
| 5 | X11 | 圖形界面多用戶 |
| 6 | Reboot | 重啟 |
| a,b,c | OnDemand | 按需啟動,不切換級別 |
Action 類型詳解
| Action | 行為 |
initdefault | 設置默認運行級別,process 被忽略 |
sysinit | 系統啟動最先執行,優先於 boot/bootwait |
boot | 啟動過程執行,忽略運行級別 |
bootwait | 啟動過程執行,等待結束 |
wait | 進入指定級別執行一次,init 等待結束 |
once | 進入指定級別執行一次,init 不等待 |
respawn | 進程退出自動重啟(如 getty、login) |
off | 不執行,等同註釋 |
ondemand | 當調用 a/b/c 級別時執行 |
ctrlaltdel | 捕獲 Ctrl+Alt+Del 組合鍵 |
powerfail/powerwait/powerokwait | 電源故障/恢復相關 |
kbrequest | 鍵盤特殊組合鍵觸發 |
典型配置示例
# 默認運行級別 3(文本多用戶)
id:3:initdefault:
# 系統初始化:掛載文件系統、啟動交換分區、設置主機名等
si::sysinit:/etc/rc.d/init.d/rc sysinit
# 各運行級別對應的 rc 腳本
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
# Ctrl+Alt+Del 重啟
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
# 單用戶模式要求密碼(增強安全性)
su:S016:once:/sbin/sulogin
# 6 個虛擬終端(tty1-tty6),X 通常佔用 tty7
1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600
2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600
3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600
4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600
5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600
6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600
關鍵點
rc 腳本通常調用 /etc/rc.d/rc[0-6].d/ 下的 S*(啟動)和 K*(停止)腳本
respawn 確保關鍵服務(getty、重要守護進程)持續運行
sulogin 在單用戶模式強制驗證密碼,防止物理接觸繞過認證
- 修改後無需重啟,
init q 或 telinit q 重讀配置
systemd 時代的變化
現代發行版(RHEL 7+、Ubuntu 15.04+、Debian 8+)已遷移至 systemd,/etc/inittab 不再使用。systemd 通過 target(multi-user.target、graphical.target)替代運行級別,服務由 .service 單元管理。但理解 inittab 有助於維護舊系統及理解啟動邏輯演進。