linux啟動流程概述

2021-06-02 03:25:31 字數 1778 閱讀 8920

參考:《鳥哥的linux私房菜》

主機板上的bios為塊flash或eeprom程式,他會從主機板上的cmos硬體資訊,這些硬體資訊是可以通過bios程式修改。、、

bios進行啟動自我測試(power-on self test,post),然後開始執行硬體偵測的初始化,並配置pnp裝置,之後定義出可啟動裝置。即

根據bios中設定的啟動目標裝置(硬碟還是u盤還是光碟),進入階段2

讀取並執行配置的第乙個啟動裝置中mbr去的的boot loader(即grub,spfdisk等程式),由於每個檔案系統(filesystem和分割槽並不等價,參見鳥哥的linxu私房菜)第乙個扇區為啟動扇區(boot sector)(512bytes),而啟動扇區中包含mbr(446bytes)和分割表(partition table)(64byte),由於mbr大小的限制,例如grub 的配置檔案就只能放在mbr之外的地方了。

boot loader轉移控制權給kernel

核心解壓縮到主存當中,並開始測試與驅動各個周邊裝置,而不一定會使用ibiso偵測到的硬體資訊。

/boot分割槽的掛載是通過bios實現,當控制權交給boot loader,由於kernel在/boot分割槽中,可以直接掛載,但kernel需要動態載入核心模組(可以理解為驅動程式),而核心某塊一般在/目錄中,而/目錄的分割槽還沒有掛載,但此時核心是沒法識別硬碟的,這就需要虛擬檔案系統(inital ram disk,initrd)來幫助載入核心模組。

而虛擬檔案系統同樣是位於/boot,是透過bios載入的,等解壓縮到記憶體中,會模擬根目錄,並提供乙隻可執行的程式來載入核心模組。

linux核心初始化各種硬體以後,linux計入保護模式(protected mode)載入作業系統,然後初始化各種核心資料結構像i-node和檔案表(file tables)等,這個程序pid為0

它建立init程序(pid為1),即執行/sbin/init程式(乙隻可執行程式),

init的處理流程的配置在/etc/inittab檔案中(不過在fedora15中性的啟動方式systemd啟動被使用,不再使用下面的/etc/inittab檔案,關於systemd參考這裡

)關於/etc/inittab檔案的配置參見

鳥哥的linux私房菜,該檔案配置了是否預設runlevel,以及該級別需要執行哪些程式,以及圖形終端是否開啟,tty情況等。

runlevel(來自鳥哥的linux私房菜):

事實上 /etc/inittab 的配置也有點類似 shell script 啦,因為該檔案內容的配置也是一行一行的從上往下處理的, 因此我們可以知道 centos 的 init 依據 inittab 配置的處理流程會是:

先取得 runlevel 亦即預設執行等級的相關等級 (以鳥哥的測試機為例,為 5 號);

使用 /etc/rc.d/rc.sysinit 進行系統初始化

由於 runlevel 是 5 ,因此只進行『l5:5:wait:/etc/rc.d/rc 5』,其他行則略過

配置好 [ctrl]+[alt]+[del] 這組的組合鍵功能

配置不斷電系統的 pf, pr 兩種機制;

啟動 mingetty 的六個終端機 (tty1 ~ tty6)

最終以 /etc/x11/perfdm -nodaemon 啟**形介面啦

這裡每個過程更進一步的細節,請參考

鳥哥的linux私房菜

在login提示符下,按下,gettry程序建立乙個子程序(名字是你輸入的登入名),提示輸入密碼並驗證。如果正確,則該子程序再建立乙個子程序(它將轉變成你的登入shell);如果驗證失敗,該子程序終止,控制權重新回到getty.

uboot啟動流程概述 uboot啟動流程

u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...

linux啟動流程

linux系統主要通過以下步驟啟動 讀取mbr的資訊,啟動boot manager windows使用ntldr作為boot manager,如果您的系統中安裝多個版本的windows,您就需要在ntldr中選擇您要進入的系統。linux通常使用功能強大,配置靈活的grub作為boot manage...

linux啟動流程

bios basic input output system mbr main boot record kernel kernel自解壓 核心初始化 核心啟動 start kernel 自身為0 程序,建立1 程序執行,直接執行在物理記憶體空間上,沒有虛位址。1 程序裝入並執行程式 sbin ini...