实验环境的工作模式
hit-oslab
实验环境oslab
(hit-oslab-linux-20110823.tar.gz
)- 解压这个文件
tar -zxvf hit-oslab-linux-20110823.tar.gz \ -C /home/shiyanlou/
- 查看解压是否成功
ls -al
文件结构
- Image:编译后的目标文件
如果拿来一张软盘,从它的 0 扇区开始,逐字节写入 Image 文件的内容,就可以用这张软盘启动一台真正的计算机,并进入 Linux 0.11 内核 - bochs:bochs 目录下是与 bochs 相关的执行文件、数据文件和配置文件。
- run:run 是运行 bochs 的脚本命令
- hdc-0.11.img:
编译内核
- 进入
linux-0.11
目录, 然后执行make
命令cd ./linux-0.11/ make all // 也可以只用make
- 最后生成的目标文件是一个软盘镜像文件
linux-0.11/Image
, 如果将此镜像文件写到一张1.44MB的软盘上,就可以启动一台真正的计算机
- 重新编译内核
make all
, make 命令会自动跳过未被修改的文件,链接时直接使用上次编译生成的目标文件,从而节约编译时间 make clean
删除上一次编译生成的所有中间文件和目标
make clean && make all
运行
- 在上层目录运行run脚本
cd ~/oslab/ # 执行run脚本 ./run
- 如果出现
Bochs
的窗口,里面显示linux
的引导过程,最后停止在[/usr/root/]#
,表示运行成功
调试
汇编级调试:
- 在上层目录运行
./dbg-asm
脚本cd ~/oslab/ ./dbg-asm
- 可以使用命令
help
来查看调试系统用的基本命令
C语言级调试:
- 在上层目录运行
./dbg-c
脚本cd ~/oslab ./dbg-c
- 然后再打开一个终端窗口,执行
出现以下的提示,说明连接成功cd ~/oslab ./rungdb
文件交换
- sudo 能够限制用户只在某台主机上运行某些命令
- oslab下的
hdc-0.11-new.img
是0.11 内核启动后的根文件系统镜像文件, 0.11 内核启动后的根文件系统镜像文件cd ~/oslab/ # 启动挂载脚本 # 可以在 Ubuntu 的 hdc 目录下创建一个 xxx.c 文件,然后利用 Ubuntu 上的编辑工具(如 gedit 等)实现对 xxx.c 文件的编辑工作 sudo ./mount-hdc
- 之后,hdc 目录下就是和 0.11 内核一模一样的文件系统了,可以读写任何文件
- 读写完毕,卸载这个文件系统:
cd ~/oslab/ sudo umount hdc
- 卸载之后,使用
./run
启动bochs
,进入Linux-0.11
,就可以看到这个xxx.c
,这样就避免了在 Linux 0.11 上进行编辑 xxx.c 的麻烦。