【MIT6.S081/6.828】手把手教你搭建开发环境
文章目录
- 1. 简介
- 2. 安装ubuntu20.04
- 3. 更换源
- 3.1 更换/etc/apt/sources.list文件里的源
- 3.2 备份源列表
- 3.3 打开sources.list文件修改
- 3.4 刷新列表
- 4. 安装SSH
- 4.1 SecureCRT 报错
- 4.2 解决方法
- 4.3 修改ssh_config
- 4.4 修改sshd_config
- 4.5 重新启动服务并测试
- 5. 配置静态IP
- 6. 安装RISC-V交叉编译工具
- 7. 安装QEMU
- 8 测试
- 8. 1 下载xv6源码
- 8.2 检查工具链
- 8.3 检查调试工具
秋招的时候,操作系统的八股文背了不少,但是仍然是缺乏动手实践的经历。对操作系统如何工作,用户程序如何运行,与CPU等硬件如何交互等问题完全没有清晰的认识。
所以最近打算好好学习下操作系统的知识,选择了以动手实践为主的课程,直接对内核源码进行学习和扩展,一步步揭开OS的神秘面纱。
1. 简介
MIT 6.S081是著名的操作系统课程,理论与实践相结合的经典。通过实现部分内核功能来学习设计和实现操作系统。
6.S081 由课程和实验组成。课程的前半部分是介绍系统的各种概念和实现。后半部分是讲一些论文,比如 meldown,et3fs。
实验有 11 个,需要实现不同功能,比如 page table,network driver。
课程的学习打算直接跟着官网的schedule走,先看Lecture下提供的讲义和手册,然后完成相应的Lab,Lab共计11个,主要内容是在xv6基础上进行内核开发和扩展。
每个实验都有对应的知识点供你学习,学完理论知识后会有相应的练习,大多数都需要你手写代码。边学边做,学习效果更加高效。
顺便一提,6.S081 2020 的两位老师其中一位是 Robert Morris(RTM)。Robert Morris 写了历史上第一个蠕虫,还是 Y-Combinator 的 co-founder。
现在微内核概念这么火,鸿蒙就被宣传为微内核全场景OS,难道不想从原理上真正理解一下微内核OS吗? 而6.S081 这个课程就是引导我们实现了一个微内核操作系统。
我的实现环境:
- qemu for riscv
- gdb for riscv
- gcc for riscv
- binutils for riscv
- Windows 10 + VMWare + Ubuntu 20.04
学习资源:
课程官网:https://pdos.csail.mit.edu/6.828/2020/overview.html
课程讲义:https://pdos.csail.mit.edu/6.828/2020/xv6/book-riscv-rev1.pdf
schedule:https://pdos.csail.mit.edu/6.828/2020/schedule.html
视频:https://www.bilibili.com/video/BV1Dy4y1m7ZE
2. 安装ubuntu20.04
Ubuntu基本上是每半年更新一次,截至2021年7月30号,现在已经推出了20.0的版本了。
在第一次进行搭建环境时,使用的是18.0的版本,这个版本在安装环境的时候,需要自行安装、编译Riscv工具链,但是这个过程很耗时,容易出现错误。在被百般折磨之后,选择了在Ubuntu20.04上进行环境的搭建。省去了安装工具链的繁琐操作。
VMware下载链接:点击这里
Ubuntu下载链接:点击这里
3. 更换源
3.1 更换/etc/apt/sources.list文件里的源
安装好ubuntu20.04后,默认的软件更新源是国外的,在国内使用速度很慢,需要更换成国内的源,这样才能正常安装和更新软件。
3.2 备份源列表
Ubuntu配置的默认源并不是国内的服务器,下载更新软件都比较慢。首先备份源列表文件sources.list:
# 首先备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
3.3 打开sources.list文件修改
选择合适的源,替换原文件的内容,保存编辑好的文件, 我们选择的是中科大源。
# 打开sources.list文件
sudo gedit /etc/apt/sources.list
编辑/etc/apt/sources.list文件, 在文件最前面添加阿里云镜像源:
#中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse
3.4 刷新列表
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
下载速度瞬间就起飞了。
4. 安装SSH
默认情况下,首次安装Ubuntu时,不允许通过SSH进行远程访问。
在Ubuntu上启用SSH非常简单。以root 用户或具有sudo特权的用户执行以下步骤:
使用打开终端Ctrl+Alt+T
并安装openssh-server
软件包:
sudo apt update
sudo apt install openssh-server
安装完成后,SSH服务将自动启动。可以通过键入以下命令来验证SSH是否正在运行:
sudo systemctl status ssh
输出显示该服务正在运行,并已启用以在系统引导时启动:
● ssh.service - OpenBSD Secure Shell serverLoaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)Active: active (running) since Sun 2021-08-15 07:13:19 PDT; 23s agoDocs: man:sshd(8)man:sshd_config(5)Main PID: 46470 (sshd)Tasks: 1 (limit: 2275)Memory: 1.3MCGroup: /system.slice/ssh.service└─46470 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
按q
返回到命令行提示符。
Ubuntu随附了一个名为UFW的防火墙配置工具。如果在系统上启用了防火墙,请确保打开SSH端口:
sudo ufw allow ssh
现在,就可以通过SSH连接到Ubuntu系统,推荐使用SecureCRT。
4.1 SecureCRT 报错
安装了ubuntu20.04后,以前老版本的SecureCRT通过ssh连接后报错
Key exchange failed.
No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
4.2 解决方法
需要修改两个地方:
4.3 修改ssh_config
sudo vi /etc/ssh/ssh_config
打开这两行的注释
4.4 修改sshd_config
sudo vi /etc/ssh/sshd_config
加入下面的代码
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
4.5 重新启动服务并测试
重启sshd服务
sudo service sshd restart
重新连接即可。
5. 配置静态IP
因为安装的是虚拟机,要将其改为桥接模式。
接下来编辑文件:
sudo gedit /etc/netplan/01-network-manager-all.yaml
网络配置
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManagerethernets:ens33: #配置的网卡名称,使用ifconfig -a查看得到dhcp4: no #dhcp4关闭addresses: [192.168.1.8/24] #设置本机IP及掩码gateway4: 192.168.1.1 #设置网关nameservers:addresses: [223.5.5.5,223.6.6.6,166.111.8.28,166.111.8.29,202.141.162.123] #设置阿里云,中科大等的DNS
然后应用修改:
sudo netplan apply
6. 安装RISC-V交叉编译工具
risc-v工具链安装是坑最多的一步,如果你使用的是非20.04,大概率会安装失败。因为只有 ubuntu 20.04 下面才有对应的package的镜像源!
sudo apt install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu libglib2.0-dev libpixman-1-dev gcc-riscv64-unknown-elf
7. 安装QEMU
QEMU用于在我们机器上(X86)模拟RISC-V架构的CPU,编译生成的risc-v平台的机器码,需要通过模拟cpu执行。
wget https://download.qemu.org/qemu-5.1.0.tar.xz /home/zhongyi/6S081
cd qemu-5.1.0
./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list=riscv64-softmmu
make
sudo make install
8 测试
8. 1 下载xv6源码
从github下载xv6源码,切入源码的主目录,分支切换为util。
git clone git://g.csail.mit.edu/xv6-labs-2020
cd xv6-labs-2020
git checkout util.
## 拉取特定分支到本地
git clone -b pgtbl git://g.csail.mit.edu/xv6-labs-2020
在项目目录下编译,如果能进入xv6的shell,看到xv6 kernel is booting 则表示实验环境已搭建成功。
make
make qemu
按下ctrl+a松开后再按x退出qemu,这个很关键。
8.2 检查工具链
riscv64-unknown-elf-gcc --version
预期
riscv64-unknown-elf-gcc (GCC) 10.1.0
qemu-system-riscv64 --version
预期:
QEMU emulator version 5.1.0
8.3 检查调试工具
这里需要开启两个窗口,一个运行qemu,一个运行调试器gdb。
运行qemu的窗口执行make qemu-gdb后等待gdb的连接
make qemu-gdb
sed "s/:1234/:26000/" < .gdbinit.tmpl-riscv > .gdbinit
*** Now run 'gdb' in another window.
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 3 -nographic -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0 -S -gdb tcp::26000
另外一个窗口运行
gdb-multiarch -q kernel/kernel
如果看到如下内容,则基本上环境没有问题了。
Reading symbols from kernel/kernel...
The target architecture is set to "riscv:rv64".
0x0000000000001000 in ?? ()
(gdb)
如果是第一次运行,请根据提示先设置好.gdbinit
echo set auto-load safe-path / >> ~/.gdbinit
折腾了几天,到此为止,MIT 6.S081 环境搭建终于完成!下面就可以开心做实验了!
本文参考
https://pdos.csail.mit.edu/6.828/2020/tools.html
https://www.bilibili.com/video/BV11K4y127Qk
https://zhuanlan.zhihu.com/p/359384544
https://zhuanlan.zhihu.com/p/343655412
【MIT6.S081/6.828】手把手教你搭建开发环境相关推荐
- 手把手教你搭建开发环境之Java开发
大家好呀,从今天开始,我们的手把手系列教程就正式开始啦. 如果你觉得本文对你有一些帮助,欢迎大家关注.点赞.分享给需要的小伙伴们,谢谢大家啦. 前言 Java虽然是一个比较老的语言,但到现在依然充满了 ...
- [PPT] IC芯片验证-手把手教你搭建UVM环境
PPT 可以到这里下载 https://github.com/howard789/uvm_example 视频可以到这里看 IC验证 - 手把手教你搭建UVM芯片验证环境(含代码)_哔哩哔哩_bili ...
- 手把手教你搭建LAMP环境,运行第一个属于你的个人网站
用Linux系统,搭建自己的第一个网站,起飞~~~的开始 搭建LAMP环境 1. 服务器 1.1 远程连接服务器 1.2 域名及解析 1.3 域名备案 2. LAMP环境 2.1 LAMP环境介绍 2 ...
- 手把手教你搭建Mac环境微信小程序的本地测试服务器
问题的提出 Mac环境 方便快捷地搭建小程序的测试服务器 小程序对于网络请求的URL的特殊要求 不能出现端口号 不能用localhost 必须用https 主要步骤 用json-server搭建简单的 ...
- cmd窗口太炫酷了,电脑编码软件太多?手把手教你搭建Java环境,利用dos命令实现运行操作
Java学习打卡:第十四天 内容导航 Java学习打卡:第十四天 内容管理 什么是cmd 写文背景介绍 搭建java环境 首先先下载JDK,java开发工具包 第二步:将压缩包解压到指定目录 第三步: ...
- 手把手教安装java开发环境_手把手教你配置java开发环境-java环境变量设置
在本篇中将为大家介绍如何在windows下搭建Java的开发环境. 话不多说,直接转入正题.下载java开发工具包JDK 下载地址:http://www.oracle.com/technetwork/ ...
- 我的世界java无法安装包_手把手教你搭建java环境
前文 由于一些历史原因,开发java程序需要技术人员自行搭建环境,而搭建环境对于新手来说并不友好,不像其他语言那般方便,现如今,为帮助想入门java却无法顺利搭建的同学,编写该教程,如果觉得本文有用, ...
- 手把手教你搭建 vue 环境
第一步 node环境安装 1.1 如果本机没有安装node运行环境,请下载node 安装包进行安装 1.2 如果本机已经安装node的运行换,请更新至最新的node 版本 下载地址:https://n ...
- 手把手教你搭建 ELK 实时日志分析平台
来自:武培轩 本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash ...
最新文章
- HijackThis日志细解【简明教程增强版】(五)
- Android四大组件ContentProvider
- Java数据结构之线性表(2)
- LeetCode 933.最近的请求次数
- HTTPS 协议到底比 HTTP 协议多些什么?
- 第二波 编程资料免费领,前后端、移动端都有
- C语言学习笔记---时间函数asctime()和localtime()
- easymock教程_EasyMock教程
- 解决问题 WebDriverException: Message: unknown error: cannot find Chrome binary
- 算法设计与分析基础(三)
- 无盘服务器 免费,免费无广告的网咖专用云无盘安装图文教程
- 【示波器专题】示波器带宽对测量的影响
- unl构件图与部署图
- Faster RCNN训练FLIR红外线数据集
- 零零散散之Java异常
- 如何使用win7自带的测试工具测试电脑性能?
- 美国历任总统竞选演讲稿
- 牛刀小试:利用Python分析豆瓣电影Top250(一)
- Spring Security OAuth2.0认证授权五:用户信息扩展到jwt
- 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)----(十)定时计数器
热门文章
- JAVA电商项目面试题(一)
- 蚂蚁花呗1-5面(高级):分布式+MySQL+HashMap+线程池+MQ+Redis
- 基于当前现状大数据可视化应用的发展趋势
- 微信小程序bindtap不生效的解决方法
- win7升级为Win10 10586版本,出现应用商店打不开的解决办法
- 人效分析指标有哪些?
- shell命令-pushd和popd
- 分享一次购物体验airpods 无线充电器
- 自动化测试QTP初步了解
- 3,4,5,6-四(9-咔唑基)-邻苯二腈,4CzPN cas:1416881-51-0光伏材料,齐岳定制