1、POST : 加電自檢
? ? ? ? 當(dāng)給計(jì)算機(jī)上電水孩,主板上的CMOS芯片獲得電源蓝角,會執(zhí)行其上的BIOS(基本輸入輸出系統(tǒng)Basic I/O System)程序 。BIOS程序會根據(jù)CMOS上的硬件配置信息哭懈,去檢查硬件是否存在及是否能正常工作灾馒,最后進(jìn)行硬件初始化。
2遣总、加載bootloader
? ? ? ? 根據(jù)啟動順序找到第一個(gè)可以啟動的磁盤睬罗,加載其MBR中的BootLoader ; BootLoader就是將內(nèi)核加載至內(nèi)存中旭斥、解壓展開容达。
? ? ? ? 由于MBR只有512byte,Bootloader占用前446bytes,這么小的空間不可能放置很多的程序垂券,所以Bootloader(grub)就分為3個(gè)階段(stage)完成:
? ? ? ? stage1: 加載Bootloader的主程序(位于MBR中)用于加載stage 1.5的代碼花盐;
? ? ? ? stage1.5: 位于MBR之后的扇區(qū),讓statge1中的bootloader能夠識別stage2所在的分區(qū)文件系統(tǒng)菇爪;
? ? ? ? stage2:通過Bootloader加載所有的配置文件及相關(guān)參數(shù)卒暂,這些參數(shù)都位于磁盤/boot/grub中;
3娄帖、內(nèi)核初始化
? ? ? ?此時(shí)BootLoader需要將內(nèi)核程序加載至內(nèi)存也祠,并進(jìn)行解壓,展開近速,控制權(quán)也移交給內(nèi)核诈嘿;內(nèi)核需要檢測硬件設(shè)備,并加載硬件驅(qū)動削葱;但是內(nèi)核程序本身也是放在硬盤的/boot分區(qū)上奖亚,這就需要先加載硬盤驅(qū)動;
? ? ? ?此時(shí)就需要一個(gè)臨時(shí)根文件系統(tǒng)代替一個(gè)真正的文件系統(tǒng)行使權(quán)力析砸,即initrd.? ?Bootloader會將initrd程序加載至內(nèi)存昔字,initrd會模擬出一個(gè)虛擬的根文件系統(tǒng),這樣就可以加載硬件驅(qū)動等啟動過程中需要的程序,加載完成后作郭,并完成根切換陨囊;然后內(nèi)核運(yùn)行用戶空間第一個(gè)程序/sbin/init ,至此夹攒,系統(tǒng)將交由init進(jìn)行管理蜘醋;
4、init 初始化
? ? ? ? init 主要是進(jìn)行軟件環(huán)境初始化咏尝,它會讀取配置文件/init/inittab(cent5/6)或systemd(centos7)压语,讀取默認(rèn)運(yùn)行級別;運(yùn)行 /etc/rc.d/rc.sysinit 進(jìn)行系統(tǒng)初始化编检;關(guān)閉相應(yīng)級別的需要停止的服務(wù),啟動對應(yīng)級別下需要開啟的服務(wù)--->設(shè)置登錄終端胎食;至此,系統(tǒng)啟動完畢允懂。斥季。。