Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

专业阶段 - rCore-Tutorial

基于 LearningOS 2026s rCore 课程模板 整理,由 LearningOS 统一分配学员仓库、自动评测并同步 OpenCamp。

五项实验:每项 100 分 · 总分:500 分

开始实验

  1. 加入 OpenCamp 秋冬季训练营,并绑定自己的 GitHub 账号。
  2. 使用课程方提供的领取链接,点击 Create 提交申请;等待机器人回复,然后接受仓库邀请。
  3. 克隆分配的作业仓库,切换章节分支,完成实验代码和报告。
  4. push 到 ch3、ch4、ch5、ch6 或 ch8,在 Actions 查看评测;通过后自动上传累计成绩。

分配的仓库包含 main 与 ch1 至 ch8。把下面的 YOUR_GITHUB_LOGIN 替换为自己的 GitHub 登录名:

git clone https://github.com/LearningOS/2026a-rcore-YOUR_GITHUB_LOGIN.git
cd 2026a-rcore-YOUR_GITHUB_LOGIN
git switch ch3

依次下载自己的作业仓库、进入目录、切换到第一个计分实验分支。使用 SSH 的同学可从仓库 Code → Local → SSH 复制地址;请先在自己的 GitHub 账号配置 SSH 公钥。

教材与代码资料

先阅读 rCore 实验指导,需要更完整的原理说明时配合 rCore-Tutorial-Book-v3。实验从基本执行环境逐步发展到内存管理、进程、文件系统与并发。

章节 上游 OS API 文档
第 1 章 ch1 API
第 2 章 ch2 API
第 3 章 ch3 API
第 4 章 ch4 API
第 5 章 ch5 API
第 6 章 ch6 API
第 7 章 ch7 API
第 8 章 ch8 API

进一步阅读:第 9 章 API、往期学习资源、上游教学代码。第 9 章作为拓展资料,本仓库的课程分支到 ch8。

环境配置与运行

按照 实验指导第零章 准备 Linux、Rust 和 QEMU。章节中的 rust-toolchain.toml 指定课程使用的 Rust 版本;本仓库使用 nightly-2024-05-02,目标为 riscv64gc-unknown-none-elf。

在已切换到 ch3 的作业仓库根目录,首次下载用户程序:

git clone https://github.com/LearningOS/rCore-Tutorial-Test.git user
git -C user checkout a0593662ad55d670ba8c27ce1763347cd0dd552f

两条命令下载用户程序并选择与课程自动评测相同的版本。已经有 user/ 时复用该目录,不要重复克隆。

make -C os run

-C os 在内核目录执行 make run,构建本章的内核、用户程序并启动 QEMU。修改代码后再次运行即可。

使用仓库提供的 Docker 环境

安装并启动 Docker 后,在已切换到章节分支的仓库根目录执行:

make build_docker
make docker

先从仓库的 Dockerfile 构建环境,再进入挂载了本地仓库的容器。容器内工作目录为 /mnt,可运行上面的 make -C os run。首次构建包含编译 QEMU,耗时较长。

网络配置参考 Docker 官方的镜像下载代理和构建代理。

本地评测

内核能启动后,使用官方检查器验证实验要求。以下是 ch3 的操作,在已配置实验环境的仓库根目录执行。首次下载检查器及其测试程序:

git clone https://github.com/LearningOS/rCore-Tutorial-Checker.git ci-user
git -C ci-user checkout 7d61ec55b58eed6ca7052917846c1b87af34563a
git clone https://github.com/LearningOS/rCore-Tutorial-Test.git ci-user/user
git -C ci-user/user checkout a0593662ad55d670ba8c27ce1763347cd0dd552f

这些命令准备与课程 CI 相同版本的检查器和测试程序。已有对应目录时复用,不要删除自己的源码或报告。

make -C ci-user test CHAPTER=3

运行第三章测试并检查报告。后续切换到 ch4、ch5、ch6、ch8 时,将 CHAPTER 改为对应数字。只有全部测试、报告检查均通过且命令成功退出,才算本章完成;查看最终 N/N 时也要留意后续报错。

分支与实验报告

分支 内容 分值 必须提交的报告
main 课程入口与操作指南 — —
ch1 应用程序与执行环境 — —
ch2 批处理系统 — —
ch3 多道程序与分时多任务 100 lab1
ch4 地址空间 100 lab1、lab2
ch5 进程管理 100 lab1 至 lab3
ch6 文件系统与 I/O 100 lab1 至 lab4
ch7 进程间通信 — —
ch8 并发与同步 100 lab1 至 lab5

报告放在 reports/,文件名为 lab1.md 或 lab1.pdf 等。请提交真实实验报告;后续章节仍需保留此前报告。

提交代码与报告

以 ch3 为例,完成代码并编写 reports/lab1.md 或 reports/lab1.pdf 后:

git diff
git add os reports
git commit -m "Complete rCore chapter 3"
git push origin ch3

依次检查差异、暂存源码和报告、创建提交、推送到第三章分支。其他章节使用相应的分支名;需要提交其他实验文件时,明确将它们加入本次提交。

各章节分支独立。切换下一章后,把此前报告一并保留;不要为了同步报告合并整条章节分支,以免混入其他章节的内核代码。

评分与同步

push 到 ch3、ch4、ch5、ch6、ch8 自动触发对应章节评测。官方测试全部通过、实验报告齐全且检查器成功退出,才记该章 100 分。重复通过不会重复加分,已通过章节的成绩会保留。

Actions 先执行 Test chapter and reports,通过后执行 Save progress and upload score。上传日志出现 OpenCamp accepted the score (result=1). 表示 OpenCamp 接口接受了成绩;再到学员成绩页面核对显示。

通过记录保存在学员作业仓库 gh-pages 分支的成绩文件中。

模板保留待完成的实验代码,直接运行时出现测试失败属于预期结果。main、ch1、ch2、ch7 不计分。

常见问题

现象 检查与处理
push 没有权限 接受仓库邀请,并使用领取仓库的 GitHub 账号授权
缺少章节分支 联系助教;仓库应包含 main 和 ch1 至 ch8
push 后没有评测 检查提交分支、Actions 是否启用,以及提交说明是否含 [skip ci]
测试没有全部通过 查看日志,完成代码和报告后重新 push
上传被跳过 联系助教核对分配的账号;只有该学员触发的运行上传成绩
提示未报名或账号不匹配 加入秋冬季训练营,绑定领取仓库使用的 GitHub 账号
凭证缺失、写入成绩失败或接口拒绝 把 Actions 运行链接和错误信息交给助教检查配置

运行附件包含 rcore-grade.log 和 rcore-result.json,保留 30 天。修复账号或权限问题后,可以重跑原工作流;已通过章节的记录保留,重试不会重复加分。也可以在 Actions 选择 Run workflow 并选择评分分支;选择 main 会跳过评分。

本仓库由 LearningOS 组织维护,保留上游源码历史,按 GPL-3.0 许可分发。

About

2026 秋冬季开源操作系统训练营 · 专业阶段 - rCore-Tutorial · 课程模板与自动评测

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages