linux內(nèi)核啟動(dòng)流程總結(jié).docx

linux內(nèi)核啟動(dòng)流程總結(jié).docx

ID:52521432

大?。?11.18 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2020-03-28

linux內(nèi)核啟動(dòng)流程總結(jié).docx_第1頁(yè)
linux內(nèi)核啟動(dòng)流程總結(jié).docx_第2頁(yè)
linux內(nèi)核啟動(dòng)流程總結(jié).docx_第3頁(yè)
linux內(nèi)核啟動(dòng)流程總結(jié).docx_第4頁(yè)
linux內(nèi)核啟動(dòng)流程總結(jié).docx_第5頁(yè)
資源描述:

《linux內(nèi)核啟動(dòng)流程總結(jié).docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、X86體系結(jié)構(gòu)內(nèi)核啟動(dòng)分析一、硬件檢測(cè)當(dāng)機(jī)器加電后它首先執(zhí)行BIOS(基本輸入輸出系統(tǒng))中的代碼,BIOS首先執(zhí)行加電自檢程序(POST),當(dāng)自檢通過(guò)程便完成了硬件的啟動(dòng)。當(dāng)自檢完成后BIOS按照系統(tǒng)COMS中設(shè)置的啟動(dòng)順序搜尋有效的啟動(dòng)驅(qū)動(dòng)器(這里我們以硬盤為例),并讀入系統(tǒng)引導(dǎo)扇區(qū),并將系統(tǒng)控制權(quán)交給引導(dǎo)程序。二、加載和執(zhí)行引導(dǎo)程序系統(tǒng)引導(dǎo)程序主要是把系統(tǒng)內(nèi)核裝載到內(nèi)存,啟動(dòng)盤必須在第一個(gè)邏輯磁道上包含引導(dǎo)記錄。這512個(gè)字節(jié)的扇區(qū)又被稱作是引導(dǎo)扇區(qū),在系統(tǒng)完成加電自檢后,BIOS從啟動(dòng)盤中將引導(dǎo)扇區(qū)讀入到內(nèi)存中。一旦

2、引導(dǎo)記錄加載完畢,BIOS就交出系統(tǒng)的執(zhí)行控制權(quán),跳轉(zhuǎn)到引導(dǎo)程序的頭部執(zhí)行。有關(guān)linuxpc的引導(dǎo)程序lilo和grub,lilo和grub可以引導(dǎo)多個(gè)系統(tǒng),嵌入式系統(tǒng)上,最常見的bootloader是UBOOT,如果機(jī)器上要裝多系統(tǒng)的話一般都會(huì)用到它們,這一引導(dǎo)程序也儲(chǔ)存在引導(dǎo)扇區(qū)中或者存放在主引導(dǎo)記錄中(MBR),lilo和grub都許允用戶自己配置,它們?cè)谙到y(tǒng)安裝時(shí)建立了關(guān)于系統(tǒng)內(nèi)核占用磁盤數(shù)據(jù)塊的位置對(duì)照表。比如,grub程序就非常強(qiáng)大。Gurb運(yùn)行后,將初始化設(shè)置內(nèi)核運(yùn)行所需的環(huán)境。然后加載內(nèi)核鏡像。grub磁

3、盤引導(dǎo)全過(guò)程:stage1:grub讀取磁盤第一個(gè)512字節(jié)(硬盤的0道0面1扇區(qū),被稱為MBR(主引導(dǎo)記錄),也稱為bootsect)。MBR由一部分bootloader的引導(dǎo)代碼、分區(qū)表和魔數(shù)三部分組成。stage1_5:識(shí)別各種不同的文件系統(tǒng)格式。這使得grub識(shí)別到文件系統(tǒng)。stage2:加載系統(tǒng)引導(dǎo)菜單(/boot/grub/menu.lst或grub.lst根據(jù)grub版本不同文件位置會(huì)有所不同),加載內(nèi)核vmlinuz和RAM磁盤initrd。有時(shí)候基本引導(dǎo)裝載程序(stage1)不能識(shí)別stage2所在的文

4、件系統(tǒng)分區(qū),那么這時(shí)候就需要stage1.5來(lái)連接stage1和stage2了假設(shè)有如下grub配置代碼root(hd0,0)//grub分區(qū)kernel/vmlinuz‐2.6.35.10‐74.fc14.i686roroot=/dev/ram0//linux分區(qū)initrd/initramfs‐2.6.35.10‐74.fc14.i686.img要搞清楚上面兩個(gè)root的關(guān)系,root(hd0,0)中的root是grub命令,它用來(lái)指定boot所在的分區(qū)作為grub的根目錄.而root=/dev/ram0是kernel

5、的參數(shù),它告訴操作系統(tǒng)內(nèi)核加載完畢之后,真實(shí)的文件系統(tǒng)所在的設(shè)備.要注意grub的根目錄和文件系統(tǒng)的根目錄的區(qū)別。kernel命令用來(lái)指定內(nèi)核所在的位置,"/"代表(hd0,0),也就是grub的根目錄initrd命令用來(lái)指定初始化ram的img文件所在位置。三、內(nèi)核啟動(dòng)內(nèi)核映像文件vmlinuz:包含有l(wèi)inux內(nèi)核的靜態(tài)鏈接的可執(zhí)行文件,傳統(tǒng)上,vmlinux被稱為可引導(dǎo)的內(nèi)核鏡像。vmlinuz是vmlinux的壓縮文件。其構(gòu)成如下:(1)第一個(gè)512字節(jié)(以前是在arch/i386/boot/bootsect.S)

6、?(2)第二個(gè),一段代碼,若干個(gè)不多于512字節(jié)的段(以前是在arch/i386/boot/setup.S)?(3)保護(hù)模式下的內(nèi)核代碼(在arch/x86/boot/main.c)。bzImage文件:使用makebzImage命令編譯內(nèi)核源代碼,可以得到采用zlib算法壓縮的zImage文件,即bigzImage文件。老的zImage解壓縮內(nèi)核到低端內(nèi)存,bzImage則解壓縮內(nèi)核到高端內(nèi)存(1M(0x)以上),在保護(hù)模式下執(zhí)行。bzImage文件一般包含有vmlinuz、bootsect.o、setup.o、解壓縮程

7、序misc.o、以及其他一些相關(guān)文件(如piggy.o)。注意,在Linux2.6內(nèi)核中,bootsect.S和setup.S被整合為header.S。initramfs(或initrd)文件:initrd是initializedramdisk的意思。主要用于加載硬件驅(qū)動(dòng)模塊,輔助內(nèi)核的啟動(dòng),掛載真正的根文件系統(tǒng)。裝載Linux內(nèi)核的第一步應(yīng)該是加載實(shí)模式代碼(bootsector和setup代碼),grub就會(huì)把實(shí)模式代碼setup加載到0x07C00之上的某個(gè)地址上,其中setup的前512個(gè)字節(jié)是bootsector

8、(引導(dǎo)扇區(qū)),現(xiàn)在這個(gè)引導(dǎo)扇區(qū)的作用并不是用來(lái)引導(dǎo)系統(tǒng),而是為了兼容及傳遞一些參數(shù)。之后grub跳轉(zhuǎn)到setup的入口點(diǎn),入口點(diǎn)為_start例程(根據(jù)arch/x86/boot/setup.ld可知)。然后setup最后跳到arch/x86/boot/main.c再經(jīng)過(guò)一系列的跳轉(zhuǎn),跳到start_k

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。