2010年10月3日 星期日

Bochs install for smp



Bochs安裝在windows時從http://sourceforge.net/projects/bochs/files/bochs/2.4.5/下載下來的Bochs-2.4.5.exe 雖然可以直接使用,而且還很好用,在windows下若要使用debug可以呼叫bochsdbg.exe,正常使用狀況一般都呼叫bochs.exe;並針對配置檔:bochsrc.bxrc作修改便可以使用。但是今天我的須求必須能夠執行在smp的狀況下;然而使用Bochs-2.4.5.exe 所安裝的版本是不支援smp的,因此必須下載source code,自己編譯及安裝,由於sourceforge提供了bochs-2.4.5-msvc-src.zip for windows vs2008的source code,下載下來安裝總是失敗,我想應該是什麼選項沒有去打開所造成的;這部分等我以後編譯成功再來說明。也因為沒有辦法在windows下使用smp並作debug,因此我便下載bochs-2.4.5.tar.gz ,並到linux下去build;以下是building and install的過程說明:
要在linux下安裝bochs首先必須先安裝幾個套件:g++、libc6-dev、build-essential、xorg-dev、libgtk2.0-dev;若是你使用ubuntu的Synaptic可以很快速的將這些套件安裝完成;若你是使用red hat linux,則請自行找到相對應的rpm檔。
或安裝build-essential
我們知道編譯不過是幾個指令便可完成:./configure及make和make install。然而我們必須清楚到底我們要安裝哪些功能;
因此我們可以先下./configure --help從畫面上便可得知可設定的選項有哪些。所以我為了能夠順利編譯for SMP功能的bochs;所下指令如下:
(1)./configure --enable-smp --enable-x2apic --enable-debugger --enable-disasm --enable-vmx=2 --enable-configurable-msrs --enable-x86-64 --enable-a20-pin --enable-acpi --enable-pci --enable-gdb-stub
(2)make
(3)sudo make install
註:--enable-gdb-stub--enable-debugger是互斥的
install完成時,在/usr/local/bin會有三個執行檔:bochs bxcommit bximage;但和windows狀況下不一樣的是少了bochsdbg;其實應該說debugger的功能也整合到bochs執行檔了。
接下來是如何使用bochs;首先是建立一個image檔,這部分可參考很多地方,請自行搞定;接著修改bochsrc配置檔:由於我的例子是使用floppy來boot,若是有使用ide boot請自行修正;
###############################################################
# bochsrc begin.
###############################################################
# how much memory the emulated machine will have
megs: 32cpu: count=2, ips=10000000# filename of ROM images
romimage: file=$BXSHARE/BIOS-bochs-latestvgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
# what disk images will be used
floppya: 1_44=MultiCore.img, status=inserted

# hard disk
# ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17

# choose the boot disk.
boot: a

# default config interface is textconfig.
#config_interface: textconfig
#config_interface: wx

#display_library: x
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga

# where do we send log messages?
log: bochsout.txt
############################################################### bochsrc end.
###############################################################
有了cpu: count=2, ips=10000000,這一行,便可產生雙核心了。
只要到含有bochsrc檔的目錄下執行以下指令便可開始進行debug了!
--> 閱讀更多...