Linux系統初始化流程(簡述)

1,POST [power on self test]: 接通電源後,CPU通過出廠指定的存儲地址讀取代碼[主板芯片上的ROM],然後測試內存,風扇,顯示設備等是否正常,並通過BOIS的Boot Sequence設定的啓動次序(此時磁盤設備在硬件平臺上被主板等其他組件所識別,硬盤設備可以是硬盤,U盤,光盤等,可以從這些磁盤設備上啓動OS)加載選定的那個磁盤設備第0磁道第0扇區的MBR。

 

2,MBR(512bytes)組成:446 --> bytes bootloader;64bytes --> 分區表;2bytes -->特殊標記

其中bootloader主要功能如下:

1)選定啓動的操作系統

2)加載內核和給內核提供根的驅動模塊文件initrd ,此文件被同時加載到內存中,它其實就是一個虛擬的根文件系統,內核把此文件當磁盤用),此模塊和壓縮的kernel文件放在同一個基本磁盤分區上。

bootloader是在安裝系統時os安裝到自己的文件系統中,而GRUB引導程序在此時會被啓動。

GRUB具體分三個引導階段:

1st stage:位於MBR中,爲了引導2nd stage

1.5 stage:位於boot基本磁盤分區中,爲識別內核文件所在的文件系統提供文件系統識別擴展

2nd stage:位於boot基本磁盤分區中,GRUB的引導程序,當stage2被加載時,GRUB根據請求的情況顯示一個內核清單(/etc/grub.conf中定義)

如下圖:

wKiom1U7lqHRwVEmAAJk17Opjeg115.jpg       在grub目錄下

wKioL1U7mYrxDGIJAAPKhCKajrU677.jpg       Grub的功能

1、選擇要啓動的內核或系統;

能隱藏選擇界面

2、交互式接口

e: 編輯模式

3、基於密碼保護

啓用內核映像

定義在相應的title下

傳遞參數(進入編輯模式)

定義在全局段中

下圖grub.conf基本內容:

wKioL1U7m9HxOrVEAAP7r9nNxVc450.jpg

 

3,kernel文件加載到內存中後自解壓,並識別initrd文件在內存中仿真的僞文件系統,加載驅動模塊(運行/linuxrc或者/init腳本,sysroot下的真正根文件系統設備掛載到/下,初始根文件系統掛載到initrd/下,然後釋放虛擬文件系統),掛載真正意義上的根目錄文件系統並啓動第一個用戶級進程 init 進程。

 

4,內核主動調用第一個進程/sbin/init。其主要功能是準備軟件執行的環境,包括系統主機名,網絡設置,語系處理,文件系統格式及其他服務的啓動等。
init會讀取/etc/inittab的配置文件。inittab定義了init的處理流程,其流程是:
1、取得runlevel即默認執行等級的相關等級
2、使用/etc/rc.d/rc.sysinit進行系統初始化,其主要工作是設置好整個系統的環境。
3、確認啓動進入級別,通過/etc/rc.d/rc根據啓動的級別來決定啓動的服務選項,
4、執行用戶自定義開機啓動程序/etc/rc.d/rc.local
5、執行終端機模擬程序mingetty來啓動login進程,等待用戶登入

 

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