目前市面上流行的全虛擬化PC仿真軟件系統主要有三種:VMware公司的VMware Workstation軟件、Microsoft公司的Virtual PC以及開放源代碼的Bochs。這3種軟件均可以虛擬或仿真Intel x86硬件環境,可讓咱們在運行這些軟件的系統平臺上運行多種其它的「客戶」操做系統。ios
就使用範圍和運行性能來講,這3種仿真軟件有必定的區別。Bochs仿真了x86的硬件環境(CPU的指令)及其外圍設備,所以很容易被移植到不少操做系 統上或者不一樣體系結構的平臺上。因爲主要使用了仿真技術,其運行性能和速度都要比其它兩個軟件慢不少。Virtual PC的性能則介於Bochs和VMware Workstation之間。它仿真了x86的大部分指令,而其它部分則採用虛擬技術來實現。VMware Workstation僅仿真了一些I/O功能,而全部其它部分則是在x86實時硬件上直接執行。也就是說當客戶操做系統在要求執行一條指令 時,VMware不是用仿真方法來模擬這條指令,而是把這條指令「傳遞」給實際系統的硬件來完成。所以VMware是3種軟件中運行速度和性能最高的一 種。windows
從應用方面來看,若是仿真環境主要用於應用程序的開發,那麼VMware Workstation和Virtual PC多是比較好的選擇。可是若是須要開發一些底層系統軟件(好比進行操做系統開發和調試、編譯系統開發等),那麼Bochs就是一個很好的選擇。使用 Bochs,你能夠知道被執行程序在仿真硬件環境中的具體狀態和精確時序,而非實際硬件系統執行的結果。這也是爲何不少操做系統開發者更傾向於使用 Bochs的緣由。app
OK,廢話少說,轉入正題。ssh
個人操做系統是Ubuntu10.10 64位(開發代號MaverickMeerkat )。工具
若是你使用的也是Ubuntu操做系統,可使用下面的命令來安裝Bochs:性能
$sudo apt-get install vgabios bochs bochs-x bximage
在終端中敲入這行命令,不一會系統就幫你安裝好了。測試
這樣安裝雖然說省事,但有個缺點不得不說,就是默認安裝的Bochs沒有調試功能,oh my lady gaga,這樣可不行。因此最好的方法仍是從源代碼安裝。網站
從Bochs的官方網站http://bochs.sourceforge.net/下載最新的Bochs源代碼包,我下載的是bochs-2.4.5.tar.gz。ui
安裝過程差很少是這個樣子的:this
$tar vxzf bochs-2.4.5.tar.gz $cd bochs-2.4.5 $./configure --enable-debugger --enable-disasm $make $sudo make install
解釋一下上面幾行命令:
1. 解壓源代碼包bochs-2.4.5.tar.gz,生成文件夾bochs-2.4.5;
2. 進入bochs-2.4.5目錄;
3. 運行configure腳本,它會測試你的機器,C/C++編譯器以及一些庫,用來判斷何種配置適合於你的機器。其中命令行參數--enable-debugger --enable-disasm即是打開調試功能的開關。成功執行完configure腳本後,會在每一個源代碼目錄下生成一個Makefile文件;
4. make根據第三步生成的Makefile文件從源代碼編譯整個Bochs;
5. 當整個Bochs編譯成功後,執行make install,會將Bochs的可執行文件、幫助文檔以及其它一些必要文件拷貝到系統相應的目錄下,以便運行Bochs。默認狀況下,會將一些必要的文件放到以下目錄裏,這裏以個人安裝目錄爲準:
表 1
/usr/local/bin/bochs |
Bochs啓動程序 |
/usr/local/bin/bximage |
Bochs自帶的製做磁盤映像文件的工具 |
/usr/local/bxcommit |
把redolog放進flat磁盤鏡像文件中去的交互工具 |
/usr/local/share/doc/bochs/bochsrc-sample.txt |
Bochs配置文件的例子 |
/usr/local/share/bochs/BIOS-bochs-* |
BIOS映像文件(一般爲BIOS-bochs-latest) |
/usr/local/share/bochs/VGABIOS-* |
VGA BIOS映像文件(一般爲VGABIOS-lgpl-latest) |
這裏對第3步再進行一個補充,若是在執行configure腳本的時候遇到:
錯誤1:configure: error: C++ preprocessor "/lib/cpp" fails sanity check
由於Bochs是用C++寫的,因此這裏要安裝GNU gcc/g++編譯器。
解決辦法:sudo apt-get install build-essential
sudo apt-get install g++
錯誤2:checking for default gui on this platform... x11
ERROR: X windows gui was selected, but X windows libraries were not found.
解決辦法: sudo apt-get install xorg-dev
錯誤3:ERROR: pkg-config was not found, or unable to access the gtk+-2.0 package.
解決辦法:sudo apt-get install libgtk2.0-dev
Ok,Bochs已經安裝完畢。如今,咱們已經有了計算機(Bochs),還差一張引導軟盤。既然計算機均可以虛擬,軟盤固然也能夠。在剛剛裝好的 Bochs組件中,有一個工具叫作bximage(見表1的第二項),它既能生成虛擬軟盤,也能生成虛擬硬盤,咱們也稱它們爲磁盤映像。建立一個軟盤映像 的過程以下所示:
mayuan@mayuan-ThinkPad-T400:~$ bximage ======================================================================== bximage Disk Image Creation Tool for Bochs $Id: bximage.c,v 1.34 2009/04/14 09:45:22 sshwarts Exp $ ======================================================================== Do you want to create a floppy disk image or a hard disk image? Please type hd or fd. [hd] fd Choose the size of floppy disk image to create, in megabytes. Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88. [1.44] I will create a floppy image with cyl=80 heads=2 sectors per track=18 total sectors=2880 total bytes=1474560 What should I name the image? [a.img] Writing: [] Done. I wrote 1474560 bytes to a.img. The following line should appear in your bochsrc: floppya: image="a.img", status=inserted mayuan@mayuan-ThinkPad-T400:~$
完成後,會在當前目錄下生成一個a.img文件,這即是咱們的軟盤映像。
所謂磁盤映像文件(Disk Image File)是軟盤或硬盤上信息的一個完整映像,並以文件的形式保存。磁盤映像文件中存儲信息的格式與對應磁盤上保存信息的格式徹底同樣。空磁盤映像文件是 容量與咱們建立的磁盤相同但內容全爲0的一個文件。這些空磁盤映像文件就像剛買來的新軟盤或硬盤,還須要通過分區及格式化才能使用。
咱們在當前目錄下新建一個文件,命名爲bochsrc(注意,沒有後綴)。
############################################################### # Configuration file for Bochs(Linux) ############################################################### #======================================================================= # filename of ROM images #======================================================================= romimage: file=$BXSHARE/BIOS-bochs-latest #======================================================================= # VGAROMIMAGE # You now need to load a VGA ROM BIOS into C0000. #======================================================================= vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest #======================================================================= # what disk images will be used #======================================================================= floppya: 1_44=/home/mayuan/a.img, status=inserted #======================================================================= # choose the boot disk. #======================================================================= boot: floppy #======================================================================= # where do we send log messages? #======================================================================= log: bochsout.txt #======================================================================= # disable the mouse #======================================================================= mouse: enabled=0 #======================================================================= # enable key mapping, using US layout as default. #======================================================================= keyboard_mapping: enabled=0, map= #======================================================================= # how much memory the emulated machine will have #======================================================================= megs: 32
萬事俱備,從終端進入當前目錄(假設是/home/mayuan,bochsrc與a.img也在這個目錄內),輸入命令:
$bochs
若是咱們在啓動Bochs時沒有在命令行上指定配置文件,那麼Bochs會按如下的順序尋找默認配置文件:
.bochsrcin the current directory
bochsrcin the current directory
bochsrc.txt in the current directory
(win32 only) bochsrc.bxrc in the current directory
(Unix only) .bochsrc in the user's home directory
(Unix only) bochsrc in the /etcdirectory
回車,提示:
1. Restore factory default configuration 2. Read options from... 3. Edit options 4. Save options to... 5. Restore the Bochs state from... 6. Begin simulation 7. Quit now Please choose one: [6]
繼續回車,輸入c,再按回車,Bochs便啓動成功