以ubuntu操作系統為例
一、命令行安裝
sudo apt-get install vgabios bochs bochs-x bximage
此方法方便,不過都說這個方法安裝的bochs沒有調試功能,所以我沒有嘗試,有時間再補充驗證吧
二、源碼安裝
1. 源碼下載
https://sourceforge.net/projects/bochs/files/bochs/
直接下載當前最新的源碼,准備在linux上安裝,所以下載的 bochs-2.6.9.tar.gz
2. 安裝前准備
sudo apt-get install build-essential xorg-dev libgtk2.0-dev bison
省掉config過程很多依賴編譯報錯
3. 編譯安裝
sudo tar xvzf bochs-2.6.9.tar.gz
cd bochs-2.6.9
./configure --enable-debugger --enable-disasm --enable-readline -LIBS='lx11'
make
sudo make install
make install 會把bochs可執行文件拷貝到/usr/local/bin/目錄下
重啟linux或者讓環境變量重新生效,可以直接在當前目錄下調用bochs
4. 修改bochsrc配置文件
在bochs-2.6.9目錄下,有一個配置文件 .bochsrc,我們需要修改,讓他運行我們的a.img
#cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def" cpu: model=amd_k6_2_chomper, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def" cpu: cpuid_limit_winnt=0 memory: guest=512, host=256 romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest mouse: enabled=0 pci: enabled=1, chipset=i440fx private_colormap: enabled=0 #floppya: 1_44=/dev/fd0, status=inserted #floppya: image=../1.44, status=inserted #floppya: 1_44=/dev/fd0H1440, status=inserted #floppya: 1_2=../1_2, status=inserted #floppya: 1_44=a:, status=inserted floppya: 1_44=a.img, status=inserted, write_protected=1 #floppya: 1_44=/dev/rfd0a, status=inserted ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9 #ata0-master: type=disk, mode=flat, path="30M.sample" #ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17 #ata0-master: type=disk, mode=flat, path="c.img", cylinders=0 # autodetect #ata0-slave: type=disk, mode=vvfat, path=/bochs/images/vvfat, journal=vvfat.redolog #ata0-slave: type=cdrom, path=D:, status=inserted #ata0-slave: type=cdrom, path=/dev/cdrom, status=inserted #ata0-slave: type=cdrom, path="drive", status=inserted #ata0-slave: type=cdrom, path=/dev/rcd0d, status=inserted boot: floppy #boot: disk floppy_bootsig_check: disabled=0 log: bochsout.txt panic: action=ask error: action=report info: action=report debug: action=ignore, pci=report # report BX_DEBUG from module 'pci' debugger_log: - parport1: enabled=1, file="parport.out" #sound: driver=default, waveout=/dev/dsp. wavein=, midiout= #speaker: enabled=1, mode=sound
有注釋的地方基本都是改動過的,解決了下一步啟動運行過程中,幾個問題
5. 啟動運行bochs虛擬機
bochs -f .bochsrc
能到這一步,如果有問題,大部分都是bochsrc配置的問題,可以查看報錯點,嘗試注釋掉,確保最基本的幾個配置基本就可以正常運行了
例如:
memory: guest=512, host=256
romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
floppya: 1_44=a.img, status=inserted, write_protected=1
boot: floppy
啟動過程可能遇到的問題:
問題1:.bochsrc:187: cpu directive malformed
解決方法:
linux終端下:bochs -help cpu
我的電腦是AMD處理器,我就選amd_k6_2_chomper
修改配置文件即可
#cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def" cpu: model=amd_k6_2_chomper, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"
問題2:.bochsrc:915: Bochs is not compiled with lowlevel sound support
解決方法:修改配置文件,注釋掉以下兩行
#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=
#speaker: enabled=1, mode=sound
問題3:syntax error at 'dump_cpu'
解決方法:none
bochs 2.3.5 以上的版本沒有dump_cpu了,可以用r,fp,mmx,sse,dreg,sreg,creg命令代替
參考:https://blog.csdn.net/time4/article/details/25079417