本文将介绍bochs模拟器的使用,前面介绍了bochs如何通过源码的方式安装,参考这里,安装之后是没法直接使用的,要正常的将bochs模拟器运行起来,还需要至少两样东西:一是bochs的配置文件,主要是描述待启动的虚拟机的配置,例如内存大小、启动镜像、网络功能、存储配置等;二是一个可用的操作系统镜像,用于在虚拟机上运行操作。下面分别做简单介绍。
bochs的配置文件
bochs运行后,会先查找配置文件,解析模拟器要虚拟的系统相关信息后启动系统。
配置文件的查找顺序
默认的配置文件一般命名为bochsrc或.bochsrc或bochsrc.txt,当然可以在命令行时通过-f
命令直接指令配置文件路径,这样对配置文件命名就没有特定的要求。如果未通过-f
命令指令待加载的配置文件,bochs会按照如下顺序去自动查找配置文件:
- 在当前目录(bochs命令执行的目录)下查找
.bochsrc
文件 - 在当前目录下查找
bochsrc
文件 - 在当前目录下查找
bochsrc.txt
文件 - 在当前目录下查找
bochsrc.bxrc
文件(仅限于本地系统为win32) - 在用户的主目录下查找
.bochsrc
文件(仅限于本地系统为类Unix) - 在用户的主目录下查找
bochsrc
文件(仅限于本地系统为类Unix)
配置文件内容解析
下面只是简单介绍几个配置参数,配置文件的内容解析更多细节请参考这里
配置文件中是以key: value
来配置参数,通常一个简单的bochs的配置文件看起来如下:
megs: 32
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
vga: extension=vbe, update_freq=15
floppya: 1_44=a.img, status=inserted
boot: floppy
log: bochsout.txt
mouse: enabled=0
cpu: ips=15000000
- megs:指定主机给虚拟机分配的内存大小,以及指定虚拟机模拟的内存大小。如果主机和虚拟机内存大小分配不一样,可以使用memory: guest=A, host=B的方式。megs相当于指定虚拟机模拟的内容大小和主机给虚拟机分配的物理内存大小一致,等同于memory: guest=A, host=A,默认情况下,内存大小是32M。
- romimage:指定bios镜像的路径,一般使用bochs提供的默认值即可,安装完成后bochs提供的bios镜像位置位于=$BXSHARE/BIOS-bochs-latest
- vgaromimage:指定vga bios镜像的路径,一般使用bochs提供的默认值即可,安装完成后bochs提供的bios镜像位置位于=$BXSHARE/VGABIOS-lgpl-latest
- vga:定义vga显示的参数,例如update_freq表示屏幕显示每秒刷新的次数
- floppya:指定软盘镜像的位置
- boot:指定启动顺序,本文中boot: floppy只指定了先从软盘中读取是否有启动分区,也可以指定从硬盘、cd等中启动系统
- log:指定bochs日志记录的位置
- mouse:指定鼠标启用的信息
- cpu:指定bochs模拟的虚拟机中的cpu信息
bochs镜像
按照上文配置之后,还需要一个能启动的软盘镜像,才能真正的进入到虚拟机系统。还好,bochs官方提供了一些已经制作好的软盘虚拟机系统供我们使用,我们可以从官网下载的镜像直接使用,下载地址:https://bochs.sourceforge.io/diskimages.html
我们下载一个来测试一下,本文下载的是freedos的一个软盘启动镜像,下载地址参考这里,下载之后解压,会出现目录freedos-img,进入目录后如下:
freedos-img
├── a.img
├── b.img
├── bochsrc
├── bx_enh_dbg.ini
└── c.img
可以查看一下配置文件bochrc的内容:
$ cat bochsrc
megs: 32
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
vga: extension=vbe, update_freq=15
floppya: 1_44=a.img, status=inserted
floppyb: 1_44=b.img, status=inserted
ata0-master: type=disk, path=c.img, cylinders=306, heads=4, spt=17
boot: c
log: bochsout.txt
mouse: enabled=0
cpu: ips=15000000
从软盘镜像启动,使用命令启动bochs -f bochsrc
,用freedos自带的配置文件,启动如下:
freedos-img$ bochs -f bochsrc
========================================================================
Bochs x86 Emulator 2.7
Built from SVN snapshot on August 1, 2021
Timestamp: Sun Aug 1 10:07:00 CEST 2021
========================================================================
00000000000i[ ] BXSHARE not set. using compile time default '/usr/local/share/bochs'
00000000000i[ ] reading configuration from bochsrc
------------------------------
Bochs Configuration: Main Menu
------------------------------
This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate. Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found. When you are satisfied with the configuration, go
ahead and start the simulation.
You can also start bochs with the -q option to skip these menus.
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]
00000000000i[ ] installing x module as the Bochs GUI
00000000000i[ ] using log file bochsout.txt
Next at t=0
(0) [0x0000fffffff0] f000:fff0 (unk. ctxt): jmpf 0xf000:e05b ; ea5be000f0
<bochs:1> c
因为我们使用的是debug版本,因此选择6. Begin simulation
,启动后会进入调试模式,需要输入c
才会继续运行,启动成功后,bochs界面如下: