前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MIT6.828/6.S081-2019:MacOS下risc-v和xv6环境搭建

MIT6.828/6.S081-2019:MacOS下risc-v和xv6环境搭建

作者头像
zhayujie
修改2020-06-07 14:09:22
2.9K0
修改2020-06-07 14:09:22
举报
文章被收录于专栏:ZYJ的技术专栏ZYJ的技术专栏

本文介绍搭建Mit6.828/6.S081 fall2019实验环境的详细过程,包括riscv工具链、qemu和xv6,以MacOS下的实践为例,Linux系统同样可以参考。

介绍

只有了解底层原理才能写好上层应用,曾经几度想要系统地学习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)。

课程的学习直接跟着官网的schedule走就行,先看Lecture下提供的讲义和手册,然后完成相应的Lab,Lab共计10个,主要内容是在xv6基础上进行内核开发和扩展。

环境搭建

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,源码下载方式如下:

代码语言:txt
复制
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain

riscv-gnu-toolchain源码有3个G大小,直接clone耗时太久。所以我将源码上传到了baidu网盘,提取码ui4j),供大家直接下载。

下载后在源码根目录进行编译,具体参考官方文档。编译大约需要30min:

代码语言:txt
复制
./configure --prefix=/usr/local/opt/riscv-gnu-toolchain    #配置产物路径
make                                                       #编译

安装完成后需配置环境变量,与上一步设置的安装路径一致。我这里的环境配置文件是~/.bash_profile,在最后一行添加:

代码语言:txt
复制
export PATH="$PATH:/usr/local/opt/riscv-gnu-toolchain/bin"

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

二、QEMU

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

1.一种方式是通过包管理工具直接安装,mac下使用的是homebrew,如果速度较慢可切换tsinghua源。

代码语言:txt
复制
brew install qemu               

我的OS X版本(high sierra)对应的qemu版本是3.1.0,在启动riscv-gdb远程调试qemu时会报错:Remote 'g' packet reply is too long (expected 264 bytes, got 520 bytes),而4.1.0版本的qemu则正常。不过暂时来看,该bug不会影响实验的进行。

2.另一种方式是手动下载指定版本的源码并编译:

代码语言:txt
复制
wget https://download.qemu.org/qemu-4.1.0.tar.xz  #下载后解压并进入目录
./configure                                       #默认安装所有目标平台,产物路径为/usr/local/bin
make && make install                              #编译并安装

如果wget从官网下载较慢可以选择使用网盘(链接,提取码 h7ud)。

三、xv6

从github下载xv6源码

代码语言:txt
复制
git clone git://github.com/mit-pdos/xv6-riscv-fall19.git

在项目目录下编译,如果能进入xv6的shell则表示实验环境已搭建成功,进入后可输入命令(如 ls)进行测试。输入CTRL A + X可以退出xv6 shell。

代码语言:txt
复制
make
make qemu

原文链接:https://zhayujie.com/mit6828-env.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 环境搭建
    • 一、RISC-V toolchain
      • 二、QEMU
        • 三、xv6
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档