实验内容

1.安装vmware虚拟机(建议安装15.1+版本),并在虚拟机中安装ubuntu系统
2.下载bochs源码,编译并安装bochs环境
3.使用bochs自带工具bximage创建虚拟软驱
4.在ubuntu中下载nasm
5.阅读、编译boot.asm,并反汇编阅读
6.修改bochsrc,运行并调试第一个程序

注意事项

1.bochs下载:http://bochs.sourceforge.net/getcurrent.html 2.bochs编译注意事项:
可能需要安装build-essential等,可在编译过程中发现
3.修改bochsrc中部分内容:
修改romimage 和vgaromimage对应的文件位置,以实际安装位置为准,注释掉keyboard_mapping一行

步骤

1.在VMware上安装Ubuntu开发环境
2.把bochs的源码移到安装好的Ubuntu虚拟机中,并在Ubuntu里编译安装bochs环境
3.使用bochs自带的bximage工具生成虚拟软盘:输入fd后生成软盘映像a.img
4.在Ubuntu中下载nasm
5.使用nasm将汇编程序boot.asm编译:

nasm boot.asm -o boot.bin

6.使用dd命令将引导扇区写进软盘:

dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

7.编写bochscr文件
8.启动

bochs -f bochsrc

9.调试

具体实现

编译并安装bochs环境

1.将bochs源码复制到ubuntu后解压:

tar zxvf bochs-2.6.9.tar.gz

2.进入bochs-2.6.9目录,运行configure脚本:

./configure –enable-debugger –enable-disasm

(–enable-debugger和 –enable-disasm 表示开启调试和反汇编功能)
3.第2步正确运行后,会产生一个Makefile文件,于是可以编译:

make

4.安装:

sudo make install

win95镜像img可上网_Ubuntu


这一步出现了两个错误:

无法获取“./bochsdbg”的文件状态(stat):没有那个文件或目录

make;[install_bin] 错误1(忽略)

解决方法:在make之后将bochs拷贝一份,命名为bochsdbgmkdir: 无法创建目录”/usr/local/share/bochs/keymaps”: 文件已存在

解决方法:以超级用户进入/usr/local/share/bochs/,执行rm -r keymaps命令

安装成功:

win95镜像img可上网_操作系统_02

使用bochs

1.在Ubuntu中下载nasm:

sudo apt-get install nasm

2.使用bochs自带的bximage工具生成虚拟软盘;
3.使用nasm将汇编程序boot.asm编译:

nasm boot.asm -o boot.bin

win95镜像img可上网_操作系统_03


4.使用dd命令将引导扇区写进软盘:

dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

如果不用参数“conv=notrunc”,软盘映像文件“a.img”就会被截断。

5.编写bochscr配置文件,其中”romimage”和”vgaromimage”指定的文件对应真实机器的BIOS和VDA BIOS.

win95镜像img可上网_《orange‘s 一个操作系统的实现》_04


6.启动

bochs -f bochsrc

7.调试

win95镜像img可上网_操作系统_05


win95镜像img可上网_《orange‘s 一个操作系统的实现》_06