Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統啟動流程與初始化深度剖析(BIOS → GRUB → Kernel → init)

編輯:Linux 教學

整體啟動流程概覽

  1. POST(Power-On Self-Test)加電自檢
  2. BIOS/UEFI 初始化硬體、選擇啟動裝置
  3. MBR/GPT 讀取 Bootloader(GRUB)
  4. GRUB 載入 Kernel 與 initramfs/initrd
  5. Kernel 初始化硬體、掛載根檔案系統
  6. initramfs/initrd 提供臨時根環境、載入必要驅動
  7. /sbin/init (PID 1) 啟動用戶空間服務(Systemd/SysVinit)

階段一:POST 與 BIOS/UEFI

  • POST:CPU、記憶體、主機板、顯卡、儲存裝置等硬體自檢。嚴重錯誤直接停機(無畫面、蜂鳴器報警);非嚴重錯誤顯示提示等待處理。
  • BIOS/UEFI:讀取 CMOS 設定(啟動順序、硬體參數、時間等),依序嘗試啟動裝置(硬碟、USB、PXE 等)。

階段二:MBR 與 GRUB

MBR(Master Boot Record)

  • 位於啟動磁碟第 0 磁區前 446 Bytes,存放 GRUB Stage 1 代碼。
  • Stage 1 體積極小,僅負責定位並載入 Stage 1.5 或 Stage 2。

GRUB 多階段載入

  1. Stage 1:MBR 代碼,跳轉到 Stage 1.5 或 Stage 2。
  2. Stage 1.5(可選):位於 MBR 後的間隙,包含檔案系統驅動(ext2/3/4、xfs、btrfs 等),能讀取 /boot/grub/ 目錄。
  3. Stage 2:核心模組,位於 /boot/grub2/(GRUB2)或 /boot/grub/(GRUB Legacy),載入 grub.cfg 選單、模組、主題等。

關鍵檔案: /boot/grub2/grub.cfg(由 grub2-mkconfig 依 /etc/default/grub 及 /etc/grub.d/ 腳本生成)。

階段三:Kernel 初始化

  1. 解壓縮 Kernel 映像(vmlinuz-*)至記憶體。
  2. 初始化硬體子系統:CPU、記憶體管理、中斷、時鐘、PCI、USB、網路、區塊裝置等。
  3. 載入 initramfs/initrd(壓縮的 cpio 歸檔)至記憶體,掛載為臨時根檔案系統(/)。
  4. 執行 /init(initramfs 內的啟動腳本):
    • 載入根檔案系統所需驅動(RAID、LVM、加密、檔案系統模組)。
    • 掛載真正的根檔案系統(root=UUID=... 或 root=/dev/sda2)至 /sysroot。
    • 執行 switch_root 切換根環境,啟動 /sbin/init。

為何需要 initramfs? 解決「雞生蛋、蛋生雞」:Kernel 需驅動才能讀取根分區,但驅動在根分區上。initramfs 提供最小環境載入驅動並掛載真根。

階段四:init (PID 1) 與用戶空間啟動

Systemd(現代主流)

  • 並行啟動服務,依賴關係由 Unit 檔描述(.service, .target, .socket 等)。
  • 預設目標 default.target 通常指向 graphical.target 或 multi-user.target。
  • 關鍵指令:systemctl, journalctl, systemd-analyze。

SysVinit(傳統)

  • 讀取 /etc/inittab 獲取預設運行級別(id:3:initdefault:)。
  • 依序執行 /etc/rc.d/rc*.d/ 下的 S* 啟動腳本、K* 停止腳本。
  • 服務管理:service, chkconfig。

/boot 目錄關鍵檔案清單

檔案/目錄說明
vmlinuz-*壓縮 Kernel 映像
initramfs-*.img / initrd-*初始臨時根檔案系統
grub2/ 或 grub/GRUB 配置、模組、主題
System.map-*Kernel 符號表(除錯用)
config-*Kernel 編譯配置選項

常見啟動故障與排查入口

  • GRUB 選單不見/損壞:LiveCD 掛載根分區,grub2-install /dev/sdX 重裝;grub2-mkconfig -o /boot/grub2/grub.cfg 重建配置。
  • Kernel panic - not syncing: VFS: Unable to mount root fs:initramfs 缺少驅動、root= 參數錯誤、根分區損壞。重建 initramfs:dracut -f 或 mkinitrd。
  • 進入 emergency mode:/etc/fstab 掛載項錯誤、磁碟故障。檢查 journalctl -xb、修正 fstab 或 fsck。
  • 服務啟動失敗:systemctl status 、journalctl -u 查看詳情。

總結

Linux 啟動是「硬體 → 固件 → Bootloader → Kernel → 臨時根 → 真根 → PID 1 → 服務」的層層遞進。理解各階段職責、關鍵檔案與常見故障點,是系統管理員排查開機問題、優化啟動速度、構建安全啟動鏈的基石。

Copyright © Windows教程網 All Rights Reserved