2013年2月15日 星期五

Bochs設定方式

這幾天在看《Orange's 一個作業系統的實現》這本書
書中介紹到Bochs這套IA-32的模擬器
但書中所附的設定檔跟我目前在Ubuntu中所使用的設定檔有點不同
特別記錄一下:
  1. 安裝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)
  2. 安裝vgabios:
    • sudo apt-get install vgabios
  3. 撰寫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語法)
但現在我也沒那個閒時間去把程式自己改寫成GAS的版本
只好先將就著看嚕.....

2 則留言:

descent 提到...

https://github.com/descent/write_os/tree/master/src/chapter3/1.5

這裡有我照著書上改寫的 gas 版本, 可供參考。
或是看楊文博的程式碼。
http://share.solrex.org/WriteOS/index_cht.html

基本上我的也是從他那看來的。

法克 提到...

喔喔!!
拜讀大大的文章很久了...
楊文博那本我也有看過~
不過後面的章節好像都還沒有更新?!
謝謝大大的分享!! ^^