目前市面上流行的全虚拟化PC仿真软件系统主要有三种:VMware公司的VMware Workstation软件、Microsoft公司的Virtual PC以及开放源代码的Bochs。这3种软件都可以虚拟或仿真Intel x86硬件环境,可以让我们在运行这些软件的系统平台上运行多种其它的“客户”操作系统。
就使用范围和运行性能来说,这3种仿真软件有一定的区别。Bochs仿真了x86的硬件环境(CPU的指令)及其外围设备,因此很容易被移植到很多操作系 统上或者不同体系结构的平台上。由于主要使用了仿真技术,其运行性能和速度都要比其它两个软件慢很多。Virtual PC的性能则介于Bochs和VMware Workstation之间。它仿真了x86的大部分指令,而其它部分则采用虚拟技术来实现。VMware Workstation仅仿真了一些I/O功能,而所有其它部分则是在x86实时硬件上直接执行。也就是说当客户操作系统在要求执行一条指令 时,VMware不是用仿真方法来模拟这条指令,而是把这条指令“传递”给实际系统的硬件来完成。因此VMware是3种软件中运行速度和性能最高的一 种。
从应用方面来看,如果仿真环境主要用于应用程序的开发,那么VMware Workstation和Virtual PC可能是比较好的选择。但是如果需要开发一些底层系统软件(比如进行操作系统开发和调试、编译系统开发等),那么Bochs就是一个很好的选择。使用 Bochs,你可以知道被执行程序在仿真硬件环境中的具体状态和精确时序,而非实际硬件系统执行的结果。这也是为什么很多操作系统开发者更倾向于使用 Bochs的原因。
OK,废话少说,转入正题。
我的操作系统是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。
安装过程差不多是这个样子的:
$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的第二项),它既能生成虚拟软盘,也能生成虚拟硬盘,我们也称它们为磁盘映像。创建一个软盘映像 的过程如下所示:
[email protected]:~$ 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 [email protected]:~$
完成后,会在当前目录下生成一个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便启动成功
Ubuntu下bochs的安装配置,布布扣,bubuko.com