萬盛學電腦網

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

Linux 開機與關機流程深度解析:BIOS/UEFI、GRUB、init、systemd 全鏈路

開機流程全景圖

通電 → BIOS/UEFI POST → 啟動順序 → 啟動載入器 (GRUB2) → 核心載入 → initramfs → 根檔案系統掛載 → init (PID 1) → 服務啟動 → 登入提示

階段一:韌體初始化 (BIOS vs UEFI)

階段二:GRUB 2 多階段載入

  1. stage1 (boot.img):MBR/ESP 446 bytes,唯一任務載入 core.img
  2. core.img:含檔案系統驅動 (ext2/xfs/btrfs/zfs)、LVM/RAID/加密模組,讀取 /boot/grub/grub.cfg
  3. grub.cfg:菜單配置,由 grub2-mkconfig -o /boot/grub/grub.cfg 根據 /etc/default/grub、/etc/grub.d/ 腳本生成
  4. 選單選擇核心 → 載入 vmlinuz + initramfs → 傳遞核心參數 (root=UUID=... ro quiet)

階段三:核心初始化

  • 解壓核心映像 (自解壓頭部)
  • 硬體偵測:CPU、記憶體、PCI/USB/磁碟/網卡,輸出 dmesg 訊息
  • 初始化子系統:記憶體管理、程序調度、VFS、驅動模型
  • 載入 initramfs (initrd) 至記憶體,掛載為暫時根檔案系統
  • initramfs 任務:載入根裝置驅動 (SCSI/NVMe/RAID/LVM/加密)、解密 LUKS、組裝 RAID、啟用 LVM、掛載真實根檔案系統 switch_root

階段四:init 系統 (PID 1)

Systemd (現代標準)

  • 並行啟動、Socket/D-Bus 激活、依賴追蹤、Cgroups 資源控制、日誌整合 (journald)
  • 目標單元:default.target (通常 graphical.target 或 multi-user.target)
  • 關鍵單元:systemd-udevd、systemd-journald、sysinit.target、basic.target

SysVinit (傳統)

  • /etc/inittab 定義 runlevel (0-6)
  • /etc/rc.d/rcN.d/S##name 啟動腳本、K##name 停止腳本
  • 串行啟動、無依賴追蹤、難以並行

關機/重啟流程:優雅收尾的藝術

Systemd 關機序列

  1. systemctl poweroff/reboot/halt 觸發
  2. 發送 SIGTERM 給所有進程 (預設 90 秒)
  3. 超時後發送 SIGKILL 強制終止
  4. 停止所有服務單元 (反向依賴順序)
  5. 卸載所有檔案系統 (唯讀重掛載根分區)
  6. 關閉 swap、RAID、LVM、加密映射
  7. 同步磁碟快取 sync
  8. ACPI 關機 / 重啟指令

關鍵指令

shutdown -h now           # 立即關機
shutdown -r +10 "維護"     # 10 分鐘後重啟,廣播
shutdown -c               # 取消排程
systemctl poweroff        # 等同 shutdown -h now
systemctl reboot
systemctl halt            # 停止 CPU 但不斷電 (需手動斷電)
telinit 0 / telinit 6     # SysVinit 相容

緊急情況

  • Magic SysRq:Alt+SysRq+R E I S U B (Raw, tErminIt, kIll, Sync, Unmount, reBoot) — 核心仍響應時的最後手段
  • 長按電源鍵 5 秒強制斷電 — 最後手段,檔案系統可能損壞

常見開機故障排查

特性BIOS (Legacy)UEFI
分區表MBR (4 主分區、2TB 限制)GPT (128+ 分區、ZB 級)
啟動載入器位置MBR 446 bytes + /boot 分區EFI 系統分區 (ESP, FAT32) /EFI/BOOT/BOOTX64.EFI
核心載入GRUB Stage 1.5/2 讀取 /bootUEFI 直接載入 EFI 應用 (grubx64.efi / shimx64.efi)
安全啟動無Secure Boot (簽名驗證)

結語

理解開機鏈路每一環,才能在災難發生時從容恢復。現代 Linux 以 systemd 統一服務管理、以 UEFI+Secure Boot 強化啟動信任鏈、以 initramfs 模組化適配多樣硬體。掌握 dmesg、journalctl、grub2-mkconfig、dracut、systemctl 五大工具,掌握系統生命週期的主導權。

copyright © 萬盛學電腦網 all rights reserved
現象可能原因排查入口
GRUB 救援模式grub.cfg 損壞、UUID 變更、核心遺失Live CD → chroot → grub2-install + grub2-mkconfig
Kernel panic - not syncing: VFSinitramfs 缺驅動、root= 錯誤、檔案系統損壞重建 initramfs (dracut/mkinitcpio)、檢查 root 參數
Emergency mode/etc/fstab 錯誤、磁碟故障、SELinux 標籤錯journalctl -xb、fsck、autorelabel
服務啟動失敗依賴未就緒、配置錯誤、埠口衝突systemctl status xxx、journalctl -u xxx