Linux 啟動過程詳解:面試經(jīng)常被問又容易忽略的核心知識
下圖是Linux啟動過程的基本步驟。理解這個過程,有助于系統(tǒng)管理人員排查問題。下面將詳細(xì)展開講解。

1. 開機自檢(BIOS/UEFI)
當(dāng)你按下開機按鈕時,計算機的硬件并不會立刻開始運行操作系統(tǒng),而是先進行一系列的自我檢查。這一階段由 BIOS(基本輸入輸出系統(tǒng)) 或 UEFI(統(tǒng)一擴展固件接口) 負(fù)責(zé)。
- 自檢(POST):啟動時,BIOS/UEFI 會對硬件進行初步檢查,確保硬件設(shè)備如 CPU、內(nèi)存、硬盤等能夠正常工作。
 - 啟動設(shè)備選擇:完成硬件自檢后,BIOS/UEFI 會查找引導(dǎo)設(shè)備(如硬盤、U盤、光盤等)。它會根據(jù)預(yù)設(shè)的順序選擇一個設(shè)備,查找上面是否有操作系統(tǒng)。
 
這時,計算機會找到存儲在硬盤上的啟動引導(dǎo)程序,并將控制權(quán)交給它。
2. 引導(dǎo)加載程序(Bootloader)
引導(dǎo)加載程序是 Linux 啟動流程中的關(guān)鍵部分。最常見的引導(dǎo)程序是 GRUB。它負(fù)責(zé)加載操作系統(tǒng)的內(nèi)核,并將控制權(quán)交給內(nèi)核。具體過程如下:
- 加載內(nèi)核:GRUB 會從硬盤上的 /boot 分區(qū)加載 Linux 內(nèi)核(通常是 vmlinuz 文件),并將其載入內(nèi)存。
 - 加載初始內(nèi)存盤(initramfs):除了內(nèi)核映像,GRUB 還會加載 initramfs,這是一個包含啟動時所需的最小操作環(huán)境的壓縮文件系統(tǒng)。initramfs 包含了必要的驅(qū)動程序和工具,能幫助系統(tǒng)在啟動階段掛載根文件系統(tǒng)。
 
3. 內(nèi)核初始化
內(nèi)核是操作系統(tǒng)的核心部分,它承擔(dān)著管理硬件、執(zhí)行程序和提供服務(wù)等任務(wù)。內(nèi)核被加載到內(nèi)存后,開始進行一系列初始化操作:
- 硬件初始化:內(nèi)核會識別并初始化計算機的硬件組件,包括 CPU、內(nèi)存、硬盤、顯示器、網(wǎng)絡(luò)適配器等。內(nèi)核會通過加載合適的驅(qū)動程序來與這些硬件進行交互。
 - 掛載臨時根文件系統(tǒng):內(nèi)核會使用 initramfs 作為臨時根文件系統(tǒng),掛載到 / 目錄,這時,根文件系統(tǒng)中的程序和文件還沒有完全加載。
 
當(dāng)內(nèi)核初始化完成后,它會啟動第一個用戶空間進程,這個進程通常是 init,它負(fù)責(zé)啟動系統(tǒng)的其他部分。
4. 啟動第一個進程(init/systemd)
內(nèi)核啟動后,它會創(chuàng)建一個進程號為 1 的進程,這個進程通常是 init(在現(xiàn)代 Linux 系統(tǒng)中,init 通常是由 systemd 取代的)。init 是 Linux 系統(tǒng)中的第一個用戶空間進程,它是所有其他用戶空間進程的祖先,負(fù)責(zé)整個系統(tǒng)的初始化和管理。
- 掛載根文件系統(tǒng):init 進程會確保最終的根文件系統(tǒng)(硬盤上的實際文件系統(tǒng))被正確掛載。如果 initramfs 被使用,它會將根文件系統(tǒng)切換到實際的磁盤分區(qū)。
 
5. 啟動系統(tǒng)服務(wù)
系統(tǒng)進入用戶空間后,Linux 會啟動多個重要的系統(tǒng)服務(wù)和守護進程。這些服務(wù)包括:
- 網(wǎng)絡(luò)服務(wù):配置網(wǎng)絡(luò)接口,分配 IP 地址,啟動 DNS 等服務(wù),確保系統(tǒng)可以訪問網(wǎng)絡(luò)。
 - 系統(tǒng)日志:啟動日志服務(wù)(如 rsyslog),收集并保存系統(tǒng)日志,方便后續(xù)查看。
 - SSH 服務(wù):如果系統(tǒng)允許遠(yuǎn)程訪問,sshd 服務(wù)會被啟動,允許用戶通過 SSH 登錄到系統(tǒng)。
 - 定時任務(wù):啟動定時任務(wù)管理器(如 cron),執(zhí)行預(yù)定的自動化任務(wù)。
 
這些系統(tǒng)服務(wù)通常通過配置文件(在 systemd 中是單元文件)來管理,可以按需啟用或禁用。
6. 用戶登錄界面
所有的系統(tǒng)服務(wù)啟動完畢后,系統(tǒng)會進入可供用戶交互的階段。如果系統(tǒng)配置了圖形界面,登錄界面就會彈出;如果是命令行模式,系統(tǒng)會顯示終端提示符等待用戶登錄。
- 圖形界面登錄:如果系統(tǒng)使用桌面環(huán)境(,登錄管理器(如 GDM、LightDM)會顯示圖形界面,用戶可以輸入用戶名和密碼進行登錄。
 - 命令行界面登錄:如果系統(tǒng)沒有圖形界面(如一些服務(wù)器版的 Linux),則會顯示一個命令行終端,用戶可以通過終端輸入用戶名和密碼進行登錄。
 
這就是 Linux 從開機到完成啟動的基本流程。不同的 Linux 發(fā)行版和配置可能在某些細(xì)節(jié)上有所不同,但大體流程基本一致。















 
 
 









 
 
 
 