自己2017年9月到2月这段时间慢慢把5个lab磨完了,期间遇到了不少困难和疑惑,所以打算通过写博客的形式来回忆,记录和总结自己学习mit6.828的过程。
MIT6.828就不用我多介绍了, mit鼎鼎大名的操作系统经典课程,北大,华工等学校的操作系统实验都是基于这个课程的实验部分。课程所有的lab都是开源的,课程实验包括6个实验, 包含
- Booting a PC
- Memory Management
- User Environments
- Preemptive Multitasking
- File system, Spawn and Shell
- Network Driver (default final project)
6个实验, 跟完这6个实验后就相当于写完了一个简单的OS并且把bootloader,虚拟内存,进程,多进程,文件系统,网络驱动六个方面的开发熟悉了一遍 。虽然jos实现的功能相对有限,但是它能够帮助我们真正了解操作系统的实现过程以及原理,而不再是雾里观花,完成这门课再读一下lkd等书,我们也可以说自己具有linux内核开发的能力了。
下面是ubuntu系统下lab的资源获取和相关软件的安装
1.先安装git
sudo apt-get install git
git的学习可以参考:
廖雪峰git教程
2.然后在terminal输入下面命令行将jos代码拷贝到本地
athena% mkdir ./6.828
athena% cd ./6.828
athena% git clone https://pdos.csail.mit.edu/6.828/2016/jos.git lab
Cloning into lab...
athena% cd lab
3.安装使用mit修改过的qemu
git clone http://web.mit.edu/ccutler/www/qemu.git -b 6.828-2.3.0
cd ./qemu
进行./configure:
./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu"
编译安装:
sudo make
sudo make install
4.进到lab目录下, 编译然后使用qemu模拟运行
make
make qemu
因为我这里使用的2016年的实验代码,所以有warning
大家可以使用最新的代码,也可以把
lab/GNUmakefile的下面一段代码删掉就行
成功运行
完成这些准备工作,下面我们就可以开始进行实验1了。