秋招的时候,操作系统的八股文背了不少,但是仍然是缺乏动手实践的经历。对操作系统如何工作,用户程序如何运行,与CPU等硬件如何交互等问题完全没有清晰的认识。 所以最近打算好好学习下操作系统的知识,选择了以动手实践为主的课程,直接对内核源码进行学习和扩展,一步步揭开OS的神秘面纱。
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 这个课程就是引导我们实现了一个微内核操作系统。
我的实现环境:
学习资源:
Ubuntu基本上是每半年更新一次,截至2021年7月30号,现在已经推出了20.0的版本了。
在第一次进行搭建环境时,使用的是18.0的版本,这个版本在安装环境的时候,需要自行安装、编译Riscv工具链,但是这个过程很耗时,容易出现错误。在被百般折磨之后,选择了在Ubuntu20.04上进行环境的搭建。省去了安装工具链的繁琐操作。
VMware下载链接:https://www.xitmi.com/2417.html
Ubuntu下载链接:https://ubuntu.com/download/desktop/thank-you?version=20.04.2.0&architecture=amd64
安装好ubuntu20.04后,默认的软件更新源是国外的,在国内使用速度很慢,需要更换成国内的源,这样才能正常安装和更新软件。
Ubuntu配置的默认源并不是国内的服务器,下载更新软件都比较慢。首先备份源列表文件sources.list:
选择合适的源,替换原文件的内容,保存编辑好的文件, 我们选择的是中科大源。
编辑/etc/apt/sources.list文件, 在文件最前面添加阿里云镜像源:
下载速度瞬间就起飞了。
默认情况下,首次安装Ubuntu时,不允许通过SSH进行远程访问。
在Ubuntu上启用SSH非常简单。以root 用户或具有sudo特权的用户执行以下步骤:
使用打开终端Ctrl+Alt+T
并安装openssh-server
软件包:
安装完成后,SSH服务将自动启动。可以通过键入以下命令来验证SSH是否正在运行:
输出显示该服务正在运行,并已启用以在系统引导时启动:
按q
返回到命令行提示符。
Ubuntu随附了一个名为UFW的防火墙配置工具。如果在系统上启用了防火墙,请确保打开SSH端口:
现在,就可以通过SSH连接到Ubuntu系统,推荐使用SecureCRT。
安装了ubuntu20.04后,以前老版本的SecureCRT通过ssh连接后报错
需要修改两个地方:
打开这两行的注释
加入下面的代码
重启sshd服务
重新连接即可。
因为安装的是虚拟机,要将其改为桥接模式。
接下来编辑文件:
网络配置
然后应用修改:
risc-v工具链安装是坑最多的一步,如果你使用的是非20.04,大概率会安装失败。因为只有 ubuntu 20.04 下面才有对应的package的镜像源!
QEMU用于在我们机器上(X86)模拟RISC-V架构的CPU,编译生成的risc-v平台的机器码,需要通过模拟cpu执行。
从github下载xv6源码,切入源码的主目录,分支切换为util。
在项目目录下编译,如果能进入xv6的shell,看到xv6 kernel is booting 则表示实验环境已搭建成功。
按下ctrl+a松开后再按x退出qemu,这个很关键。
预期
预期:
这里需要开启两个窗口,一个运行qemu,一个运行调试器gdb。
运行qemu的窗口执行make qemu-gdb后等待gdb的连接
另外一个窗口运行
如果看到如下内容,则基本上环境没有问题了。
如果是第一次运行,请根据提示先设置好.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
end
本文分享自 嵌入式与Linux那些事 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!