如流程圖所示,RHEL的啟動過程按步驟大致可以分為:
POST加電自檢-->BIOS(Boot Sequence)-->加載對應(yīng)引導上的MBR(bootloader) -->主引導設(shè)置加載其BootLoader-->Kernel初始化-->initrd—>/etc/init進程加載/etc/inittab
從加載BootLoader(RHEL下為Grub)開始,會發(fā)生以下事情.
1. 藉由Grub的管理,讀取Kernel內(nèi)核文件(/boot/vmlinuz),解壓至主內(nèi)存,利用內(nèi)核的功能,進行第二次硬件檢測(第一次發(fā)生在POST開機自檢時)
2. 加載Initial RAM Disk(/boot/initrd),使之在內(nèi)存中解壓縮為根目錄,kernel藉此完成驅(qū)動程序的加載,,最終釋放虛擬文件系統(tǒng),并掛載實際的根目錄文件系統(tǒng).
3. 在核心加載完畢,進行完硬件偵測與驅(qū)動程序加載后,內(nèi)核會啟動第一個進程/sbin/init, init進程將會讀取/etc/inittab,在/etc/inittab中,大致規(guī)定了以下動作:
取得 runlevel 亦即默認運行等級的相關(guān)等級.
使用 /etc/rc.d/rc.sysinit 進行系統(tǒng)初始化
根據(jù)runlevel調(diào)用相關(guān)啟動腳本,以啟動相應(yīng)的系統(tǒng)服務(wù)
其他一些系統(tǒng)設(shè)置,最終完成系統(tǒng)啟動.
/sbin/init 最主要的功能就是準備軟件運行的環(huán)境,包括系統(tǒng)的主機名稱、網(wǎng)絡(luò)配置、語系處理、文件系統(tǒng)格式及其他服務(wù)的啟動等,而所有的動作都根據(jù)在/etc/inittab中的配置.
/etc/rc.d, 里面存放了rc.local, rc.sysinit, init.d, rcX.d (X包括0-6對應(yīng)相對runlevel)
/etc/rc.d/init.d, 存放了各種系統(tǒng)服務(wù)的啟動關(guān)閉的管理腳本,/etc/init.d是他的一個目錄鏈接.
/etc/rc.d/rcX.d, 里面存放了一些腳本,腳本名字以K開頭的,表示STOP動作,名字以S開頭,表示Start動作,名稱中的數(shù)字表示執(zhí)行次序,數(shù)字越小表示越先執(zhí)行.
/etc/rcX.d是他的目錄鏈接,但事實上rcX.d下文件本身就是指向/etc/rc.d/init.d下腳本的鏈接文件.
/etc/rc.d/rc.local, 有一個鏈接文件,路徑在/etc/rc.local,
系統(tǒng)根據(jù)runlevel啟動完rcX.d中的腳本之后,會調(diào)用rc.local腳本,如果你有一個腳本命令不論在3和5都想開機啟動,那么就添加于此,免去rc3.d和rc5.d分別增加啟動腳本工作量.
更多信息請查看IT技術(shù)專欄