bochs 中文文档 下载 App

Linux 发行版实验——Debian Fedora 在 Bochs 里的体验差异

为什么在 Bochs 里跑 Linux

跑 Linux 有三种常见的模拟器选择:

场景推荐原因
日常开发、上网、编译代码VirtualBox / QEMU + KVM硬件虚拟化,速度接近原生
学习 OS 内核、调试引导Bochs内置调试器、指令级精度
嵌入式 / ARM 开发QEMU跨架构模拟

Bochs 不是跑 Linux 桌面的最佳选择——它是研究工具。但 Bochs 里跑 Linux 有独特价值:

bochsrc 推荐配置

romimage: file=BIOS-bochs-latest, address=0xfffc0000
vgaromimage: file=VGABIOS-lgpl-latest-cirrus.bin

cpu: model=pentium4, count=1, ips=15000000
memory: guest=256, host=256

ata0-master: type=disk, path="linux.img", mode=flat, cylinders=522, heads=255, spt=63
ata1-master: type=cdrom, path="debian-12.iso", status=inserted
boot: cdrom, disk

vga: extension=cirrus, update_freq=10
pci: enabled=1, chipset=i440fx, slot1=cirrus, slot2=e1000

keyboard: keymap=us
mouse: enabled=1
display_library: wx

e1000: enabled=1, mac=00:40:3c:00:00:02, ethmod=slirp

log: bochsout.txt
panic: action=ask

发行版选择建议

Debian / Ubuntu

能装,但很慢。Debian 安装程序在 Bochs 里能正常运行,但:

如果非要装 Debian,选 Text Mode 安装(不要图形化安装界面)。装完后不要启动 Display Manager,用纯终端模式——这样 CPU 压力小得多。

Fedora / RHEL

类似 Debian,能装但图形化桌面在 Bochs 里不实用。RHEL 作为服务器 OS 反而更适合——本身就是为命令行设计的。

轻量发行版推荐以下:

发行版大小Bochs 里的表现
Tiny Core Linux~15MB极好——专为小内存/老硬件设计,命令行+极简 GUI 都流畅
Puppy Linux~200MB好——完整桌面但资源消耗极低,可直接引导
FreeDOS~1.5MB极好——不是 Linux 但是最常用的 Bochs 引导盘
Debian Netinst~350MB安装完成后换成 runlevel 3 跑
Slackware Minimal~300MB老派发行版,命令行为主

Linux 在 Bochs 里的独特价值

调试 Linux 内核引导

Linux Kernel 启动链:

Bootloader (GRUB2 / LILO) → kernel → decompress → C start_kernel()

在 Bochs 里追踪:

# bochsrc 里 CPU model=pentium4 + 开 x86-64 编译开关
# bochsdbg 里:

bochs:1> pb 0x7c00                    # 给 GRUB2 引导扇区下断点
bochs:2> c
# 或者直接给 Linux Kernel 的物理地址下断点
bochs:3> pb 0x100000                  # kernel 解压后的加载地址(通常是 1MB 上)
bochs:4> c
# 或者给 vmlinuz 解压入口下断点

用 Bochs 调试自己编的内核

假设你编了一个 Minimal Linux Kernel(只支持 initramfs),想在 Bochs 里调试:

  1. 编译内核时加 -g 生成 debug symbols
  2. bochsrc 里加载 kernel + initrd(通过 QEMU bootloader 或自定义 bootloader)
  3. bochsdbg 里给内核入口地址下断点
  4. 调试器里逐条追踪——此时你有完整的 debug symbols(可以用 addr2line 把地址翻成源码行号)

MIT 6.828 的实验二就是:用 Bochs 调试自己写的 x86 内核。

Linux + Bochs 的性能

坦率说:不适合日常使用。即使是 Tiny Core 这种轻量发行版,在 Bochs 里启动也要 10-20 秒(真实机器 5 秒以内),编译一个简单的 C 程序需要 10-20 秒(真实机器 1 秒)。

Bochs 模拟的 IPS 上限取决于宿主 CPU 的单核性能。现代 i7/i9 单核大约每秒执行 20 万-50 万条 Bochs 模拟指令——而真实 x86 CPU 每秒执行几十亿条。这个差距是 Bochs 作为解释执行模拟器的根本限制。

用 QEMU 替代日常 Linux 运行

如果你只是想在 Linux 宿主上跑一个 Linux 客户机做开发测试,完全没必要用 Bochs。QEMU + KVM 硬件虚拟化的速度接近原生,体验好得多。

Bochs 的 Linux 价值只在调试——你需要指令级精度的时候。

FreeDOS:最常用的 Bochs 引导盘

FreeDOS 是开源的 DOS 替代品,经常在 Bochs 里用作引导盘:

FreeDOS 在 Bochs 里启动大约 2-5 秒,命令行响应极快(DOS 几乎不占 CPU)。

总结

想用 Bochs 做什么建议
装一个图形化 Linux 桌面换 VirtualBox
在 Bochs 里调试 Linux 内核极合适
跑轻量命令行工具选 Tiny Core 或 FreeDOS
学 OS 内核课程首选 Bochs