萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 啟動流程與關鍵設定檔詳細解析 (Red Hat vs Ubuntu 差異)

不同 Linux 發行版啟動流程涉及的設定檔路徑與機制各異,易造成混淆。本文系統整理 Red Hat 與 Ubuntu 兩大主流發行版的啟動關鍵設定檔對照,並深入解析 Ubuntu 下 init 進程與 rc*.d 目錄運作機制。

Red Hat 系列關鍵設定檔

  • /etc/inittab:init 進程核心設定
  • /etc/rc.d/rc.sysinit:系統初始化腳本
  • /etc/rc.d/rcX.d/:各執行等級 (runlevel) 服務啟動/停止符號連結目錄 (X=0-6)
  • /etc/rc.d/init.d/:實際守護進程腳本存放處
  • /etc/rc.d/rc.local:用戶自訂啟動腳本

Ubuntu 系列關鍵設定檔

  • /etc/inittab:部分版本可能無此檔 (Upstart/Systemd 取代)
  • /etc/rcS.d/:系統啟動階段服務符號連結 (S 開頭啟動、K 開頭停止)
  • /etc/rcX.d/:各執行等級服務目錄 (X=0-6)
  • /etc/init.d/:實際服務啟動腳本
  • /etc/rc.local:用戶自訂啟動腳本

Ubuntu 啟動流程核心邏輯

  1. init 讀取 inittab (若存在)
  2. 執行 rcS.d/ 所有服務 (S* 啟動、K* 停止,依序號排序)
  3. 確定預設執行等級 (initdefault)
  4. 依序處理對應 rcX.d/ 目錄下服務 (先停止 K*,再啟動 S*)

符號連結命名規則

rcS.d/、rcX.d/ 下檔案皆為 init.d/ 實際腳本的符號連結:

  • S + 兩位數序號 + 服務名: 啟動腳本 (數字越小越早執行)
  • K + 兩位數序號 + 服務名: 停止腳本

三個核心腳本關係

  • /etc/init.d/rc:主控腳本,接收參數決定執行哪個 rc*.d 目錄 (如 rc S 執行 rcS.d/,rc 5 執行 rc5.d/)
  • /etc/init.d/rc.local:根據標誌執行/停止 /etc/rc.local (預設僅含 exit 0,可加入自訂啟動程式)
  • /etc/init.d/rcS:啟動 rcS.d/ 所有服務,實際執行 exec /etc/init.d/rc S

現代趨勢:Systemd

Ubuntu 15.04+、RHEL 7+、CentOS 7+、Debian 8+ 已全面遷移至 Systemd,舊式 SysV init 流程逐漸淡出,但理解傳統機制仍有助於維護舊系統與理解服務管理本質。

copyright © 萬盛學電腦網 all rights reserved