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