bochs除錯linux 0 11核心

2021-08-31 13:13:23 字數 1396 閱讀 3930

學習作業系統,最難的就是保護模式的各種硬體機制了(如分段分頁定址,特權級,門機制)。單純的8086實模下的彙編模擬器是無法模擬,除錯這些機制的。只能用個功能更強大的80*86模擬器了。由於模擬器挺多的,如vmware, virtual box等等,但是好像更方便除錯的,我們選擇bochs吧。

趙炯博士已經為我們準備好了bochs,而且還帶有linux 0.11的image.

具體參考這篇文章講了如何設定bochs的配置檔案。但是我沒有成功,現在只想說說自己是弄成功的。把時間花費在這些工具上面真是很無奈啊,希望能減少這些投入。

裡面有乙個bochs的安裝檔案,其餘都是bochs的配置檔案和linux0.11的image檔案,即0.11作業系統的二進位制檔案。

3.安裝在c:\program file下面

dllinux目錄下面是個linux作業系統的demo, 我仿照他的目錄結構建立了0.11目錄

然後把 解壓包下面linux的image及其啟動linux 0.11的bochs配置都copy到這個目錄下面。如圖

在這個目錄下面建立乙個run.bat,為了啟動bochs。run.bat如圖:

bochsdbg從名字上看是個debug版本的啟動。

那麼bochs就是正常啟動了。

同時我們要修改bochsrc-hd.bxrc.

這個是啟動linux 0.11的配置檔案。

如圖。修改12,36行。具體情況按你具體安裝目錄位置仿照下圖這樣配置。

把run.bat中的命令bochsdbg-->bochs,我們不是用debug模式,而是用正常模式啟動linux 0.11即可看到如下效果:

這是個小巧的linux 作業系統,非常不錯啊!

當然,利用bochs的除錯功能,我們可以追蹤到記憶體,暫存器,還有程式之間的跳轉流程,這些都是我們學習作業系統的重要素材。怎麼除錯請參考趙炯的《linux核心完全剖析》中的環境搭建章節吧。

加油,慢慢學習linux核心吧,花個3,5年都是值得的,不著急,有的是時間!

Linux 0 11 核心筆記

1 任務0的堆疊問題 一直不明白schedule.c裡的task union的stack和user stack是什麼關係,head.s裡就設定了esp指向user stack,卻一直沒有用到task union,直到看到init task才明白,從進入保護模式到跳轉進使用者態都是用的user sta...

linux0 11 記憶體結構

linux0.11,記憶體最多支援16m,其中0 1m是核心區,核心模組大約為520k,即end位址,即實際核心使用是從0 到end,之後到640k是高速緩衝區,從640k開始的區域,分別是視訊記憶體,bios區域,高速緩衝區,高速緩衝區之後是是主記憶體區域。在記憶體核心區域當中,從0開始,首先存放...

Linux0 11學習記錄

最近在學習linux0.11,遇到了一些編譯和執行的問題,好在最終能順利執行,在此作一下記錄,以方便自己和他人參考 我的編譯環境 linux bogon 3.16.0 4 686 pae 1 smp debian 3.16.39 1 deb8u2 2017 03 07 i686 gnu linux ...