如何使用Bochs,一个x86硬件平台模拟器

来源:互联网 发布:mac磁盘工具怎么用 编辑:程序博客网 时间:2024/04/27 18:37
http://linux.ccidnet.com/art/303/20020916/25233_1.html

 

Bochs是一个x86硬件平台的模拟器。换句话说,它可以模拟各种硬件的配置。当启动到 Bochs时,看起来就好像你在自己的PC上启动了另外一个PC。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。更为有趣的是,甚至 可以不使用PC硬件来运行Bochs。事实上,它可以在任何编译运行Bochs的平台上模拟x86硬件。通过改变配置,可以指定使用的CPU(386、 486或者586),以及内存大小等。一句话,Bochs是电脑里的“PC”。根据需要,Bochs还可以模拟多台PC,此外,它甚至还有自己的电源按 钮。

好了,是不是觉得很棒?那就让我们来动手做吧!首先到下面的地址下载一个Bochs:http://bochs.sourceforge.net/。

在Linux下编译一个软件,对于很多读者来说已经非常熟悉了。不过,下面我要给配置脚本加上一些有趣的脚本:

tar -xzvf bochs-1.4.tar.gz
cd bochs-1.4
./configure --enable-cpu-level=5 --enable-pci --enable-cdrom
make
su -c "make install"

平台是586(或者Pentium家族)平台,支持CD-ROM驱动以及模拟对 PCI的支持。在编译的过程中,可以传递包括声卡和网卡在内的设备的支持。可以运行./configure—help来查看一下都有哪些选项可供选择。如 果不知道该怎么办的话,可以使用配置脚本中提供的一个选项。可以找到一个“.conf.使用的操作系统”的文件,这其中包括BeOS、Amiga、Mac 操作系统等。比如,在Linux中,该文件名为:sh .conf.linux。

作为Bochs安装的一个部分,我们来安装Dlxlinux。它是一个可启动的Linux版本的磁盘映像(只有10M)。

wget http://bochs.sourceforge.net/guestos/dlxlinux3.tar.gz
-11:27:46-- http://bochs.sourceforge.net/guestos/dlxlinux3.tar.gz
  => `dlxlinux3.tar.gz'

安装完成后,就可以切换到Dlxlinux的安装目录来运行Bochs了。在开始以下的步骤以前,要提醒一下,如果想使用Root身份来运行Bochs,那么你就要改变一下该目录的权限。使用以下命令来完成:

cd /usr/local/bochs
chown -R your_uid.your_uid dlxlinux

好了,让我们来启动Bochs吧。哦,对了,我们还需要先把10MB的磁盘映像进行解压缩:

cd /usr/local/bochs/dlxlinux
gunzip hd10meg.img
bochs

启动过程是交互式的,不过现在只需要使用缺省设置就可以了。如果一切顺利的话,你将会看到一个和Linux的启动过程有些相似的过程,接着就可以在一个完全独立的电脑上工作了。事实上,这就是我们想要做的。好了,看一看现实是不是和计划中的一样。

来看一看这台虚拟的电脑(如图1所示),你将在顶部看到一些按钮。通过这些按钮,可以激活或者解除软驱,改变配置,此外还有屏幕快照等功能。要切换鼠标的控制,可在命令行或者Bochsrc文件中指定,也可以在模拟器运行起来以后点击鼠标图标。

图1 bochs的界面

好了,下面我们来讨论一下bochsrc.txt文件。首先用一个你喜欢的文字编辑器来打开它,就会发现一些有趣的参数。可以对其进行调整,以使之能够满足环境或者测试要求。比如可以修改虚拟机中可以使用的内存大小:

# how much memory the emulated machine will have
megs: 64

在下面的位置可以对虚拟磁盘映像进行配置:

diskc: file=hd10meg.img, cyl=306, heads=4, spt=17

其它你可能需要了解(不一定需要更改)的行是虚拟机器BIOS文件的位置:

# filename of ROM images
romimage: file=/usr/local/bochs/latest/BIOS-bochs-latest, address=0xf0000
vgaromimage: /usr/local/bochs/latest/VGABIOS-elpin-2.40

在Bochs中,也可以使用FreeDOS,也就是可以将其作为一个DOS模拟器。事实上,在Linux中,实现某一功能往往有很多种方法。

此外,还可以创建一个模拟驱动器用于测试。虽然它是一个真正的硬盘驱动器,但是可以 将其格式化或者重新进行分区。在此,我要创建一个504MB的磁盘映像,与之相应的驱动器的参数是:1024 Cylinders、15 Heads和63 Tracks。如果算一下,发现是1024x15x63,结果是1032192。将其一分为二,就是516096或者说是504MB。要创建这一磁盘映 像,使用Linux的DD命令:

dd if=/dev/zero of=cdrive.img bs=512 count=1032192

你也许会问,我到什么地方找到这些硬盘的数据呢?事实上,你没有必要知道所有这些数据。你可以查询以下站点的表来创建不同的大小的驱动器:

http://bochs.sourceforge.net/docs-html/install.html

现在咱们来做一些更复杂的事情。我已经有了一个500MB的驱动器,并且我刚好有一张Mandrake 7.1的光盘,我想查看一下光盘的内容。

相关的Bochsrc文件的内容如下:

# what disk images will be used
floppya: 1_44=/mnt/testing/cdrom.img, status=inserted
diskc: file="/mnt/testing/testdrv.img", cyl=1015, heads=16, spt=63
cdromd: dev=/dev/cdrom, status=inserted
# choose the boot disk.
boot: a

顺便说一下,并不是一定要使用Bochsrc文件,事实上软件启动时会在当前目录下寻找一个.bochsrc文件。名字可以随便取,只要注意在启动时指定一下即可。

好了,再回到Bochsrc文件,请注意启动磁盘行(软驱A:),我只是把cdrom.img磁盘映像复制到了硬盘上。硬盘是通过上述的参数创建起来的。最后,我们指定启动设备。

要启动这个安装,我输入Bochs并且在询问配置文件时指定了Bochsrc。接着,我接受了缺省的日志文件(bochsout.txt)并且继续就可以了(如图2)。

图2 启动安装过程

在做这样的模拟时,唯一的限制就是PC的处理器、内存以及硬盘等的系统资源。我们完全可以同时运行多个bochs会话。图3是启动了Bochs会话的Mandrake操作系统。

图3 启动了bochs会话的Mandrake

应该说,对于这种实现方法,唯一的缺陷就是性能问题。也就是说在这台虚拟的机器上工作,性能将不是特别理想。也许这在以后会得到改进。

另外,为了测试,我在一台PⅡ350、128MB内存的机器上启动了bochs,并且安装Win95。安装过程花了近2个小时,不过安装完成后,感觉速度还可以。

原创粉丝点击