啟動流程五階段
- BIOS/UEFI POST:硬體自檢,讀取啟動裝置 MBR (Legacy) 或 EFI 分區 (UEFI)。
- Bootloader (GRUB):
MBR 階段 1 → 階段 1.5 (文件系統驅動) → 階段 2 (載入選單、核心參數)。
配置檔:/boot/grub/grub.conf (符號連結 /etc/grub.conf)。
- initramfs (initrd):
GRUB 載入 initramfs.img 到記憶體,掛載為根文件系統。
包含核心模組 (驅動)、init 腳本、必要工具 (lvm, cryptsetup, mdadm)。
核心掛載真實根分區 (唯讀) → 切換根目錄 (switch_root) → 執行 /sbin/init。
- Kernel 初始化:
硬體偵測、驅動載入、掛載根分區 (讀寫)、啟動第一個用戶空間進程 init (PID 1)。
- Init 系統 (Systemd/SysVinit/Upstart):
依相依關係啟動服務、掛載檔案系統、啟動登入提示/圖形介面。
GRUB 關鍵配置
- 設定開機密碼:在
title 下添加 password --md5 $1$hash (用 grub-md5-crypt 生成)。
- 裝置命名:
(hd0,0) 表示第一顆磁碟第一分區,無論 SATA/SCSI/IDE 均以 hd 開頭,編號從 0 開始。
核心模組管理
模組檔案位於 /lib/modules/$(uname -r)/kernel/,副檔名 .ko。
| 命令 | 功能 |
lsmod | 列出已載入模組 |
modinfo module_name | 顯示模組資訊 (作者、參數、相依) |
insmod /path/module.ko | 載入指定路徑模組 (不解決相依) |
modprobe module_name | 智能載入 (自動解決相依、從標準路徑尋找) |
rmmod module_name | 卸載模組 (若被使用則失敗) |
modprobe -r module_name | 智能卸載 (處理相依) |
depmod | 更新 modules.dep 相依關係資料庫 |
實戰場景
- 新增硬體驅動:編譯 .ko →
depmod → modprobe → 加入 /etc/modules 開機自動載入。
- 排除模組衝突:
modprobe -r 卸載衝突模組 → 黑名單 /etc/modprobe.d/blacklist.conf。
- 參數調整:
modprobe module param=value 或寫入 /etc/modprobe.d/module.conf。
總結
理解啟動流程有助於排查開機卡住、根分區掛載失敗、驅動未載入等疑難雜症。GRUB2、initramfs、Systemd 是現代 Linux 啟動鐵三角,掌握其配置與除錯工具 (dmesg, journalctl -b, systemd-analyze) 是運維進階必修課。