bochs 中文文档 下载 App

黑屏与无输出——BIOS 和 VGA ROM 没加载怎么办

症状

Bochs 启动了,但模拟窗口一片黑——什么都不显示(包括 BIOS POST 界面、Bochs 日志里也只有 VGA ROM 加载成功但无后续)。

排查清单(按出现频率排序)

1. VGA BIOS 文件路径错

最常见的原因。bochsrc 里写了:

vgaromimage: file=VGABIOS-lgpl-latest.bin

但这个文件实际不存在于你指定的位置,bochsrc 解析时没报错但 VGA BIOS 加载失败。

检查方法:

  1. 确认 Bochs 安装目录下有这个文件(通常在安装目录根或 bios/ 子目录)
  2. Windows 路径建议用正斜杠 /(反斜杠 \ 在 bochsrc 里可能被当转义符)
  3. 或者先写相对路径(bochsrc 所在目录),确认能找到再改成绝对路径
# 正确示例
vgaromimage: file=C:/Program Files/Bochs-3.1/VGABIOS-lgpl-latest-cirrus.bin

# 错误示例(反斜杠)
vgaromimage: file=C:\Program Files\Bochs-3.1\VGABIOS-lgpl-latest-cirrus.bin
# ↑ bochsrc 把 \B 当转义符了!

2. VGA extension 和 vgaromimage 不匹配

bochsrc 里写了 vga: extension=cirrus 但 vgaromimage 却指向默认 Bochs VGA BIOS(不是 Cirrus 版本)。

两种选择必须配:

vga extension对应的 vgaromimage
std(默认 Bochs VGA)VGABIOS-lgpl-latest.bin
cirrus(Cirrus GD5446)VGABIOS-lgpl-latest-cirrus.bin
s3(S3 Trio)需要单独下载 S3 VGA BIOS

Bocha 安装包里通常同时包含默认和 Cirrus 两种 VGA BIOS——确认选对了。

3. BIOS 加载地址错(仅旧 BIOS)

老式 64KB BIOS(BIOS-bochs-legacy)和新式 128KB BIOS(BIOS-bochs-latest)的加载地址不同:

BIOS 类型bochsrc address 值
64KB0xfffe0000
128KB0xfffc0000

如果你用了 BIOS-bochs-latest(128KB)但 bochsrc 里写了 address=0xfffe0000(64KB 地址),BIOS 会加载到错误位置,执行时崩溃——黑屏。

最简单的做法:不写 address,让 Bochs 自动推断。只有自动推断不准时才手动指定。

4. bochsrc 语法错误导致关键字段被跳过

bochsrc 解析器对语法极其严格:

检查 bochsrc 里的关键字段:

# 正确
vga: extension=cirrus

# 错误(冒号后没空格)
vga:extension=cirrus
# Bochs 可能把整个 vga 行跳过 → 用默认 VGA(可能和 vgaromimage 不匹配)

快速自检:复制 bochsrc 里的关键字段到 Bochs Launcher 的 bochsrc 编辑器里加载,Launcher 会高亮显示解析成功的行和语法错误的行。

5. display_library 导致黑屏

bochsrc 里 display_library: term 或 display_library: nogui 表示纯终端/无界面——这种情况下模拟窗口本来就不会显示任何东西,所有输出到控制台。

如果你想在图形窗口里看到 BIOS 界面:

display_library: wx            # 推荐(Windows 自带)
display_library: sdl           # 快速(需 SDL 库)
display_library: x11           # Linux 原生

6. 宿主机显示驱动不兼容(极少见)

某些老版本 Bochs + 新显示驱动可能导致渲染异常。解决:

快速恢复:极简 bochsrc 验证

如果 Bochs 启动就黑屏,先写一个极简 bochsrc 验证 BIOS + VGA 配置本身没问题:

romimage: file=BIOS-bochs-latest
vgaromimage: file=VGABIOS-lgpl-latest.bin
cpu: model=pentium, count=1
memory: guest=16, host=16
boot: none
mouse: enabled=0
display_library: wx
panic: action=ask

这个配置没有磁盘、没有网卡、没有 PCI——就是让 Bochs 启动 BIOS POST 后停住。如果这个能显示 BIOS POST 界面,说明 BIOS + VGA 没问题,问题出在其他字段。然后逐步加回磁盘、PCI、VGA extension 等字段——每加一个启动一次,就能定位到是哪一行导致黑屏。

BIOS POST 界面是什么样的

BIOS POST 成功后应该能看到类似这样的文本输出在模拟窗口:

Bochs Bios v1.0.9
Build from source on Dec 14 2026
You can also try bochs.exe for more BIOS features...
00000MB RAM
Booting from Floppy...
Boot failed: could not read the boot disk

这段文字是 BIOS 在 VGA 上输出的——如果黑屏,就是 BIOS 连 VGA 都没初始化好。

bochsdbg 里怎么看黑屏原因

如果上面都检查过了还是黑屏,用 bochsdbg 启动:

bochsdbg.exe -q
bochs:1> c                  # 让它跑起来
# BIOS 在黑屏后 Bochs 可能会因为 panic 停住
bochs:2> info registers     # 看 CR0、EIP——有没有跑到 BIOS 区域
bochs:3> xp /16bx 0xfffc0000   # 检查 BIOS 是否真的被加载到了 ROM 区域

如果 BIOS 区域全是 0,说明 BIOS 根本没加载——bochsrc 的 romimage 路径肯定有问题。如果 BIOS 在 ROM 区域,但 EIP 没跳到 BIOS(CR0.PG=0 时物理 EIP < 0xFFFC0000),说明 BIOS 入口地址跳转有问题——可能是加载地址错了。