1. 程式人生 > >自己寫操作系統 2 - 安裝bochs虛擬機

自己寫操作系統 2 - 安裝bochs虛擬機

col cti get def sudo repo led asm prot

以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

自己寫操作系統 2 - 安裝bochs虛擬機