实验一熟悉实验环境实验报告一、实验目标认识实验平台和实验工具;认识实验环境的目录结构;把握编译、运行、调试、文件交换等操作命令。二、实验内容和结果0.了解实验平台和工具
quad本实验采用的环境为实验楼虚拟机平台linux系统实验报告,主要软件环境如下:
GCC编译器。
GDB调试器。
Ubuntu。
Bochs:一个IA-32(X86)构架PC机模拟器,可以模拟出多种操作系统的环境kali linux,如Linux、DOS、Windows等。
1.打算实验环境
quadhit-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文件:
对Linux0.11的开发、修改和编译过后,在linux-0.11目录下会生产一个名为Image的文件linux移植,它就是编译过后的目标文件。 (该文件内早已包含引导和所有内核的二补码代码。假如用来一张软驱,从它的0磁道开始,逐字节写入Image文件的内容,就可以用这张软驱启动一台真正的计算机,并步入Linux0.11内核。)
oslab采用bochs模拟器加载这个Image文件,模拟执行Linux0.11,这样省却了重新启动计算机的麻烦。
hdc-0.11.img文件:
Minix文件系统的镜像,上面包含有:
2.编译内核
quad编译内核只须要在linux-0.11目录下执行make命令,当命令执行完后未出现报错就表示编译成功。
cd ./linux-0.11/
make all
quad编译成功后生成的目标文件是一个软驱镜像文件——linux-0.11/Image。
quad编译完成的疗效如下:
关于make命令:
make命令会手动跳过未被更改的文件,链接时直接使用先前编译生成的目标文件,因而节省编译时间。
3.运行
quad编译完后linux系统实验报告,通过run脚本运行Bochs,就可以在Bochs中运行内核。
cd ~/oslab/
./run
quad运行成功的疗效如下:
4.调试
quad内核调试有两种模式:汇编级调试和C语言调试。
1.汇编级调试
quad汇编级调试的命令如下:
cd ~/oslab/
# 运行前确保Bochs已经关闭
./dbg-asm
quad这儿启动后Bochs是死机。
2.C语言级调试
quadC语言级调试须要使用两个终端窗口,命令如下:
cd ~/oslab/
./dbg-c
# 在新的终端窗口运行下列命令:
cd ~/oslab/
./rungdb
quad启动后的疗效如下:
5.文件交换
quadoslab下的hdc-0.11-new.img是0.11内核启动后的根文件系统镜像文件,相当于在bochs虚拟机里装载的硬碟。在Ubuntu上访问它的命令如下:
cd ~/oslab
# 启动挂载脚本
sudo ./mount-hdc
# 进入挂载到Ubuntu上的目录
cd ~/oslab/hdc
#读写完毕后,需要卸载这个文件系统
sudo umount hdc
quad成功访问后的状态如下:
进行文件交换前须要确保关掉所有的Bochs进程。
关掉Bochs前须要在Linux0.11上执行sync命令,确保所有缓存数据读档。
四、实验总结1.实验总结
quad本次实验主要熟悉了一下实验环境和实验工具,以及在Ubuntu环境下对Linux0.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