Linux啟動流程
每次打開 Linux PC 時,它都會經(jīng)歷一系列階段,然后最終顯示提示輸入用戶名或密碼的登錄屏幕。每個 Linux 發(fā)行版在典型的啟動過程中都會經(jīng)歷 4 個不同的階段。
每次打開 Linux PC 時,它都會經(jīng)歷一系列階段,然后最終顯示提示輸入用戶名或密碼的登錄屏幕。每個 Linux 發(fā)行版在典型的啟動過程中都會經(jīng)歷 4 個不同的階段。
用戶登錄提示
在本指南中,我們將重點介紹 Linux 操作系統(tǒng)從開機(jī)到登錄的各個步驟。請注意,本指南僅考慮了當(dāng)前使用的
GRUB2
引導(dǎo)加載程序和systemd
init 絕大多數(shù)現(xiàn)代 Linux 發(fā)行版 引導(dǎo)過程需要以下 4 個步驟,我們將更詳細(xì)地討論這些步驟:
-
BIOS
完整性檢查 (POST
) -
加載引導(dǎo)加載程序 ( GRUB2
) -
內(nèi)核初始化 -
啟動 systemd
,所有進(jìn)程的父進(jìn)程
1. BIOS 完整性檢查 (POST)
引導(dǎo)過程通常在用戶按下
開機(jī)
按鈕(如果 PC 已經(jīng)關(guān)閉)或使用 GUI 或命令行重新啟動系統(tǒng)時初始化。
當(dāng) Linux 系統(tǒng)啟動時,
BIOS
(基本輸入輸出系統(tǒng)
)啟動并執(zhí)行開機(jī)自檢
(POST
)。這是執(zhí)行大量診斷檢查的完整性檢查。
該
POST
探測部件,如硬件操作性HDD
或SSD
,鍵盤
,RAM
,USB
端口,和任何其他的硬件。如果未檢測到某些硬件設(shè)備,或者任何設(shè)備出現(xiàn)故障,例如損壞的 HDD 或 SSD,屏幕上會出現(xiàn)一條錯誤消息,提示您進(jìn)行干預(yù)。
在某些情況下,特別是在缺少 RAM 模塊的情況下,會發(fā)出嗶嗶聲。但是,如果預(yù)期的硬件存在并且按預(yù)期運行,則引導(dǎo)過程將進(jìn)入下一階段。
2. 引導(dǎo)加載程序 (GRUB2)
一旦
POST
完成并且停止運行,BIOS 就會
探測MBR
(主引導(dǎo)記錄
)以獲取引導(dǎo)加載程序和磁盤分區(qū)信息。
該
MBR
是位于硬盤驅(qū)動器通常是第一個扇區(qū) 512 字節(jié)的代碼/dev/sda
或/dev/hda
根據(jù)您的硬盤驅(qū)動器架構(gòu)。但是請注意,有時MBR
可以位于Linux的Live USB
或DVD
安裝中。
Linux 中有 3 種主要類型的引導(dǎo)加載程序:
LILO
、GRUB
和GRUB2
。該GRUB2
引導(dǎo)裝載程序是現(xiàn)代的 Linux 發(fā)行版的最新和主引導(dǎo)程序,另外兩個已經(jīng)過時。
GRUB2
代表GRand Unified Bootloader
版本 2。一旦BIOS
找到 grub2 引導(dǎo)加載程序,它就會執(zhí)行并將其加載到主內(nèi)存 (RAM
) 上。
該
GRUB2
菜單允許你做兩件事情。它允許您選擇要使用的 Linux 內(nèi)核版本。如果您已經(jīng)升級了幾次系統(tǒng),您可能會看到列出的不同內(nèi)核版本。此外,它還使您能夠通過按鍵盤組合鍵來編輯某些內(nèi)核參數(shù)。
選擇內(nèi)核版本
此外,在有多個操作系統(tǒng)安裝如何使用 FTP 網(wǎng)絡(luò)源安裝多個 CentOS/RHEL 服務(wù)器")的雙引導(dǎo)設(shè)置中,grub 菜單允許您選擇要引導(dǎo)到的操作系統(tǒng)。grub2 配置文件是
/boot/grub2/grub2.cfg
文件。GRUB 的主要目標(biāo)是將 Linux 內(nèi)核加載到主內(nèi)存中。
3. 內(nèi)核初始化
內(nèi)核是任何 Linux 系統(tǒng)的核心。它將 PC 的硬件與底層進(jìn)程連接起來。內(nèi)核控制 Linux 系統(tǒng)上的所有進(jìn)程。一旦引導(dǎo)加載程序加載了選定的 Linux 內(nèi)核,它必須在執(zhí)行任何任務(wù)之前從其壓縮版本中自行解壓縮。在自解壓縮,所選擇的內(nèi)核安裝根文件系統(tǒng),并初始化
/ sbin 目錄 / 初始化
通常被稱為程序初始化
。
內(nèi)核初始化過程
Init
始終是第一個要執(zhí)行的程序,并被分配進(jìn)程 ID 或 PID 為 1。它是 init 進(jìn)程,它產(chǎn)生各種守護(hù)進(jìn)程并掛載/etc/fstab
文件中指定的所有分區(qū)。
內(nèi)核然后掛載初始 RAM 磁盤 (
initrd
),它是一個臨時的根文件系統(tǒng),直到真正的根文件系統(tǒng)被掛載。所有內(nèi)核都/boot
與初始 RAM 磁盤映像一起位于該目錄中。
4. 啟動 Systemd
內(nèi)核最終加載了
Systemd
,它是舊SysV
init的替代品。Systemd
是所有 Linux 進(jìn)程的母體,并管理文件系統(tǒng)的掛載、啟動和停止服務(wù)等等。
Systemd 使用
/etc/systemd/system/default.target
文件來確定 Linux 系統(tǒng)應(yīng)該引導(dǎo)到的狀態(tài)或目標(biāo)。
-
對于桌面工作站(帶有 GUI),默認(rèn)目標(biāo)值為 5,相當(dāng)于舊 SystemV init 的運行級別 5。 -
對于服務(wù)器,默認(rèn)目標(biāo)是 multi-user.target
,它對應(yīng)于 SysV init 中的運行級別 3。
以下是 systemd 目標(biāo)的細(xì)分:
-
poweroff.target (runlevel 0)
:關(guān)閉或關(guān)閉系統(tǒng)。 -
rescue.target (runlevel 1)
:啟動救援shell會話。 -
multi-user.target (runlevel 2,3,4)
:將系統(tǒng)配置為非圖形(控制臺)多用戶系統(tǒng)。 -
graphics.target (runlevel 5)
:將系統(tǒng)設(shè)置為使用具有網(wǎng)絡(luò)服務(wù)的圖形多用戶界面。 -
reboot.target (runlevel 6)
:重新啟動系統(tǒng)。
要檢查系統(tǒng)上的當(dāng)前目標(biāo),請運行以下命令:
>?systemctl?get-default
檢查運行級別
您可以通過在終端上運行以下命令從一個目標(biāo)切換到另一個目標(biāo):
>?init?runlevel-value
例如,init 3 將系統(tǒng)配置為非圖形狀態(tài)。
在
init 6
命令重新啟動您的系統(tǒng)和init 0
關(guān)閉系統(tǒng)電源。當(dāng)您要切換到這兩個目標(biāo)時,請務(wù)必調(diào)用sudo 命令
。
一旦
systemd
加載所有守護(hù)進(jìn)程并設(shè)置目標(biāo)或運行級別值,引導(dǎo)過程就會結(jié)束。此時,系統(tǒng)會提示您輸入用戶名和密碼,然后您就可以進(jìn)入 Linux 系統(tǒng)。