0%

2025 春夏季开源操作系统训练营 学习总结

2025 春夏季开源操作系统训练营 学习总结

1
2
3
4
5
// 实验环境
Mac mini Apple M4
MacOS 15.4.1
// 备注(在国外的同学可以忽略)
在配置实验环境时,一定要更换Homebrew、rustup和Cargo的镜像源。

第一阶段:Rust编程

由于参与过 http://opencamp.cn/ 的其他 Rust 训练营,本阶段相当于是复习阶段。然而笔者对很多 Rust 语法还是理解的不够,需要通过更多实际项目来加深学习。

第二阶段:OS设计实现

本阶段主要参考指导书完成实验 https://learningos.cn/rCore-Tutorial-Guide-2025S/

1. Apple Silicon 相关问题

在第零章,指导书如是说:
经初步测试,使用 M1 芯片的 macOS 也可以运行本实验的框架,即我们的实验对平台的要求不是很高。但我们仍建议同学配置 Ubuntu 环境,以避免未知的环境问题。

笔者在实验中确实遇到了一些问题,但都并非无法解决,具体情况如下:

1.1 安装 qemu (可能需要 sudo)

1
2
brew install qemu
qemu-img --version

如果显示qemu-img version 9.2.3则说明安装成功。

1.2 载入rustsbi-qemu.bin时卡死

@lurenjia1213 修复了该问题,需要 Clone 下面的项目,重新编译,然后拷贝生成的rustsbi-qemu.bin 并覆盖实验项目中的文件。
https://github.com/lurenjia1213/rustsbi-qemu/tree/main

1.3 qemu 模拟器无法正确退出

在ch3中,qemu模拟器无法正确退出,需要拷贝ch2中的./src/boards/qemu.rs到ch3。通过对比ch2和ch3的区别来修复问题,从而可以学习正确退出模拟器的方法。

ch4 通过同样的方法在 BASE=1 的测试中还是无法正确退出,需要以后解决。

1.4 MacOS 没有 timeout 指令导致测例无法通过

安装 coreutils, 用 gtimeout 来替代。

1
2
3
brew install coreutils
// 需要将下面这条指令写到保存环境变量的那个文件中
alias timeout=gtimeout

2. 学习心得

由于没有系统学习过操作系统的理论知识,学的比较慢,需要参考指导书和学习资源中的视频才慢慢掌握。虽然操作系统相关的内容学的不够扎实,但是对于 rust 的语法慢慢熟悉了起来。抱着学习 rust 的心态还学习到了操作系统的底层运行,很有收获。

第三阶段:项目基础阶段 - 组件化操作系统

  • 尽管是第一次接触操作系统,在完成第二阶段以后,第三阶段给笔者的感觉不是很陌生(至少知道大概都在干什么)
  • 课程视频和课件也很详细的给出了任务和学习目标,但是第三阶段的项目相比第二阶段要大很多
  • 有时候不知道要去哪里干什么,只能通过给出的题目反向查找相关的内容。

1.遇到的问题和解决思路

  • 在UniKernel部分, 笔者在 MacOS 下面完成了任务,到了宏内核的部分涉及到了交叉编译的部分,似乎 MacOS 变得复杂了起来。折腾了一段时间之后,还是在一台 Linux 服务器上用 docker 完成了后续的任务。
  • 这是笔者第一次使用 docker,遇到不懂的就让 Chatgpt 来生成指令,但是还是遇到了很多问题:
    1. hub.docker.com 被墙,根本创建不了 Linux 容器, 后来找到 nvcr.io/nvidia/pytorch:25.05-py3 解决了问题: https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch
    2. 以为 root 之后就万事大吉,但是在运行容器的时候要加上 --privieged, 不然 mount 指令无法正确的找到目录的位置
    3. 运行容器的时候千万不要加 -rm, 不然停止容器的时候就永远地消失了

      2. 学习心得

      由于上述笔者遇到的问题,反反复复搭环境搭了 3 次, 对各种 Linux 指令,以及各种组件的作用有了更深的理解。相比第二阶段,第三阶段的练习难度反而有所下降,但是 ArceOS 本身的内容是相当多的,需要更加系统的学习。 希望能在第四阶段有所收获。