看Linux0 11原始碼分析書籍,補充知識

2022-02-26 12:50:39 字數 1136 閱讀 5521

在看本書的時候, 很多cpu或彙編或作業系統的知識太欠缺了, 所以補充看了一下  x86組合語言  從實模式到保護模式

裡面用了bochs來跟蹤除錯彙編**.

但是書裡用了  vhd來承載引導程式, 其實跟img映象倒是區別沒那麼大.

作者提供了乙個寫入vhd的小工具, 而vhd的生成, 其實更簡單, 就是在 windows系統裡面, --- 裝置管理器 ---磁碟管理  建立乙個固定大小的vhd就可以了.

只不過, bochs.bxrc配置檔案要跟著改一下

那個寫入的小程式, 裡面有提示的,按照顯示的大小改一下這個就可以了

(windows下要管理員啟動才行, )

同時, 可以把需要的檔案都拷貝出來, 在自定義的路徑下去執行run.bat,也不是不可以(注意一些檔案的路徑就好)

例如:

可以直接在 bochsrc.bxrc上右鍵, run即可.

下面是vhd的簡單介紹,  可以看出來, 跟img映像,只是多了尾部資訊而已.  (這麼說不太準確, 就這麼理解就完事兒了,反正只是硬碟,用扇區來讀, 至於內容是什麼, 只有os才關心)

《x86組合語言》中 「第4章 虛擬機器的安裝和使用」,通過虛擬機器建立虛擬硬碟,然後用工具修改虛擬硬碟,寫入程式,最後啟動虛擬機器觀察執行結果。該方法缺點是不便除錯,推薦使用bochs,方便除錯。bochs需要載入image格式映象。

如下是虛擬硬碟vhd格式(固定大小)和image映象格式的對比。vhd格式只是多了乙個footer fileds:

image格式似乎沒什麼特殊的,只是要求第乙個扇區最後的兩個位元組必須是0x55、0xaa。

footer fileds在規範中有詳細說明,其中開頭8個位元組為cookie欄位,固定為字串「conectix」。

linux 0 11 原始碼學習(六)

main.c main函式其實是核心的初始化,如果把核心功能比作業務軟體的話,就相當於是業務的初始化,從該檔案的資料夾歸屬 init資料夾 也可以看出這一點。main主函式很短,從 中可以基本看出整個核心的功能模組,如下 void main void for pause 注 在linux中fork乙...

linux 0 11 原始碼學習(五)

head.s head.s 是系統模組的入口,其編譯器已經是gnu彙編,但從功能上將仍然屬於核心啟動階段,主要的功能是對386 cpu的初始化,如使用者堆疊 idt gdt和頁表。因此從資料夾的歸屬看,它仍然放在boot資料夾中,與bootsect和setup一塊。head.s的核心功能 簡單的暫存...

linux 0 11 原始碼學習(十三)

字元裝置驅動 在linux 0.11版本中,字元裝置驅動原始碼分為三塊 向上暴露的字元裝置驅動介面tty io.c與tty ioctl.c,與塊裝置驅動一樣,在字元驅動檔案 read write.c 操作中被呼叫 實現串列埠的驅動rs io.s和serial.c 實現鍵盤驅動的keyboard.s以...