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源码有3个G大小,如果从github直接clone会极慢。所以我将源码上传到了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。