Bochs 2.6.8 虚拟机环境配置:Ubuntu 22.04 下 3 步完成 MBR 引导测试

📅 2026/7/8 22:15:41 👁️ 阅读次数 📝 编程学习
Bochs 2.6.8 虚拟机环境配置:Ubuntu 22.04 下 3 步完成 MBR 引导测试

Bochs 2.6.8 虚拟机环境配置:Ubuntu 22.04 下 3 步完成 MBR 引导测试

在操作系统开发的学习过程中,搭建一个可靠的实验环境是至关重要的第一步。Bochs 作为一款开源的 x86 虚拟机软件,因其精确的硬件模拟能力和调试功能,成为操作系统开发者的首选工具。本文将详细介绍如何在 Ubuntu 22.04 系统上配置 Bochs 2.6.8 环境,并通过一个简单的 MBR 引导程序测试验证环境配置的正确性。

1. 环境准备与依赖安装

在开始配置 Bochs 之前,我们需要确保系统具备必要的编译环境和依赖库。Ubuntu 22.04 提供了完善的软件包管理工具,使得这一过程变得简单高效。

首先更新系统软件包列表并升级已安装的软件包:

sudo apt update && sudo apt upgrade -y

接下来安装编译 Bochs 所需的基础工具链和依赖库:

sudo apt install -y build-essential nasm xorg-dev libghc-x11-dev

这些软件包提供了以下关键组件:

  • build-essential:包含 GCC 编译器、make 等基础开发工具
  • nasm:我们将使用的汇编语言编译器
  • xorg-devlibghc-x11-dev:Bochs 图形界面所需的 X11 开发库

提示:如果在后续步骤中遇到缺失库的错误,可以通过apt search命令查找并安装相应的开发包。

2. 获取并编译 Bochs 2.6.8

Bochs 的源代码可以从其官方项目页面获取。由于网络访问问题,建议提前下载好源代码包并传输到 Ubuntu 系统中。

解压源代码包并进入解压后的目录:

tar -zxvf bochs-2.6.8.tar.gz cd bochs-2.6.8

创建一个独立的安装目录以避免系统文件污染:

mkdir -p ~/bochs

现在我们可以配置 Bochs 的编译选项。以下配置启用了调试功能和必要的硬件支持:

./configure --prefix=$HOME/bochs \ --enable-debugger \ --enable-disasm \ --enable-iodebug \ --enable-x86-debugger \ --with-x \ --with-x11 \ LDFLAGS='-pthread'

配置完成后,开始编译和安装:

make && make install

编译过程可能需要一些时间,取决于系统性能。完成后,Bochs 的可执行文件和配套文件将被安装到~/bochs目录中。

3. 配置 Bochs 运行环境

要让 Bochs 正常运行,我们需要准备两个关键文件:配置文件和一个虚拟硬盘映像。

3.1 创建 Bochs 配置文件

在 Bochs 安装目录下创建配置文件bochsrc.disk

cd ~/bochs touch bochsrc.disk

编辑该文件,添加以下配置内容(注意根据实际路径修改相关参数):

megs: 32 romimage: file=$HOME/bochs/share/bochs/BIOS-bochs-latest vgaromimage: file=$HOME/bochs/share/bochs/VGABIOS-lgpl-latest boot: disk log: bochs.out mouse: enabled=0 keyboard: keymap=$HOME/bochs/share/bochs/keymaps/x11-pc-us.map ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="hd60M.img", mode=flat, cylinders=121, heads=16, spt=63

3.2 创建虚拟硬盘映像

使用 Bochs 自带的bximage工具创建虚拟硬盘:

bin/bximage -q -hd=60 -func=create -sectsize=512 -imgmode=flat hd60M.img

这将创建一个 60MB 的扁平模式虚拟硬盘映像。

3.3 编写并测试 MBR 引导程序

创建一个简单的 MBR 引导程序mbr.s

SECTION MBR vstart=0x7c00 mov ax, cs mov ds, ax mov es, ax mov ss, ax mov sp, 0x7c00 ; 清屏 mov ax, 0x0600 mov bx, 0x0700 mov cx, 0 mov dx, 0x184f int 0x10 ; 显示字符串 mov ax, message mov bp, ax mov cx, 12 mov ax, 0x1301 mov bx, 0x0007 int 0x10 jmp $ message db "Hello World!" times 510-($-$$) db 0 db 0x55, 0xaa

编译这个汇编程序并写入虚拟硬盘:

nasm -f bin -o mbr.bin mbr.s dd if=mbr.bin of=hd60M.img bs=512 count=1 conv=notrunc

3.4 启动 Bochs 测试

现在可以启动 Bochs 运行我们的测试程序了:

bin/bochs -f bochsrc.disk

在 Bochs 启动界面输入c继续执行,如果一切配置正确,你将看到屏幕上显示 "Hello World!" 字符串。

4. 常见问题排查

在实际配置过程中,可能会遇到各种问题。以下是几个常见问题及其解决方案:

  1. X11 相关错误

    X windows system was not found

    确保已安装xorg-devlibghc-x11-dev包,并检查 X11 开发文件是否存在。

  2. 配置文件路径错误

    romimage: could not open ROM image file

    检查bochsrc.disk中所有文件路径是否正确,特别是romimagevgaromimage的路径。

  3. 权限问题

    bochs: could not open hard drive image file

    确保当前用户对hd60M.img文件有读写权限。

  4. MBR 未正确引导: 如果 Bochs 启动后没有显示预期输出,检查:

    • MBR 程序是否正确编译
    • dd命令是否正确执行
    • 虚拟硬盘配置是否正确

对于更复杂的调试需求,可以启用 Bochs 的调试器功能,在配置文件中添加:

magic_break: enabled=1 debugger_log: debugger.out

然后在 Bochs 启动后使用break 0x7c00命令在 MBR 加载地址设置断点。

通过以上步骤,我们成功在 Ubuntu 22.04 系统上配置了 Bochs 2.6.8 虚拟机环境,并验证了基本的 MBR 引导功能。这个环境为后续的操作系统开发学习奠定了坚实基础。