实验环境:VMware + Ubuntu22.04
安装bochs
创建bochs文件夹用于存放bochs
进入到创建的bochs文件夹,使用pwd命令可用于查看文件路径,以下是我存放bochs的路径
将下载的bochs-2.6.8进行解压,并进入到目录
configure
(prefix后填的是bochs安装目录,即为以上用pwd命令查出来的路径,应注意修改为自己的路径)
./configure --prefix=/home/cqh/bochs --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11
报错1:
这个错误信息表明在运行 ./configure
脚本时,C++ 预处理器 (/lib/cpp
) 没有通过合理性检查。通常,这是因为缺少必要的编译工具或开发库。
此时需要安装必需的软件包
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install g++
sudo apt-get install libncurses5-dev
sudo apt-get install libx11-dev
成功configure之后,会生成Makefile
执行命令
make
报错2:
make编译过程中报错,改错误表名生成的 Makefile可能缺少了-lX11库的链接选项
此时需要更改Makefile文件
添加
LDFLAGS = -pthread -lX11
LIBS = -lX11
make编译没有问题之后
make install
完成安装
配置bochs
在安装目录下有样本文件:/home/cqh/bochs/share/doc/bochs/bochsrc-sample.txt
我们将自己编写的配置文件放到/home/cqh/bochs/bin目录下
vim bochsrc.disk
使用vim编辑文件,若没有该文件会自动新建,因此我们直接执行以上命令即可
写入以下内容(注意修改路径)
###############################
#Configuration file for Bochs
###############################
#第一步,首先设置 Bochs 在运行过程中能够使用的内存,本例为32MB。
#关键字为megs
megs : 32
#第二步,设置对应真实机器的 BIOS 和VGA BIOS。
#对应两个关键字为:romimage和vgaromimage
romimage: file=/home/cqh/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/home/cqh/bochs/share/bochs/VGABIOS-lgpl-latest
#第三步,设置 Bochs 所使用的磁盘,软盘的关键字为floppy。
#若只有一个软盘,则使用floppya即可,若有多个,则为floppya,floppyb…
#floppya:1_44=a.img,status=inserted
#第四步,选择启动盘符。
#boot:floppy #默认从软盘启动,将其注释
boot: disk #改为从硬盘启动。我们的任何代码都将直接写在硬盘上,所以不会再有读写软盘的操作。
#第五步,设置日志文件的输出。
log: bochs.out
#第六步,开启或关闭某些功能。
#下面是关闭鼠标,并打开键盘。
mouse:enabled=0
keyboard:keymap=/home/cqh/bochs/share/bochs/keymaps/x11-pc-us.map
#硬盘设置
ata0:enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14
ata0-master: type=disk, path="/home/cqh/bochs/hd60M.img", mode=flat,cylinders=121,heads=16,spt=63
#增加bochs对gdb的支持,gdb可以远程连接到次机器的1234端口调试
#gdbstub:enabled=1,port=1234,text_base=0,data_base=0,bss_base=0
#################配置文件结束#######################
创建磁盘
回到安装目录下(/home/cqh/bochs)
bin/bximage
依次键入
1
hd
flat
60
hd60M.img
接着就会看到名为hd60M.img的虚拟硬盘创建成功
启动bochs
./bin/bochs -f ./bin/bochsrc.disk
接着回车,键入c,可以看到
No bootable device,这不是启动盘,这还未正式启动bochs,下一章继续解决该问题