调试操作系统专用虚拟机--Bochs

来源:互联网 发布:301重定向域名会变么 编辑:程序博客网 时间:2024/05/12 22:02
http://www.cnblogs.com/teafree/

当我们编写操作系统时,像编写其他软件一样,都需要一个调试器,Bochs是一个很好的虚拟机,可以用来调试操作系统,完全模拟硬件。

一、安装

Bochs的官网是:http://bochs.sourceforge.net/

可以从网上下载Bochs的源码并解压到一人文件夹,然后转到源码目录,实行如下语句可以编译、安装Bochs。

1 ./configure --enable-debugger --enable-disasm
2 make
3 sudo make install

./configure后的参数是为了启用虚拟机的调试功能,我们用这个虚拟机的目录的也就是为了调试自己写的操作系统。

二、启动

Bochs是基于配置文件的,Bochs的配置文件一般如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# how much memory the emulated machine will have
megs: 32
 
# filename of ROM images
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin
 
# what disk image will be used
floppya: 1_44=freedos.img, status=inserted
floppyb: 1_44=pm.img, status=inserted
 
# choose the boot disk
boot: a
 
# where do we send log message?
log: bochsout.txt
 
# disable the mouse
mouse: enabled=0
 
# enable key mapping,using US layout as default.
keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map

  在这个配置文件中,我们只需要注意

floppya: 1_44=freedos.img, status=inserted

  和

boot: a

  这两条语句即可,freedos.img是一个软件盘映像,第一条语句的意思是在软盘驱动器A中插入了一个软盘,而这个软盘就是那个软盘映像 *.img,第二语句是指从软盘驱动器A启动系统。如果此时软盘中有我们写的操作系统,就可以启动我们的操作系统了。

要启虚拟机,只要转到配置文件所在的目录,执行如下语句

bochs

  Bochs就会启动并在当前目录下按顺序寻找如下的默认配置文件

.bochsrc
bochsrc
bochsrc.txt
bochsrc.bxrc( 仅对Windows有效)

  所以配置文件名必须为上述文件名之一。

如果虚拟机被编译为启用调试功能,执行“bochs”指令后还会出现一个文字菜单供选择,如果想略过这个步骤,可以在“bochs”后加个参数,如下

bochs -q


三、用Bochs调试操作系统

当虚拟机启动后,会在第一条指令执行前暂停下来,在PC中一般在f000:fff0地址处,这个地址所对应的指令是jmp far f000:e05b,控制台的输出如下

(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0

  此时只要输入“s”再回车就可以执行这条指令,如果想要程序流一直执行下去直到断点才停,可以输入“c" 再回车,程序执行后将停在断点处。设置断点方法如下

b 0x7c00

  表示在地址为0x7c00处设置一个断点,指令执行到地址为0x7c00处将暂停。

  "n"也是单步执行指令,但遇到函数后将跳过函数体,不会单步进入函数中。

更详细的信息可查阅Bochs的帮助文档。

四、编译时的其他选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
./configure –enable-cdrom \
–enable-debugger \
–enable-disasm \
–disable-readline \
–enable-sb16 \
–enable-ne2000 \
–enable-vbe \
–enable-all-optimizations \
–enable-cpu-level=6 \
–enable-sse=2 \
–enable-3dnow \
–enable-vme \
–enable-sep \
–enable-x86-debugger \
–enable-pci \
–enable-pcidev \
–enable-clgd54xx \
–enable-usb \
–enable-plugins \
–with-wx \

  如果不喜欢控制台的字符操作,可以加个"--with-wx"这个配置,启用图形界面

/configure --enable-debugger --enable-disasm --with-wx
 make
 sudo make install

  


<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(1479) | 评论(0) | 转发(1) |
0

上一篇:Centos 6.0 源码编译安装 bochs -2.5.1 成功

下一篇:linux网络及防火墙配置命令

相关热门文章
  • linux 常见服务端口
  • xmanager 2.0 for linux配置
  • 【ROOTFS搭建】busybox的httpd...
  • openwrt中luci学习笔记
  • 什么是shell
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
原创粉丝点击