如果想学习Linux 0.11,实验环境是必不可少的。最好是能编译,能运行,能调试。
如今大家都是用64位的Linux操作系统,而且是高版本的GCC(4.0以上),所以环境搭建是个难题。要么就是编译后满屏报错,要么就是运行时出问题,总之各种麻烦。
还好,有热心的朋友提供了可用的环境,在此深表谢意。
我的环境是:Win7(64位)+Vmware+Ubuntu 16.04(64位)
如果不用虚拟机,直接装个Linux,那自然是最好的。
1. 克隆仓库
如果没有git,那么先安装git
sudo apt-get install git
git clone https://github.com/Wangzhike/HIT-Linux-0.11.git
克隆完成后,得到文件夹HIT-Linux-0.11
。
不想克隆的,可用去https://github.com/Wangzhike/HIT-Linux-0.11下载。
2. 安装实验环境
进入文件夹
cd HIT-Linux-0.11/prepEnv/hit-oslab-qiuyu/
运行脚本
./setup.sh
本脚本会将实验环境安装在当前登录用户的家目录下,文件名为oslab
,即我们的实验目录是~/oslab
注意,请不要用超级用户权限执行此命令,当有需要时该脚本会请求超级用户权限。
这个脚本会下载并安装许多软件包,比如
gcc-3.4
bin86
libc6-dev-i386
build-essential
libsm6:i386
libx11-6:i386
libxpm4:i386
另外会创建目录,解压 linux-0.11 的源码包、根文件系统,解压 bochs等。
安装完成后,进入~/oslab
,截图如下:
3. 编译Linux 0.11
cd ~/oslab/linux-0.11
make
此时会生成镜像文件Image
4. 运行
cd ~/oslab
./run
这里的run也是一个脚本,其最后一行的命令是启动Bochs
$OSLAB_PATH/bochs/bochs-gdb -q -f $OSLAB_PATH/bochs/bochsrc.bxrc
5. 调试
汇编语言级别
./dbg-asm
通过Bochs进行汇编语言级别调试。
C语言级别
先运行
./dbg-c
再开一个终端,运行
./rungdb
则可以通过gdb进行C语言级别调试。
注意
请不要把Linux-0.11的源码包解压到Windows下面,因为在源码目录linux-0.11\kernel\chr_drv\
下有两个文件,分别是keyboard.S
和keyboard.s
,它们的后缀一个大写,一个小写。在Linux上,文件名是区分大小写的;但是在Windows上,文件名不区分大小写,所以解压的时候会提示重复。