萬盛學電腦網

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

Linux 開機啟動流程五大階段詳解:BIOS → MBR → GRUB → Kernel → systemd

按下電源鍵到登入提示符,Linux 經歷五大關鍵階段。理解啟動流程是排查開機故障、客製化啟動、安全加固的前提。

五大階段總覽

  1. BIOS/UEFI POST:硬體自檢、選擇啟動裝置
  2. MBR/GPT + Bootloader:載入 GRUB (Stage 1/1.5/2)
  3. GRUB 選單與核心載入:選擇核心、載入 initramfs、傳遞參數
  4. 核心初始化:硬體偵測、驅動載入、掛載根檔案系統、啟動 init
  5. 用戶空間初始化:systemd 接管、並行啟動服務、進入目標單元

Linux 開機流程圖

階段一:BIOS/UEFI POST (Power-On Self Test)

  • 檢測 CPU、記憶體、磁碟、顯示卡、鍵盤等
  • 依 CMOS 設定順序尋找可啟動裝置 (USB、光碟、硬碟、PXE)
  • UEFI:讀取 ESP 分區 (FAT32) 的 EFI/BOOT/BOOTX64.EFI 或發佈商目錄

階段二:MBR/GPT 與 Bootloader

項目MBR (Legacy BIOS)GPT (UEFI)
位置磁碟第 0 扇區 (512B)ESP 分區 (FAT32, 通常 100-512MB)
內容446B 開機碼 + 64B 分區表.efi 應用程式 (grubx64.efi, shimx64.efi)
啟動載入器GRUB Stage 1 → 1.5 → 2GRUB2 / systemd-boot / rEFInd

階段三:GRUB 核心載入

# /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、加密、檔案系統)
  • GRUB 將核心 + initramfs 載入記憶體,跳轉至核心入口

階段四:核心初始化 (Kernel Init)

  1. 硬體偵測:CPU、記憶體、PCI/USB 裝置、區塊裝置
  2. 解壓縮核心:自解壓 (vmlinuz → 記憶體)
  3. 載入核心模組:initramfs 中的驅動 (scsi_mod, ext4, dm-mod...)
  4. 初始化虛擬檔案系統:procfs, sysfs, devtmpfs, tmpfs
  5. 掛載真實根檔案系統:switch_root 切換至真實 /
  6. 啟動第一個用戶空間進程:/sbin/init (systemd, PID 1)
  7. 階段五:systemd 用戶空間初始化

    # 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.cfgGRUB 選單配置 (勿手動編輯)
    /etc/default/grubGRUB 參數來源 (修改後執行 grub2-mkconfig)
    /etc/fstab檔案系統掛載表
    /etc/sysconfig/kernel核心安裝更新策略
    /usr/lib/systemd/system/系統服務單元檔
    /etc/systemd/system/管理員覆蓋/自訂單元

    常見故障排查入口

    • GRUB 救援模式:grub> set root=(hd0,1) grub> linux /vmlinuz... root=/dev/sda2 grub> initrd /initramfs... grub> boot
    • 核心參數除錯:GRUB 編輯模式 (e) 加 systemd.log_level=debug rd.break init=/bin/bash
    • systemd 分析:systemd-analyze blame systemd-analyze critical-chain
    • 啟動日誌:journalctl -b journalctl -b -1 (上次啟動)

    掌握五階段流程,開機故障不再無從下手,客製化啟動、安全加固、效能優化皆有據可依。

copyright © 萬盛學電腦網 all rights reserved