版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、linux系統(tǒng)啟動過程分析下資料3、linux系統(tǒng)啟動過程分析(下)資料第二節(jié) Linux0.01啟動分析n引導(dǎo)過程的描述n引導(dǎo)流程和內(nèi)核鏡像文件n計算機(jī)加電過程nBIOSn操作系統(tǒng)引導(dǎo)部分代碼的分析n的分析n的分析n的作用n AT&T匯編語言初步引導(dǎo)過程的描述n引導(dǎo)流程和內(nèi)核鏡像文件n計算機(jī)加電過程nBIOS程序引導(dǎo)的步驟一般來說,操作系統(tǒng)的引導(dǎo)過程分兩個步驟:n首先,計算機(jī)硬件經(jīng)過開機(jī)自檢(Power On Self-Test,POST)之后,從軟盤或硬盤的固定位置裝載一小段代碼,這段代碼一般稱為“引導(dǎo)裝載器”。n然后,由引導(dǎo)裝載器負(fù)責(zé)裝入操作系統(tǒng)內(nèi)核鏡像文件內(nèi)核鏡像文件并將控制權(quán)
2、交給操 作 系 統(tǒng) 進(jìn) 行 進(jìn) 一 步 的 初 始 化 和 運 行 操 作 系 統(tǒng)n引導(dǎo)裝載器非常小,一般只有幾百個字節(jié),而操作系統(tǒng)龐大而復(fù)雜,上述分成兩階段的引導(dǎo)過程,可將計算機(jī)中的固化軟件保持得足夠小,同時也便于實現(xiàn)對不同操作系統(tǒng)的引導(dǎo)。Linux0. 01內(nèi)核鏡像文件n由程序生成n寫入到磁盤(make disk & dd)計算機(jī)加電過程n當(dāng)機(jī)算機(jī)的電源鍵被按下時,同這個鍵相聯(lián)的電信號線就會送出一個電信號給主板,主板將此電信號傳給供電系統(tǒng),供電系統(tǒng)開始工作,為整個系統(tǒng)供電,并送出一個電信號給BIOS,通知BIOS 供電系統(tǒng)已經(jīng)準(zhǔn)備完畢。隨后BIOS 啟動一個程序,進(jìn)行主機(jī)自檢,主機(jī)
3、自檢的主要工作是確保系統(tǒng)的每一個部分都得到了電源支持,內(nèi)存儲器、主板上的其它芯片、鍵盤、鼠標(biāo)、磁盤控制器及一些I/O 端口正常可用,此后,自檢程序?qū)⒖刂茩?quán)還給BIOS。n接下來BIOS 讀取BIOS 設(shè)置,得到引導(dǎo)驅(qū)動器的順序,然后依次檢查,直到找到可以用來引導(dǎo)的驅(qū)動器(或說可以用來引導(dǎo)的磁盤,包括軟盤、硬盤、光盤等),然后調(diào)用這個驅(qū)動器上磁盤的引導(dǎo)扇區(qū)進(jìn)行引導(dǎo)?;据斎胼敵鱿到y(tǒng)BIOS n存放在ROM中的BIOS程序執(zhí)行開機(jī)是系統(tǒng)個部分自檢,經(jīng)過一系列操作之后,BIOS會將有關(guān)代碼和數(shù)據(jù)存放在內(nèi)存低端1MB末端的64KB處,然后跳轉(zhuǎn)到這個地方讓CPU進(jìn)入實地址模式工作n將內(nèi)核文件加載到內(nèi)存后
4、,LINUX不再使用BIOS功能,因此BIOS中斷向量表在引導(dǎo)過程中被覆蓋。nBIOS 將所檢查磁盤的第一個扇區(qū)(512B)載入內(nèi)存,放在0 x0000:0 x7c00 處,如果個扇區(qū)的最后兩個字節(jié)是“55 AA”,那么這就是一個引導(dǎo)扇區(qū),這個磁盤也就是一塊可引導(dǎo)盤。通常這個大小為512B 的程序就稱為引導(dǎo)程序(boot)。如果最后兩個字節(jié)不是“55AA”,那么BIOS 就檢查下一個磁盤驅(qū)動器。BIOS 是怎么知道或說分辨哪一個磁盤可以用來引導(dǎo)的呢?n引導(dǎo)程序所具有的特點:n它的大小是512B,不能多一字節(jié)也不能少一字節(jié),因為BIOS 只讀512B 到內(nèi)存中去。n它的結(jié)尾兩字節(jié)必須是“55 A
5、A”,這是引導(dǎo)扇區(qū)的標(biāo)志。n它總是放在磁盤的第一個扇區(qū)上(0 磁頭,0 磁道,1 扇區(qū)),因為BIOS 只讀第一個扇區(qū)。利用BIOS 13 號中斷讀取磁盤扇區(qū)AH 寄存器:存放功能號,為2 的時候,表示使用讀磁盤功能DL 寄存器:存驅(qū)動器號,表示欲讀哪一個驅(qū)動器CH 寄存器:存磁頭號,表示欲讀哪一個磁頭CL 寄存器:存扇區(qū)號,表示欲讀的啟始扇區(qū)AL 寄存器:存計數(shù)值,表示欲讀入的扇區(qū)數(shù)量在設(shè)置了這幾個寄存器后,我們就可以使用 int 13 這條指令調(diào)用BIOS 13 號中斷讀取指定的磁盤扇區(qū),它將磁盤扇區(qū)讀入ES:BX 處,因此,在調(diào)用它之前,我們實際上還需要設(shè)置ES 與BX 寄存器,以指出數(shù)
6、據(jù)在內(nèi)存中存放的位置0.01版內(nèi)核,以軟盤啟動為例:1 開機(jī)2 BIOS 加電自檢 ( Power On Self Test,POST ),內(nèi)存地址為 0ffff:00003 將軟盤第一個扇區(qū) (0頭0道1扇區(qū), 也就是Boot Sector)讀入內(nèi)存地址 0000:7c00 處。4 檢查 (WORD) 0000:7dfe 是否等于 0 xaa55, 若不等于則轉(zhuǎn)去嘗試其他啟動介質(zhì), 如果沒有其他啟動介質(zhì)則顯示No ROM BASIC 然后死機(jī)。5 跳轉(zhuǎn)到 0000:7c00 處執(zhí)行 MBR 中的程序。6 MBR將自己移動到9000:00007 將內(nèi)核模塊從軟盤讀入到1000:00008 將內(nèi)
7、核模塊移動到0000:00009 進(jìn)入保護(hù)模式10 讀取COMS信息,設(shè)置有關(guān)表格,然后調(diào)用操作系統(tǒng)初始化程序1-5完全由BIOS完成,6-10由 完成其中的目標(biāo)代碼就是MBR(主引導(dǎo)記錄Master Boot Record)中的程序操作系統(tǒng)引導(dǎo)流程系統(tǒng)引導(dǎo)過程中內(nèi)核代碼在內(nèi)存中的位置變化 操作系統(tǒng)引導(dǎo)部分代碼的分析n的分析n的分析n的作用n AT&T匯編語言初步操作系統(tǒng)引導(dǎo)部分代碼nboot文件夾中的兩個匯編語言程序文件的作用n引導(dǎo)裝載器,存放在mbr中的一段程序,負(fù)責(zé)將操作系統(tǒng)加載到內(nèi)存合適的地方,這一部分的代碼運行在實模式中,運行的最后將設(shè)置cr0進(jìn)入保護(hù)模式,然后將接著執(zhí)行中的
8、程序n采用intelx86匯編語法編寫,使用8086匯編編譯器as86和連接器ld86產(chǎn)生可執(zhí)行代碼。n除了外,linux均使用gnu的as進(jìn)行編譯,這里使用8086的編譯器的主要原因是當(dāng)時gnu不支持生成實模式下的16位的代碼程序,內(nèi)核2.4.x起,這部分代碼才完全使用as來編寫源代碼分析n閱讀時應(yīng)注意的主要重點n實模式的尋址方式n內(nèi)核代碼在內(nèi)存中的位置n使用bios中斷訪問軟盤n如何為進(jìn)入保護(hù)模式進(jìn)行初始化設(shè)置n開始進(jìn)入源代碼世界源代碼分析n的作用n AT&T匯編語言初步的作用n這部分代碼工作在保護(hù)模式下,主要的作用是為開啟分頁機(jī)制進(jìn)行設(shè)置,開啟分頁機(jī)制后將控制權(quán)交給程序進(jìn)行進(jìn)一步
9、的初始化工作n采用了AT&T語法的匯編語言語法編寫并使用GNU的as(gas)編譯器進(jìn)行編譯,由于這種語法和intel8086匯編不同,有必要先學(xué)習(xí)一下AT&T的匯編語法的分析n閱讀時應(yīng)注意的主要重點nIDT,GDT的設(shè)置n如何開啟分頁機(jī)制n分頁機(jī)制的尋址方式nHEAD完成后內(nèi)存的布局n開始進(jìn)入源代碼AT&T匯編語言初步nLinux中的匯編代碼n使用兩種匯編器Linux中的匯編代碼Linux中的匯編代碼使用兩種匯編器nas86 (與之配套的ld86鏈接器)ngas(as) ( 與之配套的GNU ld鏈接器 )nLinus僅用as86創(chuàng)建16位的引導(dǎo)扇區(qū)程序n早期的asa
10、sas86n語法類似于MASM,NASM等n在linux中使用as86生成引導(dǎo)區(qū)程序bootGNU asn內(nèi)核中除了外所有匯編語言程序(包括c語言產(chǎn)生的匯編程序)均使用gas編譯。ngas(現(xiàn)在稱為as),匯編器最初是專門用于匯編由gcc產(chǎn)生的中間匯編程序的。因此支持很多c語言特性。(編譯c語言時gcc編譯器會首先輸出一個作為中間結(jié)果的as匯編語言文件,然后調(diào)用as匯編器進(jìn)行編譯)as基本命令格式nas 選項 -o objfile srcfile.sn比如單獨編譯as局部符號1: incl %eax movl %eax,0 x000000 cmpl %eax,0 x100000 je 1bas
11、匯編命令n.alignn存儲對齊匯編命令,比如.align 3表示把位置計數(shù)器值增加后其最右邊0的個數(shù)為3,就是把位置計數(shù)器增加到8的倍數(shù)上n.byte .word 分別定義一個字節(jié),字n.fill repeat,size,valuen該匯編命令會產(chǎn)生repeat個大小為size字節(jié)的重復(fù)拷貝,value是填充的值,默認(rèn)為0n.guad 定義多個用逗號分開的8字節(jié)大數(shù)as語法- AT&T 匯編格式n1. 在 AT&T 匯編格式中,寄存器名要加上 % 作為前綴;而在 Intel 匯編格式中,寄存器名不需要加前綴。AT&T的匯編語言語法Intel語法 AT&T語法mov eax,8 movl $8,%eaxmov ebx,0ffffh movl $0 xffff,%ebxint 80h int $0 x80在Intel的語法中,立即數(shù)沒有前綴。但是在AT&T中立即數(shù)前冠以“$”AT&T的匯編語言語法nIntel與AT&T操作數(shù)的方向正好相反。在Intel語法中,第一個操作數(shù)是目的操作數(shù),第二個操作數(shù)源操作數(shù)。而在AT&T中,第一個數(shù)是源操作數(shù),第二個數(shù)是目的操作數(shù)。由此可以看出,AT&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鄭州市頸肩腰腿痛醫(yī)院工作人員招聘12人的備考題庫及完整答案詳解一套
- 2025年河南省水利水電學(xué)校公開招聘工作人員6人備考題庫及一套參考答案詳解
- 3D打印血管網(wǎng)絡(luò)技術(shù)的臨床應(yīng)用與推廣策略
- 同仁堂集團(tuán)2026屆高校畢業(yè)生招聘備考題庫及答案詳解參考
- 城市熱島效應(yīng)對城市居民生活品質(zhì)的影響與對策教學(xué)研究課題報告
- 3D打印導(dǎo)板在神經(jīng)外科手術(shù)中的精準(zhǔn)設(shè)計與精準(zhǔn)固定
- 3D打印導(dǎo)板對神經(jīng)外科手術(shù)切口的美容效果
- 2025年文元育英中學(xué)招聘6人備考題庫及1套參考答案詳解
- 2025年鄭州大學(xué)第二附屬醫(yī)院公開招聘員額制工作人員(碩士)23人備考題庫及1套參考答案詳解
- 2025年周口市第二人民醫(yī)院(周口市老年醫(yī)院)專業(yè)技術(shù)人員招聘備考題庫及一套完整答案詳解
- 職業(yè)學(xué)院工會評優(yōu)評先實施辦法
- 中華人民共和國史期末復(fù)習(xí)
- 加油站安全現(xiàn)狀評價匯報
- 信陽師范大學(xué)《倫理學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 小學(xué)2024年秋季學(xué)生1530安全教育記錄表(全學(xué)期)
- 五年級上冊英語專項-語法專練-譯林版
- 中國普通食物營養(yǎng)成分表(修正版)
- 生物樣本庫的建設(shè)
- 低壓線路的安裝、運行及維護(hù)
- 表-柴油的理化性質(zhì)及危險特性
- 四年級道德與法治復(fù)習(xí)教案
評論
0/150
提交評論