開機流程全景圖
通電 → BIOS/UEFI POST → 啟動順序 → 啟動載入器 (GRUB2) → 核心載入 → initramfs → 根檔案系統掛載 → init (PID 1) → 服務啟動 → 登入提示
階段一:韌體初始化 (BIOS vs UEFI)
| 特性 | 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 讀取 /boot | UEFI 直接載入 EFI 應用 (grubx64.efi / shimx64.efi) |
| 安全啟動 | 無 | Secure Boot (簽名驗證) |
階段二:GRUB 2 多階段載入
- stage1 (boot.img):MBR/ESP 446 bytes,唯一任務載入 core.img
- core.img:含檔案系統驅動 (ext2/xfs/btrfs/zfs)、LVM/RAID/加密模組,讀取
/boot/grub/grub.cfg
- grub.cfg:菜單配置,由
grub2-mkconfig -o /boot/grub/grub.cfg 根據 /etc/default/grub、/etc/grub.d/ 腳本生成
- 選單選擇核心 → 載入
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 關機序列
systemctl poweroff/reboot/halt 觸發
- 發送
SIGTERM 給所有進程 (預設 90 秒)
- 超時後發送
SIGKILL 強制終止
- 停止所有服務單元 (反向依賴順序)
- 卸載所有檔案系統 (唯讀重掛載根分區)
- 關閉 swap、RAID、LVM、加密映射
- 同步磁碟快取
sync
- 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 秒強制斷電 — 最後手段,檔案系統可能損壞
常見開機故障排查
| 現象 | 可能原因 | 排查入口 |
| GRUB 救援模式 | grub.cfg 損壞、UUID 變更、核心遺失 | Live CD → chroot → grub2-install + grub2-mkconfig |
| Kernel panic - not syncing: VFS | initramfs 缺驅動、root= 錯誤、檔案系統損壞 | 重建 initramfs (dracut/mkinitcpio)、檢查 root 參數 |
| Emergency mode | /etc/fstab 錯誤、磁碟故障、SELinux 標籤錯 | journalctl -xb、fsck、autorelabel |
| 服務啟動失敗 | 依賴未就緒、配置錯誤、埠口衝突 | systemctl status xxx、journalctl -u xxx |
結語
理解開機鏈路每一環,才能在災難發生時從容恢復。現代 Linux 以 systemd 統一服務管理、以 UEFI+Secure Boot 強化啟動信任鏈、以 initramfs 模組化適配多樣硬體。掌握 dmesg、journalctl、grub2-mkconfig、dracut、systemctl 五大工具,掌握系統生命週期的主導權。
copyright ©
萬盛學電腦網 all rights reserved