- 实验硬件:IA_32(x86)架构
软件环境:Bochs gcc 操作系统Linux0.11 源码
x86模拟器Bochs
Bochs是一个免费且开放源代码的IA-32(x86)架构PC机模拟器。在它模拟出的环境中可以运行Linux、DOS和各种版本的Windows等多种操作系统。
GCC编译器
DB调试器
Ubuntu实验环境的工作模式
- 实验环境我们使用 hit-oslab(哈工大操作系统课程配套实验环境)hit-oslab-linux-20110823.tar.gz 已经内置了bochs,实验环境缺省为bochs
- 解压后会发现linux0.11/Image镜像文件和hdc-0.11.img文件系统
- hdc-0.11.img是Minix文件系统的镜像,Linux所有版本都支持这个文件系统,所以可以直接在宿主Linux上通过mount命令访问此文件里的文件,达到宿主系统和bochs内运行的Linux0.11之间交换文件的效果
- hdc-0.11.img内包含的文件有
- bsah shell
- 一些基本的Linux命令、工具、如 cp、rm、mv、tar
- vi
- gcc1.4
- as86和ld86
- Linux0.11的源代码,可在0.11下编译,然后覆盖现有的二进制内核
准备使用
tar -zxvf hit-oslab-linux-20110823.tar.gz;
cd oslab;
cd linux-0.11;
make all;
返回oslab目录 ./run
出现Bochs的窗口,里面有引导Linux的启动过程,最后停止在“[/usr/root/]#”内核调试
- 汇编调试 $ ./dbg-asm 可以用命令help来查看调试系统用的基本命令。更详细的信息请查阅Bochs使用手册。
- c语言调试: ./dbg−c然后再打开一个终端窗口,进入oslab目录后,执行: ./rungdb新终端窗口中运行的是GDB调试器。关于gdb调试器请查阅GDB使用手册。
挂在文件系统
$ sudo ./mount-hdc
$ sudo umount hdc
注意1:不要在0.11内核运行的时候mount镜像文件,否则可能会损坏文件系统。同理,也不要在已经mount的时候运行0.11内核。
注意2:在关闭Bochs之前,需要先在0.11的命令行运行“sync”,确保所有缓存数据都存盘后,再关闭Bochs。