Linux啟動流程
每次打開 Linux PC 時,它都會經(jīng)歷一系列階段,然后最終顯示提示輸入用戶名或密碼的登錄屏幕。每個 Linux 發(fā)行版在典型的啟動過程中都會經(jīng)歷 4 個不同的階段。
每次打開 Linux PC 時,它都會經(jīng)歷一系列階段,然后最終顯示提示輸入用戶名或密碼的登錄屏幕。每個 Linux 發(fā)行版在典型的啟動過程中都會經(jīng)歷 4 個不同的階段。
用戶登錄提示
在本指南中,我們將重點介紹 Linux 操作系統(tǒng)從開機到登錄的各個步驟。請注意,本指南僅考慮了當前使用的
GRUB2
引導加載程序和systemd
init 絕大多數(shù)現(xiàn)代 Linux 發(fā)行版 引導過程需要以下 4 個步驟,我們將更詳細地討論這些步驟:
-
BIOS
完整性檢查 (POST
) -
加載引導加載程序 ( GRUB2
) -
內核初始化 -
啟動 systemd
,所有進程的父進程
1. BIOS 完整性檢查 (POST)
引導過程通常在用戶按下
開機
按鈕(如果 PC 已經(jīng)關閉)或使用 GUI 或命令行重新啟動系統(tǒng)時初始化。
當 Linux 系統(tǒng)啟動時,
BIOS
(基本輸入輸出系統(tǒng)
)啟動并執(zhí)行開機自檢
(POST
)。這是執(zhí)行大量診斷檢查的完整性檢查。
該
POST
探測部件,如硬件操作性HDD
或SSD
,鍵盤
,RAM
,USB
端口,和任何其他的硬件。如果未檢測到某些硬件設備,或者任何設備出現(xiàn)故障,例如損壞的 HDD 或 SSD,屏幕上會出現(xiàn)一條錯誤消息,提示您進行干預。
在某些情況下,特別是在缺少 RAM 模塊的情況下,會發(fā)出嗶嗶聲。但是,如果預期的硬件存在并且按預期運行,則引導過程將進入下一階段。
2. 引導加載程序 (GRUB2)
一旦
POST
完成并且停止運行,BIOS 就會
探測MBR
(主引導記錄
)以獲取引導加載程序和磁盤分區(qū)信息。
該
MBR
是位于硬盤驅動器通常是第一個扇區(qū) 512 字節(jié)的代碼/dev/sda
或/dev/hda
根據(jù)您的硬盤驅動器架構。但是請注意,有時MBR
可以位于Linux的Live USB
或DVD
安裝中。
Linux 中有 3 種主要類型的引導加載程序:
LILO
、GRUB
和GRUB2
。該GRUB2
引導裝載程序是現(xiàn)代的 Linux 發(fā)行版的最新和主引導程序,另外兩個已經(jīng)過時。
GRUB2
代表GRand Unified Bootloader
版本 2。一旦BIOS
找到 grub2 引導加載程序,它就會執(zhí)行并將其加載到主內存 (RAM
) 上。
該
GRUB2
菜單允許你做兩件事情。它允許您選擇要使用的 Linux 內核版本。如果您已經(jīng)升級了幾次系統(tǒng),您可能會看到列出的不同內核版本。此外,它還使您能夠通過按鍵盤組合鍵來編輯某些內核參數(shù)。
選擇內核版本

此外,在有多個操作系統(tǒng)安裝如何使用 FTP 網(wǎng)絡源安裝多個 CentOS/RHEL 服務器")的雙引導設置中,grub 菜單允許您選擇要引導到的操作系統(tǒng)。grub2 配置文件是
/boot/grub2/grub2.cfg
文件。GRUB 的主要目標是將 Linux 內核加載到主內存中。
3. 內核初始化
內核是任何 Linux 系統(tǒng)的核心。它將 PC 的硬件與底層進程連接起來。內核控制 Linux 系統(tǒng)上的所有進程。一旦引導加載程序加載了選定的 Linux 內核,它必須在執(zhí)行任何任務之前從其壓縮版本中自行解壓縮。在自解壓縮,所選擇的內核安裝根文件系統(tǒng),并初始化
/ sbin 目錄 / 初始化
通常被稱為程序初始化
。
內核初始化過程

Init
始終是第一個要執(zhí)行的程序,并被分配進程 ID 或 PID 為 1。它是 init 進程,它產生各種守護進程并掛載/etc/fstab
文件中指定的所有分區(qū)。
內核然后掛載初始 RAM 磁盤 (
initrd
),它是一個臨時的根文件系統(tǒng),直到真正的根文件系統(tǒng)被掛載。所有內核都/boot
與初始 RAM 磁盤映像一起位于該目錄中。
4. 啟動 Systemd
內核最終加載了
Systemd
,它是舊SysV
init的替代品。Systemd
是所有 Linux 進程的母體,并管理文件系統(tǒng)的掛載、啟動和停止服務等等。
Systemd 使用
/etc/systemd/system/default.target
文件來確定 Linux 系統(tǒng)應該引導到的狀態(tài)或目標。
-
對于桌面工作站(帶有 GUI),默認目標值為 5,相當于舊 SystemV init 的運行級別 5。 -
對于服務器,默認目標是 multi-user.target
,它對應于 SysV init 中的運行級別 3。
以下是 systemd 目標的細分:
-
poweroff.target (runlevel 0)
:關閉或關閉系統(tǒng)。 -
rescue.target (runlevel 1)
:啟動救援shell會話。 -
multi-user.target (runlevel 2,3,4)
:將系統(tǒng)配置為非圖形(控制臺)多用戶系統(tǒng)。 -
graphics.target (runlevel 5)
:將系統(tǒng)設置為使用具有網(wǎng)絡服務的圖形多用戶界面。 -
reboot.target (runlevel 6)
:重新啟動系統(tǒng)。
要檢查系統(tǒng)上的當前目標,請運行以下命令:
>?systemctl?get-default
檢查運行級別

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