CentOS系統(tǒng)啟動流程
POST(加電自檢):檢測硬件 在CPU的控制下,將RAM芯片中的某個程序映射到ROM地址空間,并執(zhí)行其中的指令完成系統(tǒng)硬件健康狀況檢查,例如存儲設(shè)備、網(wǎng)卡、CPU、聲卡等硬件設(shè)備是否完好。當(dāng)檢查完成后,所有硬件或基本硬件、核心硬件沒有問題,則下一個啟動流程BIOS BIOS(Boot Sequence):決定啟動介質(zhì) 按照BIOS所設(shè)定的系統(tǒng)啟動流程,根據(jù)引導(dǎo)次序(Boot Sequence)自上而下的尋找對應(yīng)存儲設(shè)備上操作系統(tǒng)的MBR(全稱為Master Boot Record即硬盤的主引導(dǎo)記錄),如果MBR存在,則會讀取MBR中的bootloader MBR(bootloader):尋找 grub,讀取配置文件/etc/grub.conf,決定默認(rèn)啟動項 根據(jù)MBR所指引的活動分區(qū)上尋找系統(tǒng)分區(qū)中的 bootloader,bootloader稱為是一段程序,占據(jù)446字節(jié)。在bootloader當(dāng)中配置了所要引導(dǎo)操作系統(tǒng)的內(nèi)核所在的位置,因此BIOS被載入內(nèi)存以后,當(dāng)它實現(xiàn)將控制權(quán)限轉(zhuǎn)交給bootloader以后,bootloader接收整個系統(tǒng)的控制權(quán)限,而后根據(jù)用戶的選擇去讀取相應(yīng)操作系統(tǒng)中的內(nèi)核,并將內(nèi)核裝載入內(nèi)存的某個空間位置,解壓縮,這時kernel就可以在內(nèi)存中活動,并根據(jù)kernel本身功能在內(nèi)存當(dāng)中探索硬件并加載硬件驅(qū)動程序并完成內(nèi)核初始化,bootloader會將控制權(quán)限轉(zhuǎn)交給內(nèi)核。 Kernel(初始化):內(nèi)核會主動調(diào)用init進程,讀取配置文件 /etc/inittab,決定啟動級別,運行初始化腳本/etc/rc.d/rc.sysinit 探測硬件->加載驅(qū)動(initrd)->掛載根文件系統(tǒng)->rootfs(/sbin/init) initrd就是一個虛擬的文件系統(tǒng),里面有/、lib、bin、sbin、usr、proc、sys、var、dev、boot等一些目錄,我們稱之為虛擬的根文件系統(tǒng),作用就是將kernel和真的根文件系統(tǒng)建立關(guān)聯(lián)關(guān)系,讓kernel去initrd中加載根文件系統(tǒng)所需要的驅(qū)動程序,并以讀寫的方式掛載根文件系統(tǒng),并讓執(zhí)行用戶當(dāng)中第一個進程init。 /etc/inittab /sbin/init啟動會用到/etc/inittab所定義的條目,如:默認(rèn)登陸級別id:3:initdefault:, /etc/inittabt運行級別:
0 | halt | 1 | single user mode(單用戶維護模式) | 2 | multi user mode, without NFS(不支持NFS功能) | 3 | multi user mode, text mode(字符界面) | 4 | reserved (系統(tǒng)保留) | 5 | multi user mode, graphic mode (圖形化界面) | 6 | reboot (重啟) |
系統(tǒng)初始化(/etc/rc.d/rc.sysinit) 檢測,并以讀寫方式掛載根文件系統(tǒng) 設(shè)定主機名 檢測并掛載/etc/fstab中其它文件系統(tǒng) 啟動swap分區(qū) 初始化外圍硬件設(shè)備驅(qū)動 根據(jù)/etc/sysctl.conf設(shè)定內(nèi)核參數(shù) 激活udev和selinux 激活LVM和RAID設(shè)備 清理過期鎖文件和PID文件 裝載鍵映射-->鍵盤上每個鍵的功能
/etc/grub.conf文件說明
本文出自 “過程就是為了實現(xiàn)結(jié)果” 博客,請務(wù)必保留此出處http://justinpeng.blog.51cto.com/7662323/1310465
|