書中介紹到Bochs這套IA-32的模擬器
但書中所附的設定檔跟我目前在Ubuntu中所使用的設定檔有點不同
特別記錄一下:
- 安裝Bochs:
- 至Bochs官方網站下載原始碼
- tar zxvf <Bochs原始碼>
- cd <解壓縮出來的Bochs資料夾>
- ./configure --enable-debugger --enable-disasm
- make
- sudo make install
- sudo apt-get install bochs-x (此會一併安裝bximage工具以及Bochs會用到的romimage... etc)
- 安裝vgabios:
- sudo apt-get install vgabios
- 撰寫bochsrc設定檔:
這邊的設定檔跟書中所附的設定檔只差在vgabios的設定
由原先的: vgaromimage: /usr/share/vgabios/vgabios.bin
改為: vgaromimage: file=/usr/share/vgabios/vgabios.bin
不然依照原本書中的設定會出現: vgaromimage directive malformed. 的錯誤訊息...
其實也是可以直接用VirtualBox跑的...
不過既然書都用Bochs當範例了
就當作多學一款模擬器的使用方法吧
此外Bochs的好處是還有類似GDB的debug功能
對於trace code而言應該會方便的多
這也是單純使用VirtualBox所沒有的好處
可惜的是《Orange's 一個作業系統的實現》這本書中的x86程式都是用NASM編譯的
在Linux上我還是比較習慣使用GAS...
偏偏這兩款編譯器所使用的語法不同
- GAS (使用AT&T語法)
- NASM (使用Intel語法)
只好先將就著看嚕.....
2 則留言:
https://github.com/descent/write_os/tree/master/src/chapter3/1.5
這裡有我照著書上改寫的 gas 版本, 可供參考。
或是看楊文博的程式碼。
http://share.solrex.org/WriteOS/index_cht.html
基本上我的也是從他那看來的。
喔喔!!
拜讀大大的文章很久了...
楊文博那本我也有看過~
不過後面的章節好像都還沒有更新?!
謝謝大大的分享!! ^^
張貼留言