Linux 系統的啟動與關機看似簡單,實則涉及硬體、韌體、核心與使用者空間程式的精密協作。若未遵循正確流程,輕則導致檔案系統損毀、資料遺失,重則造成系統無法啟動。本文將深入淺出地解析從按下電源鍵到進入登入畫面,以及從下達關機指令到電源切斷的完整技術細節,助您建立扎實的系統管理基礎。
當您按下電源鍵,主機板上的 BIOS(基本輸入輸出系統)會率先執行「電源開機自我檢測」(Power-On Self-Test, POST),檢查 CPU、記憶體、硬碟、鍵盤、顯示卡等關鍵硬體是否正常運作。此階段若發現錯誤,通常會以蜂鳴器聲碼或螢幕訊息提示。
POST 通過後,BIOS 依據預設或使用者在 CMOS 設定中的啟動順序(如:USB > 光碟 > 硬碟),尋找可啟動的裝置。對於硬碟,BIOS 會讀取第一磁區(512 位元組)的「主開機記錄」(Master Boot Record, MBR)。MBR 包含兩部分關鍵資料:
MBR 程式碼本身無法直接載入龐大的核心,它的任務是找到標記為「啟動」的分區,讀取該分區的「開機磁區」,並執行其中的載入器程式碼。傳統上 Linux 使用 LILO (LInux LOader),現代發行版則多採用功能更強大的 GRUB (GRand Unified Bootloader)。載入器的核心職責包括:
/etc/lilo.conf 或 /boot/grub/grub.cfg)定位核心映像檔(vmlinuz)與初始虛擬檔案系統(initrd/initramfs)。root=/dev/sda2 ro quiet)。核心映像檔通常經過壓縮(gzip/xz/lz4)。核心啟動的第一步,是執行映像檔開頭的微型解壓縮程式,將自身解壓至記憶體。隨後核心初始化硬體子系統(記憶體管理、行程排程、中斷處理、裝置驅動程式),掛載 initramfs 作為暫時根檔案系統,載入必要的儲存裝置驅動程式(如 SCSI、RAID、LVM、加密模組),最後切換到真實的根檔案系統(switch_root)。
核心初始化完成後,會啟動 PID 1 的 init 進程(現代多為 systemd、SysV init 或 OpenRC)。init 讀取設定檔(如 /etc/inittab 或 systemd 的 unit 檔案),依序啟動系統服務、掛載 /etc/fstab 定義的檔案系統、啟動終端機登入程式(getty)或圖形登入管理器(GDM、SDDM、LightDM),最終呈現登入畫面。
執行 shutdown -h now、poweroff 或 init 0 時,init 系統會發送信號(SIGTERM 隨後 SIGKILL)給所有行程,要求它們優雅結束(關閉檔案、釋放鎖、寫入日誌)。隨後依序:
remount,ro 重新掛載為唯讀,確保緩衝區資料寫回磁碟(sync)。swapoff -a)。umount -a)。若直接拔掉電源或長按電源鍵強制關機,核心來不及執行上述流程,會導致:
shutdown 或 systemctl poweroff 的習慣,避免直接斷電。Alt+SysRq+R,E,I,S,U,B (REISUB) 安全重啟鍵盤組合,而非硬體重置。掌握 Linux 開關機的底層機制,不僅能讓您在故障排除時更從容,更是成為資深系統管理員的必修課。下次按下電源鍵時,腦海中浮現的將不只是 Logo,而是一場精密協作的技術交響曲。