Linux 發行版主要分為兩派啟動風格:System V (SysV) 與 BSD。Slackware 堅持 BSD 風格,Red Hat、Debian、Ubuntu 等主流發行版採用 SysV。兩者皆為可讀的 Shell 腳本,核心差異在於「如何組織啟動流程」。
start/stop/restart 等參數 (如 /etc/init.d/bind start)。/etc/rc.d/rc3.d/S10network、K25bind 等。/etc/rc.d/rc.4 為檔案而非目錄)。/usr/local/bin/zzzz),調整順序即移動程式碼行,極為直觀。service xxx stop),停止背景服務需手動 kill PID。| 維度 | SysV | BSD |
|---|---|---|
| 代表發行版 | RHEL, CentOS, Debian, Ubuntu, Fedora | Slackware, *BSD 系統 |
| 服務控制 | service/systemctl (現代) | 手動腳本/手動 kill |
| 啟動組織 | rcX.d 目錄 + 符號連結編號 | rc.X 檔案線性腳本 |
| 新增服務複雜度 | 高 (寫腳本 + 多目錄建連結 + 編號) | 低 (編輯單一腳本檔) |
| 臨時停用服務 | 刪除所有 rcX.d 中對應連結 | 註解 rc.X 中對應行 |
| 依賴管理 | 透過編號隱含序列依賴 | 腳本撰寫順序隱含依賴 |
兩者切換並不困難:複製 inittab 與 rc 腳本即可,init 程式本身未變,「風格」僅在配置層面。現代 Slackware 為相容商業軟體,提供 rc.sysvinit;眾多 BSD 風格腳本 (如 rc.sendmail) 也開始接受 start/stop/restart 參數。Systemd 時代來臨後,兩派傳統風格逐漸被統一的單元檔取代,但理解其設計哲學仍有助於掌握 Linux 啟動本質。