Linux下 虚拟机Bochs的使用
1.虚拟一个软盘
?
在安装好的Bochs组件中,有一个工具叫做bximage,它不但可以生成虚拟软盘,还可以生成虚拟硬盘,这里我们生成虚拟软盘,(这是因为后面我们的测试程序是给予软盘的)。具体步骤如下:

至此就生成了一个1.44M的虚拟软盘。
2.一个简单的测试程序我们打算从软盘启动虚拟机,这样的话我们就需要一个软盘的引导程序,来启动虚拟机,引导程序我们使用Orange's一个操作系统的实现学习(1)中的引导程序,在这里就不贴出其源代码了,具体的见原文。生成的文件:boot.bin
3.将测试程序写到虚拟软盘中要将引导程序写到虚拟软盘中,用到dd命令:
4.配置虚拟机该准备的已经准备好了,接下来就是要创造一个虚拟机。
首先是安装Bochs虚拟机:
按照提示选线6为Begin simulation(开始模拟器),我们直接回车即可。好了我们的虚拟机器已经运行起来了,看以下效果:
由于我们的虚拟软盘中没有Loader.bin所以显示的是NO LOADER。
?
好了到此我们的Bochs已经运行起来了,达到了我们的目的了。
6.Bochs高级用法既然Bochs配置起来相对其他的虚拟机较为麻烦,为什么我们还使用它呢?这是因为它有着其他虚拟机没有的功能就是能调试操作系统,相对的代价就是运行速递满,肯定没其他的虚拟机快。
但是这里需要解决一个问题就是默认的安装bochs是不带调试功能的,因此需要自己手动编译带调试功能的bochs,首先下载代码:
查看cpu信息:
?
?
?
?
?
这里需要注意的是要查看段寄存器:使用命令srge可以看到。
查看堆栈:print-satack查看内存物理地址内容: xp /nuf addr (xp /40bx 0x9013e)查看线性地址内容: x /nuf addr (x /40bx 0x9013e)反汇编一段内存: u start end (u 0x30400 0x3040D)每执行一条指令就打印CPU信息: trace-reg (trace-reg on)单步执行遇到函数跳过: n显示当前断点: info break单步执行:s?