调试操作系统-bochs使用入门
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev
sudo apt-get install libc6-dev
sudo apt-get install vgabios bochs bochs-x bximage
可直接安装bochs、vgabios、boch-x、bximage,但这个版本的bochs并没有调试功能,更好的方法还是通过bochs源码安装。
http://bochs.sourceforge.net/
找到bochs的SourceForge下载页面并进入。
Windows用户选择win32或win64的zip压缩包或exe文件,LInux用户选择.tar.gz文件。
若下载的版本是bochs-2.6.9.tar.gz,安装过程大致如下:
$ tar zxvf bochs-2.6.9.tar.gz 解压缩
$ cd bochs-2.6.9 打开文件夹
$ ./configure --enable-debugger --enable-disasm 开启调试功能
$ make 此步骤需要等待数十秒
$ sudo make install
出现文件未找到的情况,请确保电脑上已安装了本文开始提到的软件。
遇到“usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbol 'pthread_create@@GLIBC_2.1'
//lib/i386-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line” 类似的提示,只需要在bochs-2.6.9文件夹中的Makefile中的LIBS后面添加-lpthread,然后重新make即可。
遇到“/usr/bin/ld: gui/libgui.a(x.o): undefined reference to symbol 'XSetForeground'
/usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status” 类似的提示,可以考虑在执行configure时添加参数LIBS='-lX11',即
./configure --enable-debugger --enable-disasm --enable-readline LIBS='-lX11'
在此再次强调,遇到问题请首先检查本文开始提到的软件是否已经安装,不少错误都是由此导致的。
遇到“install: 无法获取"./bochsdbg" 的文件状态(stat): 没有该文件或目录”,需要在make后,将bochs拷贝一份,命名为bochsdbg。在bochs-2.6.9文件夹下打开命令行,键入cp bochs bochsdbg即可。
bochs需要配置文件描述硬件信息,配置文件的命名是任意的,bochs默认的配置文件名为bochsrc.txt。
# 虚拟机内存大小
msg:32
# 对应真实机器的BIOS和VGA BIOS
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest
# 设置bochs使用的磁盘:软盘使用关键字floppya,硬盘使用disk
# 若有多个软盘,可写floppya,floppyb;例如:
floppya: 1_44=a.img, status=inserted
#设定启动磁盘
boot:floppy
# 或者是 boot:disk
#目录信息地址
log:/tmp/bochsout.txt
#鼠标是否可用
mouse:enabled=0
#键盘快捷键是否可用,使用美国键盘布局(US layout)作为默认值
keyboard_mapping:enable=1,map=/usr/share/bochs/keymaps/x11-pc-us.map
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#这一句是根据bximage生成的,后面会解释。
ata0-master: type=disk, path="/home/dante/workspace/os/hd60M.img", mode=flat, cylinders=121, heads=16, spt=63
使用bximage可制作虚拟硬盘。不用一次键入一整条语句。可直接在命令行中键入“bximage”,然后根据bximage程序的提示制作镜像。
在命令行中的bximage命令的第一个参数:hd或fd
hd 硬盘镜像
fd 软盘镜像
如果选择硬盘镜像:
第二个参数:flat、sparse或growing,默认flat
第三个参数键入硬盘大小(MB)
第四个参数键入镜像文件名称
如果选择软盘镜像:
第二个参数选择软盘尺寸(英寸),默认1.44
第三个参数键入镜像文件名称
if是输入文件,由代码汇编生成的二进制文件;of是输出文件,即上一步生成的虚拟磁盘。
如果只有bootsect一个程序,键入以下这行代码即可。
$ dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
bochsrc.txt是bochs默认的配置文件名称。
命令行键入
$ bochs -f bochsrc.txt
即可启动。
http://blog.csdn.net/zhaodedong/article/details/51082128
http://blog.csdn.net/trochiluses/article/details/8970874
http://www.voidcn.com/blog/cloudblaze/article/p-6227296.html
https://my.oschina.net/unclegeek/blog/56095
https://www.cnblogs.com/JohnShao/archive/2011/10/23/2221565.html