实验一 熟悉实验环境 实验报告

一、实验目标

  1. 认识实验平台和实验工具;
  2. 认识实验环境的目录结构;
  3. 掌握编译、运行、调试、文件交换等操作命令。

二、实验内容和结果

0. 了解实验平台和工具

\quad 本实验采用的环境为实验楼虚拟机平台, 主要软件环境如下:

GCC 编译器。

GDB 调试器。

Ubuntu。

Bochs :一个 IA-32 (X86) 架构PC机模拟器,可以模拟出多种操作系统的环境,如Linux、DOS、Windows等。

1. 准备实验环境

\quad hit-oslab实验环境是一个压缩文件,路径为/home/shiyanlou/oslab/hit-oslab-linux-20110823.tar.gz

\quad 在终端中使用下面的命令准做好环境准备:

# 进入oslab文件夹,指定解压路径
cd /home/shiyanlou/oslab
tar -zxvf hit-oslab-linux-20110823.tar.gz -C /home/shiyanlou/

\quad 解压完成后的状态如下:
在这里插入图片描述

bochs目录:
与 bochs 相关的执行文件、数据文件和配置文件。

run脚本:
运行 bochs 的脚本命令。

Image文件:
对 Linux 0.11 的开发、修改和编译之后,在 linux-0.11 目录下会生产一个名为 Image 的文件,它就是编译之后的目标文件。  (该文件内已经包含引导和所有内核的二进制代码。如果拿来一张软盘,从它的 0 扇区开始,逐字节写入 Image 文件的内容,就可以用这张软盘启动一台真正的计算机,并进入 Linux 0.11 内核。)

oslab 采用 bochs 模拟器加载这个 Image 文件,模拟执行 Linux 0.11,这样省却了重新启动计算机的麻烦。

hdc-0.11.img 文件:
Minix 文件系统的镜像,里面包含有:

  • Bash shell;
  • cp、rm、mv、tar等一些基本的Linux命令;
  • vi编辑器;
  • gcc 1.4 编译器;
  • as86 和 ld86;
  • Linux 0.11 的源代码,可在 0.11 下编译,然后覆盖现有的二进制内核。

2. 编译内核

\quad 编译内核只需要在 linux-0.11 目录下执行make命令,当命令执行完后未出现报错就表示编译成功。

cd ./linux-0.11/
make all

\quad 编译成功后生成的目标文件是一个软盘镜像文件—— linux-0.11/Image

\quad 编译完成的效果如下:
在这里插入图片描述

关于 make 命令:
make 命令会自动跳过未被修改的文件,链接时直接使用上次编译生成的目标文件,从而节约编译时间。

  • make clean:删除上次编译生成的所有中间文件和目标文件。 故 make clean && make all命令可以确保在全新状态下编译整个工程。
  • all是最常用的参数,可以省略,简化为 make
  • 多处理器系统下可以用 -j参数进行并行编译以加快速度。例如双CPU的系统就可以使用命令: make -j 2

3. 运行

\quad 编译完后,通过run脚本运行 Bochs ,就可以在Bochs中运行内核。

cd ~/oslab/
./run

\quad 运行成功的效果如下:
在这里插入图片描述

4. 调试

\quad 内核调试有两种模式: 汇编级调试和C语言调试。

1. 汇编级调试

\quad 汇编级调试的命令如下:

cd ~/oslab/
# 运行前确保Bochs已经关闭
./dbg-asm

\quad 这里启动后Bochs是黑屏。

2. C语言级调试

\quad C语言级调试需要使用两个终端窗口,命令如下:

cd ~/oslab/
./dbg-c
# 在新的终端窗口运行下列命令:
cd ~/oslab/
./rungdb

\quad 启动后的效果如下:
在这里插入图片描述

5. 文件交换

\quad oslab 下的 hdc-0.11-new.img 是 0.11 内核启动后的根文件系统镜像文件,相当于在 bochs 虚拟机里装载的硬盘。在 Ubuntu 上访问它的命令如下:

cd ~/oslab
# 启动挂载脚本
sudo ./mount-hdc
# 进入挂载到Ubuntu上的目录
cd ~/oslab/hdc
#读写完毕后,需要卸载这个文件系统
sudo umount hdc

\quad 成功访问后的状态如下:
在这里插入图片描述

进行文件交换前需要确保关闭所有的Bochs进程。

关闭Bochs前需要在 Linux 0.11 上执行 sync命令,确保所有缓存数据存盘。

四、实验总结

1. 实验总结

\quad 本次实验主要熟悉了一下实验环境和实验工具,以及在 Ubuntu 环境下对 Linux 0.11 进行编译、运行、调试、文件交换的方法。 暂时难度不高。

\quad 本次实验接触到了一些新的工具如 GDB 等,实验过程中应善用 -help命令来了解这些工具的使用方式。

2. 命令汇总

\quad 实验楼平台无法保存环境,每次启动需要重复解压命令;每次修改代码后也需要重新编译运行。这里将这些常用命令汇总如下:

# 1. 准备环境
cd /home/shiyanlou/oslab
tar -zxvf hit-oslab-linux-20110823.tar.gz -C /home/shiyanlou/

# 2. 编译内核
# cd /home/shiyanlou/oslab/
cd ./linux-0.11/
make all
make -j 2  # 多cpu加速编译 
make clean && make all  # 重新编译

# 3. 运行
cd ~/oslab/
./run

# 4. 调试
#汇编级调试
./dbg-asm
#C语言级调试
./dbg-c
 #再打开一个终端窗口
cd ~/oslab
./rungdb

# 5. 文件交换(ubuntu与Linux-0.11)
cd ~/oslab
# 启动挂载脚本
sudo ./mount-hdc
# 进入挂载到Ubuntu上的目录
cd ~/oslab/hdc
#读写完毕后,需要卸载这个文件系统
sudo umount hdc
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐