下载Bochs最新版
-
进入网址Bochs x86 PC emulator - Browse /bochs at SourceForge.net,点击最新版进入
-
选择相应的版本,此处为
Linux
平台,所以选择bochs-2.7.tar.gz
,点击下载 -
解压后使用
scp
命令上传至Linux
平台(假设下载在windows
平台进行)
编译安装Bochs
configure
-
配置
configure
工具,生成Makefile
./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
文件。 -
配置信息
# configuration 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
中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)