用Bochs学习Minix-建立试验环境

  《操作系统设计与实现(第二版)》是一本极好的学习操作系统的教材,由于这本书是以 Minix 操作系统为例进行讲解,所以我们需要一个可以运行 Minix 的试验环境,你可以将它直接安装在 PC 的一个分区中,但我在这里推荐使用 Bochs

Bochs是一款用来模拟PC的开源软件,可以从http://bochs.sourceforge.net获得,目前最新的版本是2.3.5Bochs与其他x86虚拟机软件的不同之处是解释执行指令,所以它可以提供不错的调试功能,这为我们学习操作系统这样的底层软件提供了很大的方便。

首先下载BochsWindows版安装程序,我将它安装到了D:/Minix/Bochs-2.3.5Bochs官网上还有一个安装配置好了的Minix硬盘镜像下载,文件名为minix204.zip。下载后将其解压到Bochs的安装目录,然后修改minix204目录下的run.bat为如下的形式:

cd "D:/Minix/Bochs-2.3.5/minix204"

../bochs -q -f minix.bxrc

不过当我点击运行这个批处理文件之后,只弹出了个命令行窗口显示出一堆错误信息,原来这个Minix镜像自带的配置文件太老了,与新版的Bochs有些不兼容,所以必须先修改配置脚本。在安装目录下的doc目录下有详细的说明文档,对照文档,需要对配置脚本作如下的修改:

romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000”改为“romimage: file=$BXSHARE/BIOS-bochs-legacy, address=0xf0000

vgaromimage: $BXSHARE/VGABIOS-elpin-2.40”改为“vgaromimage: file=$BXSHARE/VGABIOS-elpin-2.40

ips: 1000000”改为“cpu: count=1, ips=1000000

完成如上的修改后,再次运行就可以顺利进入Minix了。在虚拟系统内的/usr/src目录下存放的就是Minix的源代码,可以利用里面自带的编译器来编译操作系统的代码,这样Minix的编译调试环境就形成了。

 

现在说一下用Bochs的调试过程。我们可以先建立一个rundbg.bat,然后把把run.bat中的内容复制过来,并且将“../bochs -q -f minix.bxrc”改成“../bochsdbg -q -f minix.bxrc”。当用rundbg.bat启动后,可以看到弹出的命令行窗口的最后中会显示如下内容:

(0) [0xfffffff0] f000:fff0 (unk. ctxt): jmp f000:e05b             ; ea5be000f0

<bochs:1>

第一行说明此时CPU指令指针停留在了0xffff0处(实地址模式),这是BIOS-ROM的地址,机器将从这里开始运行。

第二行是调试命令输入行,Bochs的调试命令与GDB非常相似,可以使用break设置断点,使用s命令单步运行,使用p打印变量值。我们可以输入help命令,列出所以的调试命令,如果想获得具体命令的使用方式,只需输入“help 命令名”即可。由于BIOS会将启动设备的引导代码复制到0x7c00处,所以先设置断点:

<bochs:1>vb 0x0000:0x7c00

接下来运行到断点处:

<bochs:2>c

Bochs运行到0x7c00后停了下来。这时可以看到虚拟机窗口会显示显卡和硬盘的一些信息,这是BIOS运行自检后的输出。在这之后就开始运行Minix的引导代码了,这些代码位于src/boot目录下。

你可能感兴趣的:(虚拟机,windows,File,脚本,文档,编译器)