每次您開啟 Linux 個人電腦時,它都會在最終顯示提示您輸入使用者名稱或密碼的登入畫面之前,經歷一系列階段。在典型的開機過程中,每個 Linux 發行版都會經歷 4 個明確的階段。

在本指南中,我們將突顯 Linux 作業系統從開機到登入的各個步驟。請注意,本指南僅考慮目前被廣泛使用的 現代 Linux 發行版 中的 GRUB2 引導程序和 systemd init。
開機過程包括以下 4 個步驟,我們將更詳細地討論:
- BIOS 完整性檢查(POST)
- 引導程序(GRUB2)的載入
- 核心初始化
- 啟動所有進程的 systemd 父進程
1. BIOS 完整性檢查(POST)
通常,當使用者按下 開機 按鈕(如果電腦已經關機)或使用 GUI 或命令列重新啟動系統時,開機過程就會啟動。
當 Linux 系統啟動時,BIOS(基本輸入輸出系統)啟動並執行 自我測試(POST)。這是一個執行大量診斷檢查的完整性檢查。
發布探測組件的硬體可操作性,如硬碟或固態硬碟,鍵盤,RAM,USB端口和任何其他硬體。如果未檢測到某些硬體設備,或者如果任何設備存在故障,例如損壞的硬碟或固態硬碟,則會在屏幕上顯示錯誤消息,提示您進行干預。
在某些情況下,尤其是在缺少RAM模塊的情況下,會發出嗡嗡聲。但是,如果預期的硬體存在且正常工作,則引導過程將繼續進行到下一階段。
2. 引導加載程式(GRUB2)
一旦發布完成且無障礙,BIOS會探查MBR(主引導記錄)以獲取引導加載程式和磁盤分區信息。
MBR是位於硬碟的第一扇區上的512字節代碼,通常是/dev/sda
或/dev/hda
,具體取決於您的硬碟架構。然而,需要注意的是,有時MBR可以位於Linux的Live USB或DVD安裝中。
Linux中有3種主要類型的引導加載程式:LILO,GRUB和GRUB2。 GRUB2引導加載程式是現代Linux發行版中的最新和主要引導加載程式,我們決定不包括其他兩種引導加載程式,因為它們隨著時間的推移已經過時。
GRUB2代表第2版的GRand Unified Bootloader。一旦BIOS找到grub2引导加载程序,它会执行并加载到主内存(RAM)中。
grub2菜单允许您做一些事情。它允许您选择要使用的Linux内核版本。如果您多次升级系统,可能会看到列出的不同内核版本。此外,它通过按键组合给您编辑一些内核参数的能力。

此外,在具有多个操作系统安装的双引导设置中,grub菜单允许您选择要引导到哪个操作系统。grub2配置文件是/boot/grub2/grub2.cfg文件。GRUB的主要目标是将Linux内核加载到主内存中。
3. 内核初始化
内核是任何Linux系统的核心。它将PC的硬件与底层进程进行接口连接。内核控制您Linux系统上的所有进程。一旦引导加载程序加载了所选的Linux内核,它必须从其压缩版本中自我提取,然后才能执行任何任务。自我提取后,所选的内核会挂载根文件系统并初始化/sbin/init程序,通常称为init。

初始化是始终第一个执行的程序,分配的进程ID或PID为1。它是生成各种守护进程并挂载在/etc/fstab文件中指定的所有分区的初始化进程。
然后内核挂载初始RAM磁盘(initrd),它是一个临时的根文件系统,直到真正的根文件系统被挂载。所有内核都位于/boot
目录中,与初始RAM磁盘映像一起。
4.启动Systemd
最后,内核加载Systemd,它是旧SysV init的替代品。Systemd是所有Linux进程的母进程,并管理文件系统的挂载、启动和停止服务等功能。
Systemd使用/etc/systemd/system/default.target文件来确定Linux系统应该引导到的状态或目标。
- 对于桌面工作站(带有GUI),默认目标值为5,这相当于旧的SystemV init的运行级别5。
- 对于服务器,默认目标是multi-user.target,对应于SysV init中的运行级别3。
以下是systemd目标的详细说明:
- poweroff.target(运行级别0):关闭系统。
- rescue.target(运行级别1):启动救援shell会话。
- multi-user.target(运行级别2,3,4):将系统配置为非图形(控制台)多用户系统。
- graphical.target (runlevel 5): 設置系統使用具有網絡服務的圖形多用戶界面。
- reboot.target (runlevel 6): 重新啟動系統。
要檢查系統上當前的目標,運行以下命令:
$ systemctl get-default

您可以通過在終端上運行以下命令來切換到另一個目標:
$ init runlevel-value
例如,init 3 將系統配置為非圖形狀態。
命令init 6重新啟動您的系統,而init 0關閉系統電源。切換到這兩個目標時,請務必調用sudo 命令。
引導過程在systemd加載所有守護進程並設置目標或運行級別值後結束。此時,系統會提示您輸入用戶名和密碼,然後您就可以進入Linux系統了。