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