按下電源鍵到登入提示符,Linux 經歷五大關鍵階段。理解啟動流程是排查開機故障、客製化啟動、安全加固的前提。
EFI/BOOT/BOOTX64.EFI 或發佈商目錄| 項目 | MBR (Legacy BIOS) | GPT (UEFI) |
|---|---|---|
| 位置 | 磁碟第 0 扇區 (512B) | ESP 分區 (FAT32, 通常 100-512MB) |
| 內容 | 446B 開機碼 + 64B 分區表 | .efi 應用程式 (grubx64.efi, shimx64.efi) |
| 啟動載入器 | GRUB Stage 1 → 1.5 → 2 | GRUB2 / systemd-boot / rEFInd |
# /boot/grub2/grub.cfg (由 grub2-mkconfig 產生)
menuentry 'CentOS Linux' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
search --no-floppy --fs-uuid --set=root UUID-xxxx
linux /vmlinuz-4.18.0 root=/dev/mapper/cl-root ro crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet
initrd /initramfs-4.18.0.img
}
linux 行:指定核心檔案、根裝置、核心參數initrd:初始 RAM 檔案系統,含啟動必需驅動 (LVM、RAID、加密、檔案系統)switch_root 切換至真實 //sbin/init (systemd, PID 1)# systemd 目標單元依賴鏈
default.target → graphical.target / multi-user.target
└─ basic.target
├─ sysinit.target (核心級服務: journald, udev, tmpfiles, swap, fsck)
│ └─ local-fs.target (掛載 /etc/fstab 定義的本地檔案系統)
└─ sockets.target, timers.target, paths.target
# 關鍵腳本 (相容 SysV)
/etc/rc.d/rc.sysinit → /etc/rc.d/rc
| 路徑 | 用途 |
|---|---|
/boot/grub2/grub.cfg | GRUB 選單配置 (勿手動編輯) |
/etc/default/grub | GRUB 參數來源 (修改後執行 grub2-mkconfig) |
/etc/fstab | 檔案系統掛載表 |
/etc/sysconfig/kernel | 核心安裝更新策略 |
/usr/lib/systemd/system/ | 系統服務單元檔 |
/etc/systemd/system/ | 管理員覆蓋/自訂單元 |
grub> set root=(hd0,1) grub> linux /vmlinuz... root=/dev/sda2 grub> initrd /initramfs... grub> bootsystemd.log_level=debug rd.break init=/bin/bashsystemd-analyze blame systemd-analyze critical-chainjournalctl -b journalctl -b -1 (上次啟動)掌握五階段流程,開機故障不再無從下手,客製化啟動、安全加固、效能優化皆有據可依。