环境

  • Ubuntu20.04
  • Bochs 2.7

注:Ubuntu20 软件库中的Bocrchs版本是2.6

下载

bochs2.7 下载

image-20230401143039356

安装

安装依赖

$ sudo apt update
$ sudo apt-get install libx11-dev libc6-dev build-essential xorg-dev libgtk2.0-dev libreadline-dev

配置

解压

$ tar xvf  bochs-2.7.tar.gz
$ cd bochs-2.7

配置

$ sudo ./configure --with-x11 --with-x --enable-all-optimizations --enable-readline  --enable-debugger-gui --enable-x86-debugger --enable-a20-pin --enable-fast-function-calls --enable-debugger

可能会出现下面的错误提示,目前在我使用的环境中忽略该错误可以正常安装

error: cannot find input file: `ltdlconf.h.in'

编译安装

如果之前编译过但是没有成功,需要执行下面的命令清理编译的文件

$ make clean

正常编译安装

$ make 
$ sudo make install

测试

写一段汇编引导程序测试bochs,

; boot.asm
[org 0x7c00]
mov ax, 3
int  0x10

mov ax, 0
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0x7c00

mov ax, 0xb800
mov ds, ax
mov byte [0], 'H'

jmp $

times 510 - ($ - $$) db 0

db 0x55, 0xaa 

安装汇编编译器NASM

$ sduo apt install nasm

编译

$ nasm -f bin boot.asm -o boot.bin

创建磁盘引导镜像文件

$  bximage -q -hd=16 -func=create -sectsize=512 -imgmode=flat master.img

创建完成后的提示信息中最后一段记录下来,在bochs的配置文件中需要使用

image-20230401144341997

将 boot.bin 写入到主引导扇区

$ dd if=boot.bin of=master.img bs=512 count=1 conv=notrunc

配置bochs

$ bochs

输入"4" 回车

image-20230401144555242

接着输入配置文件的名称

image-20230401144718035

修改生成的配置文件 bochsrc ,其中第二处的修改是我们之前生成镜像文件是保存的信息

image-20230401144914890

启动bochrs

$ bochs -q

image-20230401145314856

输出一个字符H

image-20230401145837260

参考