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

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



























