天天看點

linux系統啟動(bootstrap)流程

一、BIOS

1.POST(Power-On Self-Test)

2.初始化硬體裝置

3.搜尋一個作業系統來啟動

4.隻要找到一個有效的裝置,就把第一個扇區的内容拷貝到RAM中從實體位址0x00007c00開始的位置,然後跳轉到這個位址處,開始執行剛剛裝載進來的代碼。

二、Boot Loader:引導裝入程式

boot loader是由BIOS用來把作業系統的核心映像裝載到RAM中所調用的一個程式。引導裝入程式可以指定使用哪個核心檔案來啟動。

從磁盤啟動Linux核心需要一個兩步的引導裝入程式。早起Linux預設使用LInux LOader(LILO),主流的為GRand Unified Bootloader(GRUB),還有人用spfdisk

三、setup()

setup()函數必須初始化計算機中硬體裝置,并為核心程式的執行建立環境。

四、startup_32()

有兩個startup_32()函數

arch/i386/boot/compresed/head.S

arch/i386/kernel/head.S

這兩個函數使用相同的名字不會産生任何問題,因為這兩個函數會跳轉到自己的起始實體位址去執行。

五、start_kernel()

start_kernel()函數完成Linux核心的初始化工作。

最後就會在控制台上出現熟悉的登入提示符~\^v^/~