Linux 開機流程
從按下電源到看到登入畫面,大致經過以下階段:
- 韌體 (BIOS / UEFI):CPU reset 後執行主機板韌體,做硬體初始化與 POST,再依開機順序找開機裝置。
- Legacy BIOS:讀取 MBR 第一磁區的 boot code。
- UEFI:讀 EFI System Partition (ESP) 上的
.efibootloader,支援 GPT 與 Secure Boot。
- Bootloader (如 GRUB):載入 kernel image (
vmlinuz) 與 initramfs 到記憶體,帶入 kernel 參數 (cmdline) 後跳入 kernel。 - Kernel 初始化:解壓自身、初始化 subsystem 與必要 driver、掛載 initramfs 當臨時 root。
- initramfs / initrd:記憶體中的臨時 root filesystem,內含掛載「真正 root」所需的 driver/工具(如 LVM、RAID、加密磁碟),完成後
switch_root切到真正的 rootfs。 - init (PID 1):kernel 啟動的第一個 user space 程序,現代發行版多為 systemd,負責把系統帶到目標狀態、拉起服務。
觀察
dmesg— kernel ring buffer(開機訊息)。systemd-analyze/systemd-analyze blame— 分析開機耗時。
相關:ARM/embedded 平台的開機流程見 booting/boot.md。