主板加電,系統自動載入BIOS(Basic Input Output System)系統linux
BIOS載入CMOS,讀取CMOS中設定的硬件工做參數操作系統
BIOS進行POST自檢,對各類硬件設備進行檢測.進程
BIOS進行硬件檢測的初始化內存
BIOS定義開機設備順序源碼
操做系統啓動的第一個重要部分是核心的啓動.而核心的啓動須要讓系統知道核心在哪裏.it
這時須要Boot loader來實現核心的載入.ast
因此BIOS下一步是找到Boot loader並啓動.配置
一般Boot loader是被固定裝載在啓動磁盤的第1個扇區(sector)的512字節範圍內終端
這512字節的區域的名字就叫作MBR(Master Boot Record,主引導記錄)硬件
linux 5,6使用的Boot loader的名字就叫grub
但因爲其特殊性,grub的組成部分是被分散安裝在磁盤的多個區域的.第一個扇區512字節中的446字節就是grub的stage1內容.
MBR就是stage1就是第一扇區,其中內容很是簡單,僅僅是告訴BIOS,去加載第二扇區的內容並執行
簡單來講第二扇區的內容也很簡單,就是去讀第三扇區的stage1.5,執行第三扇區內容後,內存中就有了文件系統支撐代碼,此時便可以經過文件系統查找文件了.
第二扇區的內容有兩種狀況
1)內容是grub的stage1.5,stage1.5的內容與/boot/grub/xxx_stage1_5文件源碼的開頭512字節內容相同,xxx是什麼取決於啓動磁盤的文件系統,好比e2fs_stage1_5.而這部份內容的做用就是取出第三扇區以後的部份內容,這些內容即是文件系統支撐代碼,因而當stage1.5被執行後,系統即可以識別文件系統,並經過文件系統訪問磁盤文件了.此後會讀取/boot/grub/stage2文件將stage2文件載入系統並執行.
2)第二扇區直接加載存放在/boot分區啓動扇區的stage2而不是/boot/grub/stage2.此時如/boot/grub/stage2丟失,也不會影響啓動.系統默認是這個模式,修復grub時,在grub交互式模式中,使用install命令能夠恢復這種模式.
一般咱們作實驗時第一次刪除了/boot/grub/stage2文件後,系統是能夠正常啓動的.由於默認是上面第二種狀況,而一般咱們修復的時候使用了grub三種安裝方式中的前兩種比較快捷方便的方法即: 1.grub-install 2.grub>setup ,而這兩種方法會把第二扇區恢復爲上面的第一種狀況.這時若是再刪除/boot/grub/stage2文件,則沒法啓動而且會報 error 15 錯誤. 若是想恢復到第二種模式,須要使用grub的install命令,即grub的第3種安裝方法,grub>install. 具體使用方法能夠gg暫不詳述.
系統執行stage2,stage2會經過grub.conf配置文件生成啓動菜單並讀取內核,initrd,解壓縮並載入內存.
此時內核已啓動,開始檢測硬件,但後續的工做還須要initrd來協助.initrd是一個基於內存的虛擬文件系統 (Initial RAM Filesystem) 在Centos5上的具體文件名爲 /boot/initrd ,Centos 6中爲 /boot/initramfs ,執行後會生成一個臨時根目錄,裏面包含了除集成在kernel之外的,當前系統所需的各類驅動程序.系統會加載這些驅動,最後釋放這個虛擬文件系統,切換到真正的根上並執行系統1號進程/sbin/init.
init讀取配置文件/etc/inittab,按照配置文件執行一系列初始化操做
1.初始化腳本/etc/rc.d/rc.sysinit
(1) 設置主機名
(2) 設置歡迎信息
(3) 激活udev和selinux
(4) 掛載/etc/fstab文件中定義的文件系統
(5) 檢測根文件系統,並以讀寫方式從新掛載根文件系統
(6) 設置系統時鐘
(7) 激活swap設備
(8) 根據/etc/sysctl.conf文件設置內核參數
(9) 激活lvm及software raid設備
(10) 加載額外設備的驅動程序
(11) 清理操做
2.肯定運行級別
3.運行/etc/rc.d/rcN.d/下的服務,N爲數字,對應準備啓動的系統運行級別,裏面的內容爲K和S開頭的指向/etc/rc.d/init.d目錄下的服務腳本.S開頭爲開機啓動的服務,K開頭的爲關閉當前運行模式時運行須要執行的腳本(切換模式,關機等),S或K後面的數字越小,優先級越高.
4.運行/etc/rc.d/rc.local腳本,這個腳本是用戶自定義執行腳本,S99local就是rc.local的軟鏈接.
5.最後執行終端或X-window.以後用戶即可以登錄