xinggm 2019-03-18
可以将bochs理解成为一个虚拟化平台,它是一个完全虚拟化的软件。bochs与虚拟化产品VMware和VirtualBox很像,但又有不同,后者更多的是一个产品,用于实现计算虚拟化,而前者则更多的是一个开发工具,用于操作系统的开发调试。下面是来自官网的描述:
Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Bochs can be compiled to emulate many different x86 CPUs, from early 386 to the most recent x86-64 Intel and AMD processors which may even not reached the market yet.
bochs可以跨平台安装,可以安装在Linux或者Windows等操作系统,Ubuntu(本文基于16.04版本)上安装非常简单,执行如下命令既可以安装:
sudo apt-get install bochs
我们以运行Linux0.12版本内核为例简单介绍一下bochs的使用。关于其更详细的原理后面在详细介绍。可以从后面地址下载Linux0.12的镜像文件。
http://oldlinux.org/Linux.old/bochs/linux-0.12-080324.zip
在Ubuntu环境下解压该文件,然后切换到目录下,执行如下命令即可运行bochs:
bochs -f bochsrc-0.12-hd.bxrc
其中bochsrc-0.12-hd.bxrc为配置文件,运行结果如下,可以看到与普通虚拟机软件很像,只是比较简陋。
由于bochs依赖一些软件,因此在首次运行的时候可能会有一些错误。下面是常见的错误及解决方法。
错误一:
00000000000p[ ] >>PANIC<< bochsrc:10: vgaromimage directive malformed.
改成
错误二:
Event type: PANIC Device: [ ] Message: dlopen failed for module 'x': file not found
这种情况是缺少软件包,安装相应的软件包即可,命令如下:
sudo apt-get install bochs-x
错误三:
bochs-biin: symbol lookup error: /usr/lib/bochs/plugins/libbx_x.so: undefined symbol: XpmCreatePixmapFromData
作者指出,我们换一种显示的方案就可以了。
首先按照bochs-sdl,用apt-get可以安装。
在我们的bochsrc文件中,加入一句话:
错误四:
00000000000p[KMAP ] >>PANIC<< line 38: unknown host key name 'XK_0' (wrong keymap ?)
注释掉下面这行
#keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
然后那红色的hello world就出来了