bochs簡介
可以將bochs理解成為一個虛擬化平臺,它是一個完全虛擬化的軟體。bochs與虛擬化產品VMware和VirtualBox很像,但又有不同,後者更多的是一個產品,用於實現計算虛擬化,而前者則更多的是一個開發工具,用於作業系統的開發調試。下面是來自官網的描述:
Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Bochs can be compiled to emulate many different x86 CPUs, from early 386 to the most recent x86-64 Intel and AMD processors which may even not reached the market yet.
在Ubuntu上的安裝
bochs可以跨平臺安裝,可以安裝在Linux或者Windows等作業系統,Ubuntu(本文基於16.04版本)上安裝非常簡單,執行如下命令既可以安裝:
sudo apt-get install bochs
使用bochs
我們以運行Linux0.12版本內核為例簡單介紹一下bochs的使用。關於其更詳細的原理後面在詳細介紹。可以從後面地址下載Linux0.12的鏡像文件。
oldlinux.org/Linux.old/bochs/linux-0.12-080324.zip
在Ubuntu環境下解壓該文件,然後切換到目錄下,執行如下命令即可運行bochs:
bochs -f bochsrc-0.12-hd.bxrc
其中bochsrc-0.12-hd.bxrc為配置文件,運行結果如下,可以看到與普通虛擬機軟體很像,只是比較簡陋。
常見問題解決
由於bochs依賴一些軟體,因此在首次運行的時候可能會有一些錯誤。下面是常見的錯誤及解決方法。
錯誤一:
00000000000p[ ] >>PANIC<< bochsrc:10: vgaromimage directive malformed.
vgaromimage: /usr/share/vgabios/vgabios.bin改成
vgaromimage: file=/usr/share/vgabios/vgabios.bin錯誤二:
Event type: PANIC Device: [ ] Message: dlopen failed for module 'x': file not found
這種情況是缺少軟體包,安裝相應的軟體包即可,命令如下:
sudo apt-get install bochs-x
錯誤三:
bochs-biin: symbol lookup error: /usr/lib/bochs/plugins/libbx_x.so: undefined symbol: XpmCreatePixmapFromData
作者指出,我們換一種顯示的方案就可以了。
首先按照bochs-sdl,用apt-get可以安裝。
sudo apt-get install bochs-sdl在我們的bochsrc文件中,加入一句話:
display_library: sdl錯誤四:
00000000000p[KMAP ] >>PANIC<< line 38: unknown host key name 'XK_0' (wrong keymap ?)
注釋掉下面這行
#keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
然後那紅色的hello world就出來了