MIT6

Mac下安装MIT6.828

只有了解底层原理才能写好上层应用,曾经几度想要系统地学习OS课程,尝试去看了《计算机操作系统》、《Operating Systems: Three Easy Pieces》、《UNIX环境高级编程》,均以半途而废告终。

被大量的抽象概念所淹没,对操作系统如何工作,用户程序如何运行,与CPU等硬件如何交互等问题完全没有清晰的认识。所以这次选择了以动手实践为主的课程,直接对内核源码进行学习和扩展,一步步揭开OS的神秘面纱。

MIT6.828: Operating System Engineering 在2019版本更名为6.S081,针对本科生教学,难度也有所下降,适合0基础学习,所需的计算机知识和C语言语法也十分基础。MIT用于教学的系统是xv6,一个简化的类unix系统,CPU平台使用的是RISC-V,是一种精指令集架构(RISC)。


环境搭建


MacOS下需要事先准备好xcode和homebrew,我的系统版本是10.13.4,xcode版本是9.4。实验环境主要包括三个部分:

RISC-V工具链: 包括一系列交叉编译的工具,用于把源码编译成机器码,如gcc,binutils,glibc等 QEMU模拟器: 用于在我们机器上(X86)模拟RISC-V架构的CPU xv6源码: xv6操作系统源码

一、RISC-V toolchain risc-v工具链安装是坑最多的一步,如果按照官网教程来安装,大概率会因为下载过慢而失败,即使我把命令行翻了墙效果也并不好。教程中的安装命令是brew install riscv-tools,但我发现riscv-tools由几个部分组成,我们其实只需要riscv-gnu-toolchain。

riscv-gnu-toolchain

riscv-gnu-toolchain源码有3个G大小,如果从github直接clone会极慢。所以我将源码上传到了baidu网盘

baidu网盘

提取码ui4j

下载后在源码根目录进行编译,大约需要30min:

./configure --prefix=/usr/local/opt/riscv-gnu-toolchain        #配置产物路径
make -j8                                            #编译

安装完成后需配置环境变量 配置文件是 ~/.bash_profile,在最后一行添加

export PATH="$PATH:/usr/local/opt/riscv-gnu-toolchain/bin"

务必记着 source ~/.bash_profile

在此命令行输入riscv64-unknown-elf-gcc -v 显示版本信息则代表安装成功


二、QEMU

下载qemu模拟处理器,我们编译生成的risc-v平台的机器码,需要通过模拟cpu执行。

同样采用 百度云 提取码 h7ud

安装qemu相对比较容易

./configure
sudo make
sudo make install

通过qemu-system-riscv64 --version的输出 检查是否成功安装

三、xv6-riscv

git clone git@github.com:mit-pdos/xv6-riscv.git
cd xv6-riscv
make qemu

显示 xv6 kernel is booting

hart 1 starting hart 2 starting $ 即成功启动xv6。

updatedupdated2021-12-042021-12-04