搭建实验环境
# 0. 搭建实验环境
工欲善其事必先利其器
# 前言
原本老师的配套实验是在这里做的:操作系统原理与实践_Linux - 蓝桥云课 (opens new window)
这是一个网站,可以提供远程连接虚拟机给到用户操作。同时上面有很详细的实验手册。但有这样一个问题:如果想要保存自己的环境,是要收费的(完成学生认证后5折);且远程还是有一点不方便,因此我决定自己搭建一套环境。当然,在网站上做也是有好处的,可以在上面看到很多同学留下的笔记等,有问题也可以在上面提。
其实已经有实验手册了,发现自己白写了....:HIT-OSLAB-MANUAL (opens new window)
后续我会记录实验过程,供大家参考
# 工具介绍
Bochs:发音同"Box",是一款开源,使用C++编写的,高度便携的 IA-32(X86)架构PC模拟器。简单来说,就是可以运行操作系统,并且方便调试
GCC:编译器,这里用来编译操作系统。Linux最初的版本就是由GCC编译的
GDB:调试器,GCC编译器的兄弟。类似汇编里的debug
# Ubuntu下实验环境搭建(推荐)
# 准备操作系统
由于我的电脑是Windows,可以用VMWare或VirtualBox运行Ubuntu。我这里用Virtual Box,免费的。然后在VirtualBox下安装Ubuntu,可以参考VirtualBox虚拟机安装Ubuntu16_megfli的博客 (opens new window)。安装花费了2~3个小时
我自己遇到的问题如下:
- 安装时黑屏时间过长:参考自己解决虚拟机Ubuntu开机黑屏 (opens new window),我尝试重启后正常了
- 安装时Ubuntu显示屏幕过小:参考关于VirtualBox安装Ubuntu时界面显示不全,没有下一步选项_qq_1193979453的博客 (opens new window)
安装完后,我们可以设置共享目录,方便Windows和虚拟机共享文件:新版本virtualbox Ubuntu16.04设置共享文件夹_Dwyane05的博客 (opens new window)
# 安装运行操作系统需要的依赖
我们不必从头开始安装Bochs,GCC等,有很多热心的网友已经帮我们配置好了:在终端里运行以下命令即可
$ git clone https://github.com/Wangzhike/HIT-Linux-0.11.git
$ cd HIT-Linux-0.11/prepEnv/hit-oslab-qiuyu/
$ ./setup.sh
2
3
然后我们就可以运行Linux0.11了:
cd ~/oslab
./run
2
关于本项目,更多的可以参考作者的Github说明文档。
# 编译内核
在实验过程中,我们需修改操作系统的代码,然后重新编译一个新的操作系统镜像,并让Bochs运行,编译步骤如下:
$ cd ./linux-0.11/
$ make all
2
以下说明来自实验楼:
make 命令会显示很多很多的信息,你可以尽量去看懂,也可以装作没看见。只要最后几行中没有 “error” 就说明编译成功。
make 命令会自动跳过未被修改的文件,链接时直接使用上次编译生成的目标文件,从而节约编译时间。但如果重新编译后,你的修改貌似没有生效,可以试试先
make clean
,再make all
(或者一行命令:make clean && make all
。make clean
是删除上一次编译生成的所有中间文件和目标文件,确保是在全新的状态下编译整个工程。
# 调试操作系统
我们编写操作系统代码的时候,难免会遇到问题,此时调试能帮助我们分析问题:
汇编语言级别的调试:
$ cd ~/oslab/
# 运行脚本前确定已经关闭刚刚运行的 Bochs
$ ./dbg-asm
2
3
4
以下说明来自实验楼:
汇编级调试的启动之后 Bochs 是黑屏,这是正常的。
可以用命令
help
来查看调试系统用的基本命令。更详细的信息请查阅 Bochs 使用手册。
按q可以退出调试
C语言级别的调试
先运行
$ cd ~/oslab
$ ./dbg-c
2
再开一个终端,运行
$ cd ~/oslab
$ ./rungdb
2
以下说明来自实验楼
注意:启动的顺序不能交换,否则 gdb 无法连接。
出现下图所示的提示,才说明连接成功
注意:可能要等一段时间后,才能连接成功。
# Windows下实验环境搭建(待完善,不推荐)
不推荐理由:有很多工具在Windows下不能运行,例如调试工具等,不太推荐。具体可以参考实验手册,也有详细的说明了。
如果你是用Windows,那么如果如果运行虚拟机,虚拟机里再运行Bochs的话,对电脑的配置比较高的。如果内存不够,那么运行虚拟机后就容易卡顿,并且虚拟机内存不够的话也容易卡顿。(内存高的话就不用担心卡顿,比如我是32G 台式机,给虚拟机分配8G内存后,总的CPU利用率也才71%,使用过程中基本没有卡顿)
如果自己电脑配置不高的同学,也可以通过云服务器的方式搭建实验环境。
安装Bochs:默认一路Next即可。安装完后会有两个对话框提示是否打开更新日志和介绍,关闭即可。
接下来打开复制以下文件到Bochs的安装目录(安装过程中有指定安装目录的↑, 其实就是除了文件Bochs-2.1.1.exe、README、rootimage-0.11,其他文件都复制过去)
bochsout.txt
bochsrc-fd.bxrc
bochsrc-hd.bxrc
bootimage-0.11
bootimage-0.11-fd
bootimage-0.11-hd
bootimage-0.12-fd
bootimage-0.12-hd
diskb.img
gcclib-1.40.taz
hdc-0.11.img
2
3
4
5
6
7
8
9
10
11
接下来,直接双击bochsrc-hd.bxrc,就可以看到如画面,操作系统就被运行起来了
# 参考
mirrors / Wangzhike / HIT-Linux-0.11 · GitCode (opens new window)
操作系统原理与实践 - 熟悉实验环境 - 蓝桥云课 (opens new window)
Windows下用Bochs编译运行Linux-0.11_Demon的黑与白的博客-CSDN博客_bochs linux0.11 (opens new window)