Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 系統啟動流程深度解析:從 BIOS 到 init 完整路徑圖解

編輯:Linux 系統常見問題解答

按下電源鍵到出現登入提示,Linux 經歷了什麼?本文條理化拆解五大關鍵階段,並深入各階段核心機制,建立完整啟動心智模型。

啟動總覽路徑

BIOS (POST) → MBR (GRUB Stage1) → GRUB Stage1.5/Stage2 → Kernel → initrd/initramfs → /sbin/init → 服務啟動 → 登入

階段一:BIOS - 基礎硬體自檢與啟動裝置選擇

  • POST (Power-On Self-Test):CPU、記憶體、顯卡、鍵盤等關鍵硬體自檢,失敗鳴響蜂鳴器代碼
  • 依 CMOS 設定的 Boot Sequence 尋找可啟動裝置(硬碟、USB、光碟、網路)
  • 讀取啟動裝置首扇區(MBR)前 446 Bytes 至記憶體 0x7C00,跳轉執行

階段二:MBR 與 GRUB 多階段載入器

MBR 結構(512 Bytes):

  • 前 446 Bytes:Bootloader (GRUB Stage1)
  • 中 64 Bytes:分區表(4×16 Bytes)
  • 後 2 Bytes:魔數 0x55AA

GRUB 三階段架構:

階段位置功能
Stage1MBR 446 Bytes極小,僅載入 Stage1.5 或 Stage2
Stage1.5/boot/grub/*_stage1_5檔案系統驅動(ext2/3/4、xfs、fat、reiserfs 等),讓 GRUB 能讀取 /boot 內容
Stage2/boot/grub/stage2核心邏輯:讀取 grub.conf、呈現選單、載入 Kernel/initrd

grub.conf 關鍵設定:root (hd0,0)、kernel /vmlinuz-... ro root=/dev/sda2、initrd /initrd-...

階段三:Kernel 初始化

  • GRUB 將 Kernel 載入記憶體,交出控制權
  • Kernel 初始化:CPU、記憶體管理、中斷處理、裝置驅動模組載入
  • 掛載 initrd/initramfs 作為臨時根檔案系統

階段四:initrd / initramfs - 破解「雞生蛋、蛋生雞」困境

問題:Kernel 無內建所有檔案系統/磁碟驅動,但驅動模組存放在根檔案系統中 → 無法掛載根分區載入驅動。

解法:

  • initrd (舊):gz 壓縮的極小根檔案系統映像檔,含 /linuxrc 腳本,載入必要驅動模組,找到真實根裝置後寫入 /proc/sys/kernel/real-root-dev,切換根檔案系統
  • initramfs (新,Linux 2.5+):cpio.gz 格式,含 /init 程式(PID=1),直接掛載真實根分區並 exec 切換至 /sbin/init,流程更簡化、啟動更快

階段五:init - 使用者空間第一支程式 (PID=1)

三代演進:

SysVinit 流程:init → inittab → rc.sysinit → rc N → rc.local → mingetty → X11/prefdm

  • rc.sysinit:啟用 udev/SELinux、載入 sysctl、設定時區/主機名、掛載檔案系統、啟用 swap/RAID/LVM/quota
  • rc N:依運行等級執行 /etc/rc.d/rcN.d/S* 啟動腳本

驗證與除錯工具

  • dmesg / journalctl -b:查看 Kernel/啟動日誌
  • systemd-analyze / systemd-analyze blame:分析啟動耗時
  • grub2-editenv list / grubby:檢視 GRUB 設定

掌握啟動流程,不僅能理解系統運作本質,更能在單人模式修復、開機卡住、Kernel panic 等場景精準定位問題根因。

Copyright © Windows教程網 All Rights Reserved
代系代表特徵
SysVinit傳統/etc/inittab 定義運行等級、rc.sysinit、rc 腳本串聯服務,循序啟動慢
UpstartUbuntu 早期事件驅動、平行啟動,配置分散在 /etc/init/*.conf
systemd現代主流單元檔、依賴圖、平行啟動、Socket/Timer 啟動、systemctl 管理