Bochs是使用C++编写的高度可移植开源IA-32(X86)PC模拟器,能在大多数流行的平台上运行。它包括模拟Intel x86 CPU、常见I/O设备和自定义BIOS。Bochs可以被编译以模拟许多不同的x86 CPU,从386早期到最新的x86-64英特尔和AMD处理器甚至可能还没有进入市场。Bochs能跑仿真中的大多数操作系统(例如DOS),Linux或Windows。
一.下载和编译
可以在官网:https://sourceforge.net/projects/bochs/files/bochs/ 下在源码,本文下载的版本为2.6.11。
下载的压缩文件使用指令“tar –zxvf bochs-2.6.11.tar.gz”解压文件,解压完成后进入文件夹目录中,开始执行编译操作。
默认配置编译
使用指令“./configure”可以直接按照默认的配置运行源码编译操作,位于目录下的”configure”脚本可以检测你机器的一些基本配置,比如C/C++编译器、环境依赖库等,以便发现那些设置可以在系统上面工作。
手动配置选项编译
如果你想自己设定一些配置,可以在”./configure”后面追加一些配置项以便在编译时将功能带上,如果不知道有什么可以配置,可以使用“./configure --help”来查看支持的配置项:
比如本例中,我将使用以下配置信息进行编译:
“./configure --prefix=/user_path --enable-debugger-gui –enable-disasm --enable-iodebug --enable-x86-debugger –with-x --with-x11”
这些配置信息的作用如下:
配置名称 | 作用 |
--prefix | 设置安装bochs的目录路径 |
--enable-debugger-gui | 打开Bochs内部拥有gui界面的调试器 |
--enable-disasm | 使得Bochs支持反编译 |
--enable-iodebug | 启用io接口调试器,常常与--enable-debugger一起搭配使用 |
--enable-x86-debugger | 启用X86调试器 |
–with-x | 启用X窗口 |
--with-x11 | 启用X11图形用户窗口 |
编译成功后会在当前文件夹生成一个状态文件”./configure.status”记录配置信息,并且在每个源代码目录中创建以恶搞Makefile以及config.h文件夹,其中所有的选项值都是为了预处理器#define编写的。
配置完成后会生成Makefile文件,使用指令”make”开始编译程序:
在make结束后再执行“make install”开始安装程序(安装的路径就是上面—prefix中设置的路径):
安装完成后,在安装路径下既可以看见文件夹目录
二.Bochs配置
安装完成后还需要编写配置文件才能让Bochs开始模拟PC环境,这个配置就类似于电脑的BIOS程序,BIOS会显示各种硬件的信息以及硬件的启动顺序等,Bochs要想模拟计算机,它就得知道这台计算机的配置是什么样子的,有哪些硬件?启动顺序是什么?软盘启动还是硬盘启动?这些都是需要在配置文件中说明,并且导入到Bochs中。
在路径下的文件:bochs/share/doc/bochs/bochsrc-sample.txt为配置文件的参考例子,说明了每个配置项的具体使用定义:
以下贴出博主自己经常使用的配置信息以供参考,更多配置请自行查看上面的样例(文件名为boch.disk):
megs:32 //关键字megs,用于设置Bochs在运行时能够使用的内存,本例为32MB
romimage:file=XXX /bochs/share/bochs/BIOS-bochs-latest //设置实际机器的BIOS,地址看你的安装路径
vgaromimage:file=XXX/bochs/share/bochs/VGABIOS-lgpl-latest //设置实际机器的VGA BIOS,地址看你的安装路径
boot:disk //使用硬盘启动,如果使用软盘启动则为boot:floopy
log:bochs.out //日志输出文件名
mouse:enabled=0 //关闭鼠标
keyboard:keymap=XXX/bochs/share/bochs/keymaps/x11-pc-us.map //打开键盘
ata0:enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14 //硬盘设置信息
ata0-master:type=disk,path="XX.img",mode=flat,cylinders=121,heads=16,spt=63 //硬盘的设置信息,其中path=”XXX”为后续生成的xxx.img文件的路径,没有这个镜像文件的话启动会失败。
三.镜像生成和Bochs运行
只有配置文件还不能够运行让模拟系统运行,这就相当于你只是买了一大堆零散的硬件,配置文件把它们组装起来而已,还有关键的MBR程序、操作系统这些软件还需要你亲自编写才能真正得运行。当然你也可以直接运行Bochs程序:
如果你能进入到这个界面,说明你的Bochs已经安装成功,剩下的就是启动程序怎么写,内核怎么写以及操作系统怎么编的问题了。众所周知,程序需要有介质进行存放的,Bochs提供了一个创建虚拟硬盘的工具,路径位于“/bin/bximage”,该工具可以生成一个空白的硬盘,我们写的程序就可以往硬盘里面写,让Bochs来读取该硬盘的程序。
Bximage工具的使用方法可以使用后缀参数”--help”来查看:
我们参照以上格式生成一个简单的60MB的虚拟硬盘:
参数说明如下:
指令 | 作用 |
-fd | 创建软盘 |
-hd | 创建硬盘 |
-mode | 创建硬盘的类型,如flat、sparse、growing |
-size | 创建硬盘的大小,MB为单位 |
-q | 以静默模式创建,创建过程中不会和用户交互 |
创建成功后,我们会在boch.disk文件(不知道这个是什么的请看第二点Bochs配置)里面添加该镜像文件,镜像文件中添加我们自己写的MBR程序、引导程序等,Bochs就可以开始模拟我们所编写的系统啦。
比如本人已经编写好了一个简单的MBR程序,而且也已经写入到镜像里面,这时候只要运行Bochs程序:
这里可以看到默认是选择6的,6的功能就是开始模拟,我们直接按下回车,程序就会开始模拟:
这时候就可以看到有调试信息以及弹出一个模拟的窗口,我们在命令行里面输入“c”以便让模拟继续往下进行,就可以看到你写的系统是否正常了:
如果你想知道”c”代表什么意思,可以直接输入”help”查看指令使用说明:
如果想要知道MBR程序怎么编写的,可以查看之前写过的文章:【操作系统】计算机硬件软件知识汇总