RHEL系統啟動流程
POST(加電自檢):檢測硬體
在CPU的控制下,将RAM晶片中的某個程式映射到ROM位址空間,并執行其中的指令完成系統硬體健康狀況檢查,例如儲存設備、網卡、CPU、聲霸卡等硬體裝置是否完好。當檢查完成後,所有硬體或基本硬體、核心硬體沒有問題,則下一個啟動流程BIOS
BIOS(Boot Sequence):決定啟動媒體
按照BIOS所設定的系統啟動流程,根據引導次序(Boot Sequence)自上而下的尋找對應儲存設備上作業系統的MBR(全稱為Master Boot Record即硬碟的主引導記錄),如果MBR存在,則會讀取MBR中的bootloader
MBR(bootloader):尋找 grub,讀取配置檔案/etc/grub.conf,決定預設啟動項
根據MBR所指引的活動分區上尋找系統分區中的 bootloader,bootloader稱為是一段程式,占據446位元組。在bootloader當中配置了所要引導作業系統的核心所在的位置,是以BIOS被載入記憶體以後,當它實作将控制權限轉交給bootloader以後,bootloader接收整個系統的控制權限,而後根據使用者的選擇去讀取相應作業系統中的核心,并将核心裝載入記憶體的某個空間位置,解壓縮,這時kernel就可以在記憶體中活動,并根據kernel本身功能在記憶體當中探索硬體并加載硬體驅動程式并完成核心初始化,bootloader會将控制權限轉交給核心。
Kernel(初始化):核心會主動調用init程序,讀取配置檔案 /etc/inittab,決定啟動級别,運作初始化腳本/etc/rc.d/rc.sysinit
探測硬體->加載驅動(initrd)->挂載根檔案系統->rootfs(/sbin/init)
initrd就是一個虛拟的檔案系統,裡面有/、lib、bin、sbin、usr、proc、sys、var、dev、boot等一些目錄,我們稱之為虛拟的根檔案系統,作用就是将kernel和真的根檔案系統建立關聯關系,讓kernel去initrd中加載根檔案系統所需要的驅動程式,并以讀寫的方式挂載根檔案系統,并讓執行使用者當中第一個程序init。
/etc/inittab
/sbin/init啟動會用到/etc/inittab所定義的條目,如:預設登陸級别id:3:initdefault:,
/etc/inittabt運作級别:
halt
1
single user mode(單使用者維護模式)
2
multi user mode, without NFS(不支援NFS功能)
3
multi user mode, text mode(字元界面)
4
reserved (系統保留)
5
multi user mode, graphic mode (圖形化界面)
6
reboot (重新開機)
系統初始化(/etc/rc.d/rc.sysinit)
檢測,并以讀寫方式挂載根檔案系統
設定主機名
檢測并挂載/etc/fstab中其它檔案系統
啟動swap分區
初始化外圍硬體裝置驅動
根據/etc/sysctl.conf設定核心參數
激活udev和selinux
激活LVM和RAID裝置
清理過期鎖檔案和PID檔案
裝載鍵映射-->鍵盤上每個鍵的功能
/etc/grub.conf檔案說明
<a href="http://blog.51cto.com/attachment/201310/164002155.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201310/102313194.png" target="_blank"></a>
本文轉自 justin_peng 51CTO部落格,原文連結:http://blog.51cto.com/ityunwei2017/1310465,如需轉載請自行聯系原作者