Linux系統(tǒng)的啟動完整過程
Linux系統(tǒng)的啟動過程是一個復(fù)雜的過程,涉及多個階段和組件的協(xié)同工作。其主要經(jīng)過以下幾個階段:
1.BIOS/UEFI階段
開始時,計(jì)算機(jī)的基本輸入/輸出系統(tǒng)(BIOS)或統(tǒng)一固件接口(UEFI)被激活。這些固件負(fù)責(zé)執(zhí)行初始硬件自檢(POST)以及初始化一些基本硬件設(shè)置。UEFI相比BIOS更加現(xiàn)代,支持更多功能。
2.引導(dǎo)加載程序階段
BIOS/UEFI根據(jù)設(shè)置的啟動設(shè)備(通常是硬盤)中的引導(dǎo)記錄(bootloader)來加載引導(dǎo)加載程序。常用的引導(dǎo)加載程序有GRUB(Grand Unified Bootloader)和Syslinux等。引導(dǎo)加載程序的任務(wù)是加載操作系統(tǒng)內(nèi)核。
3.內(nèi)核啟動階段
引導(dǎo)加載程序加載Linux內(nèi)核鏡像(通常是vmlinuz或bzImage),將其加載到內(nèi)存中并開始執(zhí)行。內(nèi)核的啟動包括以下步驟:
- 初始化階段:內(nèi)核初始化核心的數(shù)據(jù)結(jié)構(gòu)和基本的硬件設(shè)備驅(qū)動程序,準(zhǔn)備切換到更高級別的特權(quán)級。
- 啟動調(diào)度器:內(nèi)核啟動調(diào)度器以開始多任務(wù)處理。此時,內(nèi)核開始創(chuàng)建用戶空間的第一個進(jìn)程(通常是init進(jìn)程,PID為1)。
- 掛載根文件系統(tǒng):內(nèi)核掛載根文件系統(tǒng),這是操作系統(tǒng)的根目錄。根文件系統(tǒng)可以是在內(nèi)核鏡像中的initramfs(初始化ram文件系統(tǒng)),也可以是實(shí)際的根文件系統(tǒng)。
4.initramfs/initrd階段
如果使用了initramfs(initial RAM filesystem),內(nèi)核會在此階段將initramfs加載到內(nèi)存中。initramfs包含必要的文件和工具,以便在根文件系統(tǒng)掛載之前進(jìn)行一些初始化操作,例如加載必要的驅(qū)動程序和準(zhǔn)備根文件系統(tǒng)。
5.用戶空間初始化
一旦根文件系統(tǒng)掛載,init進(jìn)程(或其替代品,如systemd)會在用戶空間初始化操作系統(tǒng)環(huán)境。這包括啟動各種系統(tǒng)服務(wù)、加載驅(qū)動程序、配置網(wǎng)絡(luò)、設(shè)置用戶環(huán)境等。
6.運(yùn)行級別/目標(biāo)
在傳統(tǒng)的init系統(tǒng)中,系統(tǒng)可以進(jìn)入不同的運(yùn)行級別(也稱為運(yùn)行模式或運(yùn)行目標(biāo)),例如單用戶模式、多用戶模式、圖形界面模式等。每個運(yùn)行級別都定義了在系統(tǒng)啟動時需要運(yùn)行的特定服務(wù)和進(jìn)程。
7.系統(tǒng)服務(wù)啟動
系統(tǒng)服務(wù)和守護(hù)進(jìn)程(如網(wǎng)絡(luò)服務(wù)、打印服務(wù)、時鐘同步等)會在此階段啟動。這些服務(wù)通常由init腳本或現(xiàn)代的init系統(tǒng)如systemd來管理。
8.登錄管理器/顯示管理器
如果系統(tǒng)配置為使用圖形界面,登錄管理器(如GDM、LightDM)將被啟動,提供圖形登錄界面供用戶登錄。用戶可以在這里輸入用戶名和密碼。
9.用戶登錄
一旦用戶通過登錄管理器成功登錄,桌面環(huán)境或命令行Shell會被啟動,用戶可以開始在系統(tǒng)上進(jìn)行操作。
總的來說,Linux系統(tǒng)啟動過程包括了硬件初始化、引導(dǎo)加載程序、內(nèi)核啟動、用戶空間初始化、系統(tǒng)服務(wù)啟動等多個階段,最終使系統(tǒng)進(jìn)入可操作狀態(tài)。隨著技術(shù)的發(fā)展,一些細(xì)節(jié)可能會有所不同,尤其是在新的引導(dǎo)和初始化系統(tǒng)出現(xiàn)后(如systemd)