歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> Linux內核的引導過程

Linux內核的引導過程

日期:2017/2/28 16:14:49   编辑:Linux內核

總體上來講:

BIOS->MBR->GRUB(LILO)->內核->用戶空間

1. 系統上電時,cpu會將pc指針賦值為一個特定的地址0xffff0, 並且執行該地址處的指令。在pc中,該地址位於BIOS中。

2. BIOS按照CMOS中設定的啟動順序來搜索處於活動狀態的,可以引導的設備。如果是硬盤,則讀取MBR(512)個字節到RAM中,並將控制權交給這段程序。

3. 主引導加載程序查找並加載次引導加載程序。它在分區表中查找活動分區,當找到一個活動分區時,掃描其他分區,以確保它們不是活動的。當這個過程完成之後,將這個活動分區的引導記錄讀入RAM並執行它。

4. 次引導加載程序加載Linux內核和可選的初始RAMdisk, 並將控制權交給Linux內核。

5. 運行被加載的內核,並啟動用戶空間應用程序。

內核啟動到用戶空間的流程如下:

start() : /arch/i386/boot/head.S 基本的硬件設置

startup_32(): /arch/i386/boot/compress/head.S 初始化頁表,啟動內層分頁機制。

decompress_kernel(): /arch/i386/boot/compress/misc.c

startup_32();

start_kernel(): /init/main.c 初始化中斷,進一步設置內存

cpu_idle(): /init/main.c

Copyright © Linux教程網 All Rights Reserved