古典也流行之Bochs

来源:百度文库 编辑:神马文学网 时间:2024/04/28 15:50:35
伊梅 -开放系统世界-
2004-7-7 —
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个小时,不过安装完成后,感觉速度还可以。
from site :http://www.vmware.cn/Article/78.html