一. 熟悉实验环境
准备环境
实验平台
硬件环境是 IA-32(x86) 架构的 PC 机;
软件环境是软件环境是 Bochs + gcc + IDE+Linux0.11;
x86 模拟器 Bochs;
GCC编译器;
GDB调节器;
Ubuntu (GNU/Linux);
准备环境
hit-oslab 实验环境简称 oslab,是一个压缩文件(hit-oslab-linux-20110823.tar.gz),这个文件已经下载到了 /home/teacher 目录和 /home/shiyanlou/oslab(进入实验环境,就是点击左边的 terminal 打开终端以后,所在的目录就是 /home/shiyanlou,这是主目录)下,可以使用下面的命令解压展开压缩包即可工作。
# 进入到 oslab 所在的文件夹
$ cd /home/shiyanlou/oslab/
# 解压,并指定解压到 /home/shiyanlou/
# 这样的话,在 /home/shiyanlou/oslab/ 中就能找到解压后的所有文件
$ tar -zxvf hit-oslab-linux-20110823.tar.gz \
-C /home/shiyanlou/
# 查看是否解压成功
$ ls -al
# 除了压缩包 hit-oslab-linux-20110823.tar.gz 之外,其他的就是压缩包中的内容
copy
文件结构
Image文件
bochs目录
run脚本
hdc-0.11.img 文件
二. 使用方法
开始使用之前的准备活动:把当前目录切换到 oslab 下,用 pwd 命令确认,用 ls -l 列目录内容。
# 切换目录
$ cd /home/shiyanlou/oslab/
# 确认路径
$ pwd
# 查看目录内容
$ ls -l
copy
编译内核
首先要进入 linux-0.11 目录,然后执行 make 命令;
$ cd ./linux-0.11/
$ make all
copy
在多处理器的系统上,可以用 -j 参数进行并行编译,加快速度。
$ make -j 2
copy
在 Bochs 中运行最新编译好的内核很简单,在 oslab 目录下执行:
# 注意是在上层目录
# 刚刚编译是在 oslab/linux-0.11/ 文件夹下
$ cd ~/oslab/
# 执行 run 脚本
$ ./run
copy
内核调试分为两种模式:汇编级调试和 C 语言级调试。
汇编级调试
汇编级调试需要执行命令:
# 确认在 oslab 目录下
$ cd ~/oslab/
# 运行脚本前确定已经关闭刚刚运行的 Bochs
$ ./dbg-asm
copy
C语言级调试
C语言级调试需要执行命令:
$ cd ~/oslab
$ ./dbg-c
copy
打开另一个终端再执行以下命令:
$ cd ~/oslab
$ ./rungdb
copy
Ubuntu 和 Linux 0.11 之间的文件交换如何启动
开始设置文件交换之前,务必关闭所有的 Bochs 进程。
在 Ubuntu 上访问oslab 下的 hdc-0.11-new.img 内容的方法是:
$ cd ~/oslab/
# 启动挂载脚本
$ sudo ./mount-hdc
copy
之后,hdc 目录下就是和 0.11 内核一模一样的文件系统了,可以读写任何文件(可能有些文件要用 sudo 才能访问)。
# 进入挂载到 Ubuntu 上的目录
$ cd ~/oslab/hdc
# 查看内容
$ ls -al
copy
读写完毕,卸载这个文件系统:
$ cd ~/oslab/
# 卸载
$ sudo umount hdc
copy
学习时间 36分钟
操作时间 24分钟
按键次数 585次
实验次数 7次
报告字数 2113字
是否完成 完成