內核級別:
1、POST開機加電自檢
BIOS加載CMOS信息并進行開機自檢,檢測硬件設備是否正常并進行硬件設備初始化
2、Boot Sequence(BIOS):定義設備啟動順序
BIOS定義設備啟動順序,并讀取啟動設備數據加載硬盤上的第一個扇區MBR。
3、Boot Loader(MBR):bootloader功能實現
Boot Loader提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本,把用戶選定的內核裝載到RAM中的特定的空間中,解壓、展開而后把系統控制權移交給內核。
4、Kernel(ramdisk):內核實現
(1)Linux內核會以自己的功能重新檢測一次硬件,不一定使用BIOS檢測到的信息。
(2)加載硬件驅動程序(啟動過程中所需要的內核模塊,借助ramdisk加載)
(3)以只讀方式掛載根目錄文件系統。(掛載到ramdisk虛擬文件系統上,ramdisk中的/lib/modules下面有真正根的驅動程序。)
(4)運行用戶空間的第一個應用程序:/sbin/init
用戶級別(以Centos5為例)
5、/sbin/init/程序運行(在/etc/inittab設置)
init程序主要依賴于配置文件:/etc/inittab,類似shell script。流程如下:
(1)先去的runlevel即默認執行等級的相關等級;(以5為例)
(2)使用/etc/rc.d/rc.sysinit進行系統初始化;(以下Centos5中有的/etc/inittab有)
(3)由于runlevel是5,因此只進行“5:5:wait:/etc/rc.d/rc5”,其他行則略過;
(4)設置好【ctrl】+【alt】+【del】這組合的組合鍵功能;
(5)設置不斷電系統的pf,pr兩種機制
(6)啟動終端機
以下附上Centos6的圖片:
init處理系統初始化流程(/etc/rc.d/rc.sysinit)
設置好系統環境 (1)設置主機名; (2)設置歡迎信息; (3)激活udev和selinux; (4)掛載/etc/fstab文件中定義的所有文件系統; (5)檢測根文件系統,并以讀寫方式重新掛載根文件系統;(重新掛載是指根文件檢測完之后) (6)設置系統時鐘; (7)根據/etc/sysctl.conf文件來設置內核參數; (8)激活lvm即軟raid設備; (9)激活swap設備; (10)加載額外設備的驅動程序;(內核加載驅動只加載根文件系統的) (11)清理操作; 注意:在init配置文件:/etc/inittab中,有一行內容是定義/etc/rc.d/rc.sysinit,此腳本文件是負責完成系統初始化的腳本文件。
關閉/啟動對應級別下的服務
腳本文件/etc/rc.d/rc作用為當級別切換時啟動或停止服務;此腳本接受傳遞的參數給腳本中$runlevel變量,然后,讀取/etc/rc$runlevel.d/K和/etc/rc$runlevel.d/S所有文件,這些文件就是為什么開機啟動后,有些服務會自動啟動,有些服務沒有啟動的原因。 K:要停止的服務,K##,優先級,數字越小,越優先關閉,依賴的服務先關閉,然后再關閉被依賴的。 S :要啟動的服務,S##*,優先級,數字越小,越是優先啟動,被依賴的服務先啟動,而依賴的服務后啟動。 /etc/rc.d/init.d目錄還有個鏈接目錄為/etc/init.d目錄,這兩目錄下文件相同。
原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/60538
熟練掌握啟動流程和各個步驟在做什么,這是必備技能之一,加油。