熟悉实验环境,为下面的实验奠定基础。
硬件环境:IA-32(x86) 架构的 PC 机
软件环境:x86 模拟器 Bochs 、 GCC 编译器 、GDB 调试器 、Ubuntu (GNU/Linux)
根据实验要求编写应用程序、修改 Linux 0.11 的源代码,用 gcc 编译后,在 Bochs 的虚拟环境中运行、调试目标代码。
编译内核
运行
调试
文件交换
# 进入到 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
开始使用之前的准备活动:把当前目录切换到 oslab 下,用 pwd 命令确认,用 ls -l 列目录内容。
首先要进入 linux-0.11 目录,然后执行 make 命令:
$ cd ./linux-0.11/
$ make all
copy
因为 all 是最常用的参数,所以可以省略,只用 make,效果一样。
在多处理器的系统上,可以用 -j 参数进行并行编译,加快速度。例如双 CPU 的系统可以:
$ make -j 2
copy
在 Bochs 中运行最新编译好的内核,在 oslab 目录下执行:
# 注意是在上层目录
# 刚刚编译是在 oslab/linux-0.11/ 文件夹下
$ cd ~/oslab/
# 执行 run 脚本
$ ./run
copy
# 确认在 oslab 目录下
$ cd ~/oslab/
# 运行脚本前确定已经关闭刚刚运行的 Bochs
$ ./dbg-asm
copy
可以用命令 help 来查看调试系统用的基本命令
首先执行如下命令:
$ cd ~/oslab
$ ./dbg-c
copy
然后再打开一个终端窗口,执行:
$ cd ~/oslab
$ ./rungdb
copy
注意:启动的顺序不能交换,否则 gdb 无法连接。
注意:开始设置文件交换之前,务必关闭所有的 Bochs 进程。
oslab 下的 hdc-0.11-new.img 是 0.11 内核启动后的根文件系统镜像文件,相当于在 bochs 虚拟机里装载的硬盘。在 Ubuntu 上访问其内容的方法是:
$ cd ~/oslab/
# 启动挂载脚本
$ sudo ./mount-hdc
copy
hdc 目录下是和 0.11 内核一模一样的文件系统,可以读写任何文件。
# 进入挂载到 Ubuntu 上的目录
$ cd ~/oslab/hdc
# 查看内容
$ ls -al
copy
读写完毕,卸载这个文件系统:
$ cd ~/oslab/
# 卸载
$ sudo umount hdc
copy
代码经 gcc 编译后,在 Bochs 的虚拟环境中成功运行、调试,实现文件交换操作。
经过本次实验课程,我初步了解了操作系统的基本设计原理和实现细节以及本实验用到的硬件IA-32(x86) 架构PC 机;软件x86 模拟器 Bochs 、GCC 编译器 、Ubuntu (GNU/Linux)的相关特性,学习掌握了实验前环境的准备及一系列基础的代码编译、运行、调试和文件交换操作,为后续的操作系统实验打下了一定的基础。
学习时间 319分钟
操作时间 69分钟
按键次数 2676次
实验次数 14次
报告字数 2919字
是否完成 完成