1、POST : 加電自檢
? ? ? ? 當給計算機上電,主板上的CMOS芯片獲得電源,會執(zhí)行其上的BIOS(基本輸入輸出系統(tǒng)Basic I/O System)程序 。BIOS程序會根據(jù)CMOS上的硬件配置信息,去檢查硬件是否存在及是否能正常工作,最后進行硬件初始化。
2、加載bootloader
? ? ? ? 根據(jù)啟動順序找到第一個可以啟動的磁盤,加載其MBR中的BootLoader ; BootLoader就是將內核加載至內存中、解壓展開。
? ? ? ? 由于MBR只有512byte,Bootloader占用前446bytes,這么小的空間不可能放置很多的程序,所以Bootloader(grub)就分為3個階段(stage)完成:
? ? ? ? stage1: 加載Bootloader的主程序(位于MBR中)用于加載stage 1.5的代碼;
? ? ? ? stage1.5: 位于MBR之后的扇區(qū),讓statge1中的bootloader能夠識別stage2所在的分區(qū)文件系統(tǒng);
? ? ? ? stage2:通過Bootloader加載所有的配置文件及相關參數(shù),這些參數(shù)都位于磁盤/boot/grub中;
3、內核初始化
? ? ? ?此時BootLoader需要將內核程序加載至內存,并進行解壓,展開,控制權也移交給內核;內核需要檢測硬件設備,并加載硬件驅動;但是內核程序本身也是放在硬盤的/boot分區(qū)上,這就需要先加載硬盤驅動;
? ? ? ?此時就需要一個臨時根文件系統(tǒng)代替一個真正的文件系統(tǒng)行使權力,即initrd.? ?Bootloader會將initrd程序加載至內存,initrd會模擬出一個虛擬的根文件系統(tǒng),這樣就可以加載硬件驅動等啟動過程中需要的程序,加載完成后,并完成根切換;然后內核運行用戶空間第一個程序/sbin/init ,至此,系統(tǒng)將交由init進行管理;
4、init 初始化
? ? ? ? init 主要是進行軟件環(huán)境初始化,它會讀取配置文件/init/inittab(cent5/6)或systemd(centos7),讀取默認運行級別;運行 /etc/rc.d/rc.sysinit 進行系統(tǒng)初始化;關閉相應級別的需要停止的服務,啟動對應級別下需要開啟的服務--->設置登錄終端;至此,系統(tǒng)啟動完畢。。。