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