Linux上Bochs的安装和配置
下载Bochs最新版
-
进入网址Bochs x86 PC emulator - Browse /bochs at SourceForge.net,点击最新版进入

-
选择相应的版本,此处为
Linux平台,所以选择bochs-2.7.tar.gz,点击下载
-
解压后使用
scp命令上传至Linux平台(假设下载在windows平台进行)
编译安装Bochs
configure
-
配置
configure工具,生成Makefile1
./configure --with-x11 --with-wx --enable-plugins --enable-debugger --enable-debugger-gui --enable-readline --enable-cpp --enable-idle-hack --enable-cpu-level=6 --enable-x86-64 --enable-smp --enable-vmx=2 --enable-svm --enable-avx --enable-x86-debugger --enable-monitor-mwait --enable-configurable-msrs --enable-long-phy-address --enable-repeat-speedups --enable-fast-function-calls --enable-trace-linking --enable-ltdl-install --enable-assert-checks --enable-3dnow --enable-evex --enable-usb --enable-voodoo
-
若提示缺少
gcc、cc、cl、g++等则安装即可
-
如提示缺少
configure命令,则使用chmod 764 configre改变文件属性即可
-
提示
The readline library was disabled because it was not found,安装libreadline-dev即可 -
提示
handlers-chaining speedups are not supported with internal debugger or gdbstub yet
此时参考官方文档,去除
--enable-handlers-chaining。 -
提示
WARNING: Bochs for wxWidgets cannot be compiled here, disabling it
此时安装
libwxbase3.0-dev库和libwxgtk3.0-gtk3-dev库 -
提示
Package gdk-3.0 was not found in the pkg-config search path。安装libgtk-3-dev库
Make
-
执行
make命令 -
找不到
config.h头文件和osdep.h头文件
分析可得,此时
bx_debug文件夹内的debug.h文件找不到config.h文件和osdep.h文件,经查看,这两个文件都在bochs-2.7目录下,移入bx_debug目录即可或者更改debug.h中的路径。其他缺少的头文件可使用类似方式解决。 -
make: *** 没有规则可制作目标“misc/bximage.cc”,由“misc/bximage.o” 需求。 停止。出现类似问题,只需要找到文件,将其后缀由cpp改为cc。
make install
- 执行
sudo make install命令即可。
检测安装结果
-
执行
bochs命令,出现如下结果则表示安装成功
配置Bochs
-
为将要调试的操作系统配置虚拟硬件环境。此环境通过
bochsrc描述,默认此文件所在目录为/etc/bochs-init/。当运行bochs时默认读取当前工作目录下的bochsrc文件。 -
配置信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45configuration file generated by Bochs
plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, iodebug=1
config_interface: textconfig
display_library: x
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
boot: floppy
floppy_bootsig_check: disabled=0
floppya: type=1_44, 1_44="boot.img", status=inserted, write_protected=0
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=none
ata0-slave: type=none
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata1-master: type=none
ata1-slave: type=none
ata2: enabled=0
ata3: enabled=0
pci: enabled=1, chipset=i440fx
vga: extension=vbe, update_freq=5
cpu: count=1:1:1, ips=4000000, quantum=16, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0, msrs="msrs.def"
cpuid: x86_64=1,level=6, mmx=1, sep=1, simd=avx512, aes=1, movbe=1, xsave=1, apic=x2apic, sha=1, movbe=1, adx=1, xsaveopt=1, avx_f16c=1, avx_fma=1, bmi=bmi2, 1g_pages=1, pcid=1, fsgsbase=1, smep=1, smap=1, mwait=1, vmx=1
cpuid: family=6, model=0x1a, stepping=5, vendor_string="GenuineIntel", brand_string="Intel(R) Core(TM) i7-4770 CPU (Haswell)"
print_timestamps: enabled=0
debugger_log: -
magic_break: enabled=0
port_e9_hack: enabled=0
private_colormap: enabled=0
clock: sync=none, time0=local, rtc_sync=0
log: -
logprefix: %t%e%d
debug: action=ignore
info: action=report
error: action=report
panic: action=ask
keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
mouse: type=ps2, enabled=0, toggle=ctrl+mbutton
speaker: enabled=1, mode=system
parport1: enabled=1, file=none
parport2: enabled=0
com1: enabled=1, mode=null
com2: enabled=0
com3: enabled=0
com4: enabled=0
megs: 2048参考官方文档bochs: The Open Source IA-32 Emulation Project (New Bochs Documentation) (sourceforge.io)
-
配置完成后运行
bochs,出错及处理如下bochs: cannot connect to X server,此时是因为本地机器不支持X11转发。
测试
-
使用
bximage制作1.44MB软盘
-
下载
Linux早期版本的bochs镜像文件。此处选择bootroot-0.11-040928.zip下载,解压后如下。其中bootroot-0.11即为此处要用的软盘镜像文件。下载地址Linux Bochs镜像下载
-
将
bootimage-0.11写入到boot.img中1
dd if=bootroot-0.11 of=boot.img

-
运行
bochs,sudo bochs。出现如下界面,即为正确。
参考
- Linux Bochs镜像下载
- bochs安装配置,搭建小型操作系统运行环境 - 知乎 (zhihu.com)
- assembly - FLOPPY: read() on floppy image returns 0 - Stack Overflow
- Bochs x86 PC emulator - Browse /bochs at SourceForge.net
- X windows libraries?? (narkive.com)
- c - Gtk can’t find “” - Stack Overflow
- bochs: The Open Source IA-32 Emulation Project (New Bochs Documentation) (sourceforge.io)