linux核心學習(9)啟動全過程概述之核心映像結構

來源:互聯網
上載者:User

啟動過程這塊內容還蠻多的,因此得慢慢來分析,在此之前我也收集到了很多資料,這裡將這些整理加上自己的一些理解。好不容易啊,總算開始核心原始碼之旅了,我們要珍惜這來之不易的這個時刻。

要得到核心結構,我們有很多種方法,比如查看kbuild Makefile、Documentation,但是我選擇了在網路上找,因為我們關注的重點是在於怎麼分析原始碼,特別是後面要分析裝置驅動那塊。


們以bzImage大核心映像為例,它由setup.elf和vmlinux組成,而vmlinux又由二進位檔案setup.bin和
vmlinux.bin組成,而vmlinux.bin會進行壓縮儲存,變成vmlinux.bin.gz。因此bzImage有三部分組成
setup.elf、setup.bin、vmlinux.bin.gz。

在來看看它們的分布圖,這裡用文字描述:

0x00007c00  --  BootLoader     載入程式,位於硬碟的MBR中
0x00090000  --  0x00090000  --  setup.elf的開機磁區512B
                          0x00090200  --  setup.elf的setup部分
0x00100000  --  vmlinux

(這是大核心)

現在在來簡單介紹一下各個部分:
1、BootLoader:
PC機的Boot Loader遵從linux引導協議2.03,PC 機中的引導載入程式由 BIOS(位於主板flash
rom中的固化程式)和位於硬碟 MBR 中的作業系統Boot Loader(如LILO 和 GRUB 等)組成。BIOS
在完成硬體檢測和資源分派後,將硬碟 MBR 中的 Boot Loader 讀到系統的 RAM 中,然後將控制權交給作業系統Boot
Loader。Boot Loader將核心映象從硬碟上讀到 RAM 中,然後跳轉到核心的進入點去運行,也即開始啟動作業系統。
2、setup.elf:
分為開機磁區和setup扇區,第一部分開機磁區(bootsect)為bzImage前512位元組,以前的版本用於從磁碟片啟動引導Linux部分。目前的版本不支援將它用於從磁碟片引導,
否則,將列印錯誤資訊"Direct booting from floppy is no longer
supported.",這將在代碼中看到。第二部分為setup扇區,是從512個位元組開始的程式,它運行在實模式下,為保護模式的Linux核心啟動準備環境。這個部分最後會切換進入保護模式,跳轉到保護模式的核心執行,也就是0x10000的vmlinux處。
3、vmlinux:
這部分是進入保護模式後的代碼部分,由解壓程式和核心映像壓縮包組成。


了,核心映像的結構和被載入入記憶體的結構有一個感性認識後,對我們討論後面的內容會有很大的協助,後面就是原始碼分析來瞭解啟動全過程,這樣的認識會更加
的深刻。希望我們能克服困難走到最後。我會加快分析的步伐,你也一樣,最好將一些重要的東西和我分享,我們共同進步,這樣的學習才是最和諧和快樂的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.