Linux系統的啟動完整過程
Linux系統的啟動過程是一個復雜的過程,涉及多個階段和組件的協同工作。其主要經過以下幾個階段:

1.BIOS/UEFI階段
開始時,計算機的基本輸入/輸出系統(BIOS)或統一固件接口(UEFI)被激活。這些固件負責執行初始硬件自檢(POST)以及初始化一些基本硬件設置。UEFI相比BIOS更加現代,支持更多功能。
2.引導加載程序階段
BIOS/UEFI根據設置的啟動設備(通常是硬盤)中的引導記錄(bootloader)來加載引導加載程序。常用的引導加載程序有GRUB(Grand Unified Bootloader)和Syslinux等。引導加載程序的任務是加載操作系統內核。
3.內核啟動階段
引導加載程序加載Linux內核鏡像(通常是vmlinuz或bzImage),將其加載到內存中并開始執行。內核的啟動包括以下步驟:
- 初始化階段:內核初始化核心的數據結構和基本的硬件設備驅動程序,準備切換到更高級別的特權級。
- 啟動調度器:內核啟動調度器以開始多任務處理。此時,內核開始創建用戶空間的第一個進程(通常是init進程,PID為1)。
- 掛載根文件系統:內核掛載根文件系統,這是操作系統的根目錄。根文件系統可以是在內核鏡像中的initramfs(初始化ram文件系統),也可以是實際的根文件系統。
4.initramfs/initrd階段
如果使用了initramfs(initial RAM filesystem),內核會在此階段將initramfs加載到內存中。initramfs包含必要的文件和工具,以便在根文件系統掛載之前進行一些初始化操作,例如加載必要的驅動程序和準備根文件系統。
5.用戶空間初始化
一旦根文件系統掛載,init進程(或其替代品,如systemd)會在用戶空間初始化操作系統環境。這包括啟動各種系統服務、加載驅動程序、配置網絡、設置用戶環境等。
6.運行級別/目標
在傳統的init系統中,系統可以進入不同的運行級別(也稱為運行模式或運行目標),例如單用戶模式、多用戶模式、圖形界面模式等。每個運行級別都定義了在系統啟動時需要運行的特定服務和進程。
7.系統服務啟動
系統服務和守護進程(如網絡服務、打印服務、時鐘同步等)會在此階段啟動。這些服務通常由init腳本或現代的init系統如systemd來管理。
8.登錄管理器/顯示管理器
如果系統配置為使用圖形界面,登錄管理器(如GDM、LightDM)將被啟動,提供圖形登錄界面供用戶登錄。用戶可以在這里輸入用戶名和密碼。
9.用戶登錄
一旦用戶通過登錄管理器成功登錄,桌面環境或命令行Shell會被啟動,用戶可以開始在系統上進行操作。

總的來說,Linux系統啟動過程包括了硬件初始化、引導加載程序、內核啟動、用戶空間初始化、系統服務啟動等多個階段,最終使系統進入可操作狀態。隨著技術的發展,一些細節可能會有所不同,尤其是在新的引導和初始化系統出現后(如systemd)


























