- 注意: 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每日学习实践的过程记录在自己在github的公开repo上。可参考:
- 徐文浩的2020开源操作系统训练营的过程记录
- 2021开源操作系统训练营第二阶段总结列表
- 2020开源操作系统训练营第二阶段总结:K210组RustSBI开发总结 -- 洛佳
- 2020开源操作系统训练营第二阶段总结:zCore Summer of Code 2020 报告 -- 车春池
- 2020开源操作系统训练营第二阶段总结:移植rCore-Tutorial 到k210 -- 徐文浩
- 2020开源操作系统训练营第二阶段总结:rCore 到 zCore 功能迁移组报告 -- 郑昱笙、李宇
- 陈兴的每日学习实践的过程记录
- zCore结构和核心组件
- zCore系统调用
- zCore硬件移植与驱动开发
- zCore应用开发
目前设置了多个项目,学生可选择参加下面的项目,指导老师制定以周为单位的项目研究计划。
-
项目标题:rCore-Tutorial-v3 进一步扩展
-
项目描述:rCore-Tutorial-v3 的一个重要目标是以简洁的设计实现对应到操作系统的核心知识点上,所以还有很多可以扩展的地方。我们希望通过设计一个一个相对独立的实验,来展现操作系统的核心设计思想,在操作系统实现与操作系统原理之间建立桥梁。学生自己设计实现新OS功能后,其系统能力也随之提高。简言之:做多,错多,收获多
-
项目难度:低/中 (适合完成了lab1-5,且希望能够一小步一小步地继续提升自己OS编程能力/系统能力的同学)
-
项目社区导师:陈渝 github id: chyyuu weichat id: chyyuu
-
项目社区导师:吴一凡 github id: wyfcyx weichat id: yifanwu1998
-
项目社区导师:许善朴 github id: xushanpu123 weichat id: bitmeet520
-
项目社区导师:杨德睿 github id:YdrMaster weichat id: ydrdwx
-
项目产出要求:
- 补充完善 rCore-Tutorial-v3
-
项目技术要求:
- 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
- 熟悉操作系统原理与简易实现
- 具有基础英文阅读和写作能力
-
相关的开源软件仓库列表:
- https://github.com/rcore-os/rCore-Tutorial-v3
- https://rcore-os.github.io/rCore-Tutorial-Book-v3/final-lab.html
- 一个月可行的进阶步骤(当然也是一种挑战)
- 选择1:内核支持中断响应 --> 内核支持 读取设备树,支持virtio外设,支持串口外设 (rcore tutorial v3的ch9已经完成) --> 内核支持多核结构 --> 内核支持Linux syscall(即支持Linux应用)
- 选择2:内核支持中断响应 --> 内核支持 读取设备树,支持virtio外设,支持串口外设 --> 图形界面支持 (rcore tutorial v3的ch9已经完成) --> 改进图形界面支持
- 选择3:内核支持中断响应 --> 内核支持 读取设备树,支持virtio外设,支持串口外设 (rcore tutorial v3的ch9已经完成) --> 实现对TUI界面的支持(即可以在字符界面实现窗口界面和各种基于TUI界面的游戏)
-
项目标题:操作系统课程的有趣大实验
-
项目描述:操作系统课程的大实验的重要目标基于学生兴趣来开展各种操作系统技术的探索,拓展学生的视野,培养未来操作系统人才。
-
项目难度:中/高 (适合完成了lab1-5,并希望能够较快进入更实际一些的OS能力训练或做OS方向研究的同学)
-
项目社区导师:向勇 github id: xyongcn weichat id: xyongcn
-
项目产出要求:
- 各种大实验的设计与实现
-
项目技术要求:
- 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
- 熟悉操作系统原理与简易实现
- 具有基础英文阅读和写作能力
-
2022春季OS课相关大实验的开源软件仓库列表(鼓励进一步改进和扩展):
- 类似ebpf的rcore trace
- 硬件级用户态中断模拟与系统软件支持
- 支持异步协程的zCore
- 用rust重新实现FreeRTOS
- 用rust重新实现Linux的KVM
- 基于x86_64的rCore-Tutorial-v3
- 基于AARCH64的rCore-Tutorial-v3
-
项目标题:zCore 的文档与单元测试完善
-
项目描述:zCore 是用 Rust 实现的支持协程/异步等新机制的操作系统,目前zCore的实现已经初步支持 x86_64/RISC-V 64/AArch64。然而,随着后期开发进程的加快,大量代码缺少文档描述,并且没有实现单元测试,只能在 QEMU 中运行用户程序以检验代码正确性。本项目的目标是完善 zCore 的文档及单元测试,使其成为一个高质量的 Rust 社区项目。
-
项目难度:低 (适合完成了lab1-5,并希望在OS领域找到一份测试/研发工作,或提升软件工程能力的同学)
-
项目社区导师:石振兴 github id: shzhxh weichat id: szx-bj
-
项目社区导师:董峰 github id: workerwork weichat id: Mr_dong-feng
-
项目产出要求:
-
补充完善 zCore 各模块的代码文档。
目标是通过
#![deny(missing_docs)]
编译,并且能够让开发者通过阅读文档,快速理解 zCore 的代码结构和各部分功能。 -
参考 Fuchsia 官方文档及测试代码,为 zCore 中的内核对象补充单元测试。
目标让
zircon-object
模块的测试覆盖率提高到 90% 以上。 -
(可选)在 CI 中支持运行集成测试。 目标是最大化整体的测试覆盖率。
-
(可选)在zCore中添加zircon/linux的syscall。 目标:完善添加zCore内核功能,让zCore通过更多的zircon tests(基于zircon的coretest)或Linux tests(基于musl libc的libc test)或相关应用
-
-
项目技术要求:
- 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
- 熟悉操作系统原理与简易实现
- 具有基础英文阅读和写作能力
-
相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- https://rcore-os.github.io/zCore/zircon_object (zCore 代码文档)
- https://fuchsia.dev/fuchsia-src/reference (Zircon 官方文档)
-
项目标题:zCore 的星光/SiFive开发板支持
-
项目描述:zCore 是用 Rust 实现的支持协程/异步等新机制的操作系统,目前zCore的实现已经初步支持 x86_64/RISC-V 64/AArch64。zCore需要继续完善相关驱动和系统调用。
-
项目难度:中(适合完成了lab1-5,并希望在系统类企业找到一份OS底层研发工作,或提升软件工程能力的同学)
-
项目社区导师:肖络元 github id: shzhxh weichat id: xiaoxiaoluckyard
-
项目社区导师:杨德睿 github id:YdrMaster weichat id: ydrdwx
-
项目产出要求:
- 能够在某开发板上比较稳定地运行 zCore
- (可选)能够在 Linux 系统上运行 zCore libos 这个相对比较简单,因为基于 Linux host OS,不会涉及太多指令级别的改动。可以作为入门练手。
-
项目技术要求:
- 熟悉 Rust 语言
- 熟悉 RISC-V64 指令集,或做过其它平台的底层移植工作
- 熟悉K210的开发经验
-
相关的开源软件仓库列表:
- 项目标题:rCore 到 zCore 的功能迁移
- 项目描述:rCore 是用 Rust 语言实现的兼容 Linux 内核。它支持四种指令集,能够运行比较丰富的应用程序。但是随着时间的积累,rCore 的代码越堆越多,很多内部实现缺乏推敲,需要优化和重构。后来我们从头开始实现了 zCore 项目,采用了更加清晰的分层结构,同时复用 Zircon 微内核的内核对象实现了 Linux 内核的部分功能(如内存管理和进程管理)。目前 zCore 中的 linux 模块已经能够运行基础的 Busybox 等小程序,但仍有大量原本 rCore 支持的功能没有实现。本项目希望将 rCore 的功能迁移到 zCore 当中,并借此机会进行重构。其中一些代码可以直接搬过来,剩下的可能需要调整适配(例如涉及到 async),还有一些可以直接基于 Zircon 内核对象进行实现(例如 epoll)。
- 项目难度:中(适合完成了lab1-5,并希望在系统类企业找到一份OS底层研发工作,或提升软件工程能力的同学)
- 项目社区导师:董峰 github id: workerwork weichat id: Mr_dong-feng
- 项目社区导师:陈乐 github id: yuoo655 weichat id: Endagorion_
- 项目产出要求:
- 能够在 zCore 上运行 rCore 支持的 Linux 程序:GCC,Nginx,Rustc 等
- 对新迁移过来的代码,要求补充代码文档和必要的单元测试
- 项目技术要求:
- 熟悉 Rust 语言
- 熟悉 Linux 系统调用
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- https://github.com/rcore-os/rCore (rCore 仓库)
- 项目标题:改进 RVM 虚拟机
- 项目描述:RVM 是在 rCore 中实现的一个简易 Hypervisor。目前只支持 x86_64,利用 VT-x 硬件虚拟化技术,已经能够在 rCore 上运行 uCore(C 语言版本的 x86 教学操作系统)。我们希望继续完善 RVM,使其能够支持运行完整的 Linux 系统。此外,还希望将 RVM 从 rCore 中分离出来,作为独立项目。未来不但能够接入 rCore、zCore,还能作为 Linux 内核模块运行。
- 项目难度:高 (适合完成了lab1-5,并希望能够较快进入更实际一些的OS能力训练或做OS方向研究的同学)
- 项目社区导师:贾越凯
- 导师联系方式:github id: equation314 weichat id: equation314
- 项目产出要求:
-
将 RVM 从 rCore 中分离出来作为独立项目。
-
能够在 rCore RVM 上运行完整的 Linux 系统。
-
(可选)能够把 RVM 作为一个 Linux module,在 Linux 启动后以 kernel module 的形式加载运行,然后把自己设定成 host 态,把 Linux 设定成 guest 态。
这个有参考,即基于 C 语言实现的 Jailhouse 和 Blue Pill
-
(可选)支持 ARM64 的硬件虚拟化,能够在树莓派上运行虚拟机。
-
- 项目技术要求:
- 熟悉 Rust 语言
- 熟悉虚拟化技术
- 熟悉 x86_64 指令集,理解 VMX 的原理和基于 VMX 的开发
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/rCore (rCore 仓库)
- https://github.com/equation314/rCore/tree/rvm (正在开发中的包含 RVM 的 rCore 仓库)
- https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials (树莓派上的 Rust OS 教程)
- https://github.com/siemens/jailhouse (基于 Linux module 的 Hypervisor)
-
项目标题:面向 Rust-based OS的vscode 动态调试工具
-
项目描述:方便的源代码级调试工具,对监测程序运行状态和理解程序的逻辑十分重要;高效的Rust语言跟踪能力,是Rust操作系统内核开发的必要工具,对基于Rust的操作系统教学和实验很有帮助。然而现有RISC-V、Rust实验环境搭建成本高,上手难度大,不利于学习与开发工作。本项目拟实现一种基于网页访问的在线实验系统,提供方便、高效的手段实现在QEMU和RISC-V开发板上的Rust教学操作系统的源代码调试。
-
项目难度:中(适合完成了lab1-5,熟悉typescript, 了解vscode plugin,并希望能够较快进入更实际一些的OS能力训练或做OS方向研究的同学)
-
项目社区导师: 陈志扬:github id: chenzhiy2001 weichat id: untilthedayibecome 吴竞邦:github id: wujingbang weichat id: wujingb33
-
. 项目产出要求:
- 能够在vscode上动态调试Rust-based OS && APP in OS(比如rcore,zcore等)
- 形成vscode插件
- 提供使用说明和设计实现文档
-
项目技术要求:
- 熟悉 vscode 插件开发
- 了解 VS Code的 Debug Adapter 协议
- 了解QEMU 中的 gdbserver 与 gdb之间的通信协议
- 熟悉 typescript开发
-
相关的开源软件仓库列表:
注:欢迎进入第二阶段的同学提出自己感兴趣的题目,并尽快联系助教或老师进行立项。