部署工作环境
操作系统的宿主环境和编译器
- 物理机:Windows 10
- 虚拟机:VMware Workstation 15 Pro、bochs-2.6.11
- 操作系统:Ubuntu 14.04.4 LTS
- C语言编译器:GCC
- 汇编语言编译器:NASM
安装bochs
- 安装一系列的包。
首先,Linux 系统需要安装了X Window系统才能使用Bochs。
因Bochs是由C++写的,需先安装GNU gcc/g++编译器。
安装命令如下:
sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install bison
sudo apt-get install libgtk2.0-dev
sudo apt-get install g++
- 下载bochs
到官方地址去下载,我安装的版本是 bochs-2.6.9.tar.gz 。 - 解压压缩包
tar zxvf bochs-2.6.9.tar.gz - 编译
在 bochs-2.6.9 目录下,开始configure、make、make install三部曲。
./configure \
--prefix=/root/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--with-x \
--with-x11
make
若编译时没有问题,就直接执行:
make install
配置bochs
为了模拟计算机,需要写一个配置文件,bochs启动时会找到此文件,根据文件内容创建自己。
在安装目录下有样本文件:share/doc/bochs/bochsrc-sample.txt。摘取重点内容,关于启动顺序,可参见该文件的以下几行:
配置文件bochsrc.disk放在 bochs 的安装目录下。(bochs配置文件位置不固定,名字也不要求固定),加disk是作者为了表示此配置文件的内容是从硬盘启动。
# Configuration file for Bochs
# 第1步,设置Bochs在运行中能够使用的内存,32MB
megs : 32
# 第2步,设置对应真实机的BIOS和VGA BIOS。
romimage: file=/root/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/root/bochs/share/bochs/VGABIOS-lgpl-latest
# 第3步,设置Bochs所使用的磁盘
# 若只有一个软盘,则使用floppya即可;多个则使用floppya,floppyb...
#floppya: 1_44=a.img, status=inserted
# 第4步, 选择启动盘符
#boot: floppy #默认从软盘启动,将其注释
boot: disk #改为从硬盘启动。代码写在硬盘上,不会有读写软盘的操作。
# 第5步,设置日志文件的输出
log: bochs.out
# 第6步,开启或关闭某些功能
# 关闭鼠标,打开键盘
mouse: enable=0
keyboard: type=mf, keymap=/root/bochs/share/bochs/keymaps/x11-pc-us.map
# 硬件设置
ata0: enable=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
运行bochs
在安装目录下执行bin/bochs
命令:
默认提示符【2】,准备读取选项,也就是配置文件,直接按回车。
加载成功后给出默认选项【6】 Begin simulation,继续回车后,c
命令运行。
输出如下提示“no bootable device”,原因是没有创建启动盘。
bochs 提供了创建虚拟硬盘的工具 bin/bximage。
直接输入bin/bximage
命令根据提示进行创建。
创建好后,根据下图中提示,把红色框中的配置信息添加更新到我们之前的 bochsrc.disk 中。
可以指定配置文件,使用bin/bochs -f bochsrc.disk
命令,回车:
还是报错提示“no bootable device”,但与之前原因不同:‘boot failed: not a bootable disk”。具体原因下章再讲。