Linux系統啓動流程

一、CentOS 5啓動流程圖  

wKioL1XoC7LwbdKbAAIc9DmMSak865.jpg

二、CentOS系統啓動流程詳解

 概述:  POST --> BIOS (Boot Sequence) --> MBR(bootloader)--> Kernel (CentOS5: initrd, CentOS6: initramfs)--> /sbin/init(CentOS5:/etc/inittab, CentOS6:/etc/inittab, /etc/init/*.conf)-->/etc/rc.d/sysinit/--> 關閉和啓用對應級別下的服務-->啓動終端


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。


Kernel(初始化):內核會主動調用用戶空間的init進程,讀取配置文件 /etc/inittab,決定啓動級別,運行初始化腳本/etc/rc.d/rc.sysinit

探測硬件->加載驅動(initrd)->掛載根文件系統->rootfs(/sbin/init)

initrd就是一個虛擬的文件系統,裏面有lib、lib64、bin、sbin、usr、proc、sys、var、dev、boot、etc等一些目錄,稱之爲虛擬的根文件系統,作用就是將kernel和真的根文件系統建立關聯關係,讓kernel去initrd中加載根文件系統所需要的驅動程序,並以讀寫的方式掛載根文件系統,並讓執行用戶當中第一個進程init。


/etc/inittab

/sbin/init啓動會用到/etc/inittab所定義的條目,如:默認登陸級別id:3:initdefault:

可以使用runlevel或who -r命令來查看當前系統運行的級別 


/etc/rc.d/rc.sysinit 系統初始化腳本    

設置主機名     /etc/sysconfig/network 

設置歡迎信息

激活udev和selinux

掛載/etc/fstab文件中定義的文件系統  (mount命令)

檢測根文件系統,並以讀寫重新掛載

設置系統時鐘

激活swap設備

/etc/sysctl.conf文件設置內核參數

激活lvm及軟raid設備

加載額外設備的驅動程序

清理操作


根據/etc/rc.d/rc腳本運行對應級別下啓用或停止的服務;

服務所在目錄/etc/rc.d/rc.#.d/*  #對應運行級別0-6

0關機
1單用戶模式(root,無需登錄,使用passwd可直接修改root密碼),single,維護模式;
2多用戶模式,會啓動網絡功能,但不會啓動網絡文件系統NFS;維護模式
3多用戶模式,正常模式;文本界面
4預留級別
5多用戶模式,正常模式;圖形界面
6重啓

注意:正常級別下,最後啓動供應服務S99local沒有鏈接至/etc/rc.d/init.d一個服務腳本,而是指向了/etc/rc.d/rc.local腳本,因此,不便或不需寫入服務腳本放置於/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置於/etc/rc.d/rc.local文件中


設置 終端   /sbin/mingetty    (/etc/inittab中定義的) 

wKioL1XoFyDDKWktAADeT6KmUc4615.jpg

[配置項目]:[run level]:[init 的動作行爲]:[命令項目]

1、配置項目:最多四個字節,代表 init 的主要工作項目,只是一個簡單的代表說明。

2、run level:該項目在哪些 run level 底下進行的意思。

        如果是 35 則代表 runlevel 3 與 5 都會運行。

3、init 的動作項目:主要可以進行的動作項目意義有:

inittab 配置值意義說明
initdefault代表默認的 run level 配置值
sysinit代表系統初始化的動作項目
ctrlaltdel代表 [ctrl]+[alt]+[del] 三個按鍵是否可以重新啓動的配置
wait代表後面欄位配置的命令項目必須要運行完畢才能繼續底下其他的動作
respawn代表後面欄位的命令可以無限制的再生 (重新啓動)。舉例來說, tty1 的 mingetty 產生的可登陸畫面, 在你註銷而結束後,系統會再開一個新的可登陸畫面等待下一個登陸。

4、命令項目:亦即應該可以進行的命令



三、CentOS 6與CentOS 5不同的地方

init程序類型:

Centos5     init程序爲:sysv,其配置文件:/etc/inittab

Centos6     init程序爲:upstart ,其配置文件:/etc/inittab, /etc/init/*.conf

                注意:/etc/init/*.confi文件語法 遵循 upstart 配置文件語法格式     


ramdisk :  內核中的特性之一:使用緩存和緩存對磁盤上的文件訪問

 Centos5     initrd ,工具程序 : mkinitrd             

 Centos6     initramfs ,工具程序: mkinitrd,dracut



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章