训练营常见问答(FAQ)¶
主要贡献者
- 整理:@zevorn
本页汇总 QEMU 训练营 2026 导学阶段群聊中出现频率较高的问题与解答,便于新学员快速定位答案。问题来源为 QQ 群 1032308510 的值周答疑汇总,按四个板块归档共性议题。
如何使用这份 FAQ
- 遇到问题时,先按下面四个板块快速定位:环境搭建、OpenCamp 与 Classroom、专业阶段实验、训练营组织与答疑。
- 答案中的 Ref. 指向讲义内对应章节或群内答疑时间,可按图索骥回到原文。
- 若问题未收录或已过时,欢迎向
gevico/qemu-camp-tutorial提交 PR 更新本文。
环境搭建¶
Q01 · CNB 工作区每次打开都要重下源码?
问题:CNB 云原生开发环境每次打开都要重新下载 QEMU 源码吗?上次下载的代码、构建产物还在吗?
解答:
- CNB 工作区目前不提供用户自定义的持久化存储卷,每次新开环境确实会丢失本地修改。
- 推荐做法:Fork
qemu-lab仓库,把 QEMU 源码作为 submodule 引入自己的仓库,每次启动自动拉取。 - 或直接使用训练营专业阶段实验仓库
qemu-camp-2026-exper,内置统一的make命令。 - 关键:所有修改必须及时
git commit && git push到远端,关闭网页 IDE 即丢失。
Ref. docs/blogs/misc/qemu-cnb-dev.md · docs/tutorial/2026/ch0/qemu-dev-env.md#附录:CNB qemu-lab 云原生一键开发
Q02 · Mac 上能直接编译 QEMU 吗?
问题:Mac 上能不能直接编译 QEMU?我想用 Rust 写 QEMU 代码。
解答:
- 不推荐在 macOS 上直接编译 QEMU — 虽官方支持,但工具链/依赖坑多,复现成本高。
- 推荐两条路:①
Ubuntu 22.04+/WSL2本地环境;② CNB 云原生开发环境(零配置)。 - QEMU 是 C 与 Rust 混合编译,Rust 支持由内置
meson + bindgen完成,不需要额外做 wasm。 - 从零搭建开发环境请翻阅 QEMU 编译开发环境搭建。
Ref. docs/tutorial/2026/ch0/qemu-dev-env.md#系统要求
Q03 · C 与 Rust 文档里的 target-list 不一致?
问题:C 语言和 Rust 开发环境搭建时配置的 target-list 架构不一样,需要统一吗?
解答:
- 训练营最终只需要
riscv64-softmmu这一个 target。 - Rust 环境文档里写的
aarch64/x86_64组合,是 Rust 工具链示例的默认值,而非训练营要求。 - 建议统一为:
--target-list=riscv64-softmmu --enable-slirp。 - 欢迎向讲义仓库
gevico/qemu-camp-tutorial提交 PR 统一文档说明,成为贡献者。
Ref. docs/tutorial/2026/ch0/qemu-dev-env.md#配置编译选项
Q04 · CNB fork 时要求填写“组织”填什么?
问题:CNB fork 仓库时要求填组织,该填什么?
解答:
- 在 CNB 上 fork 时,若需要组织,请创建一个属于自己的个人组织(例如以昵称 / GitHub ID 命名)。
- 直接 fork 到个人账号在部分场景下会有权限限制,放自建组织里后续协作也更方便。
- 注意:GitHub Classroom 邀请链接会自动 fork 到
gevico组织下,不需要自己选。
Ref. docs/exercise/2026/stage1/index.md#获取实验仓库
OpenCamp 与 Classroom¶
Q05 · Action 已跑,OpenCamp 为何零分?
问题:GitHub Action 都跑过了,OpenCamp 成绩为什么不显示?
解答:
- 需要在 OpenCamp 个人中心绑定 GitHub 用户名 — 填
username,不是主页链接。 - 未绑定 GitHub 时,CI 跑再多次也不会上分。
- 绑定后需要再 push 一次触发 Action,或到 Actions 页面手动 Re-run。
- 仍然 0 分时:确认 CI 真的绿了,并检查是否生成
test_results_summary.json。
Ref. docs/exercise/2026/stage0/index.md · 群内 FAQ
Q06 · Classroom 邀请链接 500 错误怎么办?
问题:Classroom 邀请链接点了之后 500 Internal Server Error / something went wrong。
解答:
- GitHub Classroom 偶发性故障,通常等 1–5 分钟刷新即可恢复。
- 若之前误取消了邀请导致无法再次进入,请联系讲师重新下发邀请链接。
- 进不去 Classroom 时可以先到 https://github.com/orgs/gevico/repositories 用自己的 GitHub ID 搜索仓库,确认是否已经生成。
Ref. 群内通知(04-10 15:25)
Q07 · OpenCamp 的 secret 在哪里获取?
问题:OpenCamp 的 secret 怎么获取?
解答:
- 不需要自己配 secret — Classroom 给你 fork 的仓库里 CI 已经配置好。
- 直接
git push到自己的仓库即可自动评分。 - 如果确有手动需要:OpenCamp 个人中心有 API Token 入口,但训练营流程用不到。
Ref. 群内回答(04-10 12:54)
专业阶段实验¶
Q08 · 四个方向都必须做吗?Rust 呢?
问题:专业阶段是选做吗?四个方向都要做吗?Rust 项目必须做吗?
解答:
- 专业阶段共
4个方向:CPU、SoC、GPGPU、Rust;选择任一方向满分通过即可晋级。 - 鼓励多方向尝试,但不是必须。
- 进入项目阶段的条件:① 任一方向满分;② 贡献一篇总结博客。
- 博客路径:Fork
qemu-camp-tutorial→docs/blogs/2026/qemu-camp-2026-<你的 github id>.md→ 提交 PR。
Ref. docs/exercise/2026/stage1/index.md#晋级项目阶段
Q09 · git pull upstream 报 multiple branches?
问题:git pull upstream main --rebase 报错 Cannot rebase onto multiple branches。
解答:
- 远程仓库地址错了,请使用
gevico/qemu-camp-2026-exper(旧地址/克隆路径可能指向 Classroom 自动生成的长名仓库)。 - 正确命令:
git remote add upstream git@github.com:gevico/qemu-camp-2026-exper.git(讲义已更新)。 - 第四步非必须,本地能 build/test 即可,后续需要同步上游修复时再执行。
- 如仍报错,先
git branch -a确认当前 main 分支是否存在,再重试 rebase。
Ref. docs/exercise/2026/stage1/gpu/gpu-exper-manual.md · 群内答疑(04-14 19:40)
Q10 · Ubuntu 20.04 能编译 GPU 实验吗?
问题:GPU 实验编译报错,Ubuntu 20.04 能用吗?是否只能用 CNB?
解答:
- 官方推荐
Ubuntu 22.04 LTS及以上。20.04 上 glib / pixman 版本偏老,容易导致 meson 报错。 - GPU 方向暂时没有官方 CNB 镜像,需要自己构建环境。
- 可以用 docker 起一个
ubuntu:24.04容器,按gpu-exper-manual.md的依赖清单安装。 - 环境搞通后欢迎把流程补充到讲义仓库,成为新的贡献者。
Ref. docs/exercise/2026/stage1/gpu/gpu-exper-manual.md#环境搭建
Q11 · build 目录下测题 stdout 不显示?
问题:build 目录下测题的 stdout 都看不见,怎么让它输出?
解答:
- 批量跑测时 stdout 被重定向到 log 文件,默认不在终端打印。
- 在
build/tests/gevico/下会有 log / out 文件,cat即可查看。 - 单独调试某题时,直接用
qos-test -p 路径单独运行,终端会实时输出。 - 这是一个优化点 — 欢迎提 PR 让单题调试默认打印 stdout。
Ref. docs/exercise/2026/stage1/gpu/gpu-exper-manual.md#测评验收
训练营组织与答疑¶
Q12 · 训练营的时间线、阶段安排?
问题:训练营的时间线、阶段安排是怎样的?
解答:
- 共 16 周:
2026-04-05开营,2026-08-09结营。 04/06 – 04/26导学阶段。04/27 – 05/10基础阶段 ·05/11 – 06/14专业阶段。06/28选题会 ·06/29 – 08/08项目阶段。- 每周四 20:00–20:30 在线交流会,腾讯会议
449-3341-6333。
Ref. docs/tutorial/2026/ch0 · 群内日程
Q13 · 项目阶段当本科毕设够吗?
问题:项目阶段的项目当本科毕设够吗?有什么参考?
解答:
- 够用 — 去年已有多位学员以项目阶段成果作为毕设 / 研究课题。
- 参考:开营仪式回放 + 《2026 年课程内容介绍:四个阶段(六个实验、四个项目)》。
- 进入项目阶段会有专属导师带队。
- 方向包括:AI 加速硬件建模、CXLMemSim、hetGPU、machina(Rust QEMU 重写)等。
Ref. bilibili BV1CSSQByEDB · https://qemu.gevico.online/tutorial/2026/ch3
Q14 · 如何把博客推送到讲义网站?
问题:如何贡献博客?如何推送到讲义网站?
解答:
- Fork
gevico/qemu-camp-tutorial仓库。 - 在
docs/blogs/2026/新建qemu-camp-2026-<你的 github id>.md。 - 按模板填写:背景介绍 / 专业阶段 / 总结;并同步更新
mkdocs.yml导航。 - PR 标题:
docs/blogs: add stage1 summary by <github id>。 - 审核合入后自动上站:https://qemu.gevico.online/blogs/。
Ref. docs/exercise/2026/stage1/index.md#博客贡献流程
Q15 · 导学阶段到什么时候?应该重点掌握什么?
问题:导学阶段是到 26 号吗?这个阶段重点应该掌握哪些内容?
解答:
- 导学阶段按课程日程到
04/26。 - 建议结合导学阶段视频教程学习,先建立整体认知。
- 可以提前对照项目阶段看自己想做的方向,前几个阶段和项目阶段是对应衔接的。
- 优先掌握:开发环境、课程节奏、QEMU 学习路径与项目方向选择。
Ref. docs/tutorial/2026/ch0 · 群内答疑
Q16 · 提示失去 assignment 仓库权限怎么办?
问题:出现 You no longer have access to your assignment repository. Contact your teacher for support,是要重新邀请吗?
解答:
- 先检查邮箱里是否有 Classroom 邀请或权限变更通知。
- 到
gevico组织下检索自己的 GitHub ID,确认仓库是否已成功创建。 - 若仓库不存在或权限异常,再联系讲师协助重新邀请或修复权限。
Ref. 群内答疑
Q17 · 我们项目阶段什么时候截止?
问题:项目阶段截止时间是什么时候?
解答:
- 项目阶段整体截止到
8月(以课程最终通知为准)。 - 建议按周推进里程碑,避免在截止前集中堆积任务。
Ref. docs/tutorial/2026/ch3 · 群内答疑
Q18 · 专业阶段有单独的群吗?
问题:专业阶段有单独的群吗?
解答:
- 前三个阶段(导学、基础、专业)都在当前大群统一答疑。
- 进入项目阶段后会有单独项目群。
Ref. 群内答疑
Q19 · 还没确定方向,哪个方向更容易上手?
问题:还没确定方向,哪个方向相对简单?
解答:
- 通常建议先看
CPU和SoC两个方向,入门门槛相对更低。 CPU方向主要聚焦指令模拟。SoC方向主要聚焦外设建模与 CPU 集成。- 建议先选一个方向跑通完整流程,再决定是否扩展到其他方向。
Ref. docs/exercise/2026/stage1 · 群内答疑
Q20 · 专业阶段实验是只能考一次吗?
问题:实验可以无限刷吗,还是只有一次通过机会?
解答:
- 专业阶段实验可以反复提交,不限制尝试次数。
- 建议每次提交前先本地自测并记录问题,迭代效率更高。
Ref. docs/exercise/2026/stage1 · 群内答疑
Q21 · 做完基础阶段题目后能直接做专业实验吗?
问题:做完基础阶段题目之后,可以直接上手专业阶段实验吗?感觉中间还有点没打通。
解答:
- 基础阶段题目主要帮助你掌握语言与基础编程能力。
- 进入专业实验前,还需要系统学习课程讲义与视频中的 QEMU 基础知识。
- 如果只刷题不看讲义,常见现象就是“会写代码但不了解 QEMU 机制”。
- 建议按“讲义/视频 -> 小实验 -> 专业题目”的节奏衔接。
Ref. docs/tutorial/2026/ch1 · docs/tutorial/2026/ch2 · 群内答疑
Q22 · 光看讲义还是迷茫,应该怎么办?
问题:我光看讲义还是容易迷茫,应该怎么办?
解答:
- 刚开始面对大型项目时感到迷茫是正常现象。
- 建议先挑一个更简单、边界清晰的小任务作为入口。
- 先跑通一个最小闭环(环境、构建、调试、提交),再逐步扩展难度。
- 遇到卡点及时在群里提问,用反馈缩短摸索时间。
Ref. docs/tutorial/2026/ch0 · 群内答疑
Q23 · 如何通过学习本课程提升就业竞争力?
问题:如何才能通过学习本课程来让自己更好地转行到相关行业,或者说怎么让自己的经历更有含金量?
解答:
- 仅学习本课程本身无法直接帮助你找到一份优秀的工作。
- 更重要的是:编写符合规范的优质代码,并努力将你的代码贡献到优秀的开源仓库上游。
- 参与开源项目、积累实际贡献记录,是提升个人含金量的一条有效途径。
Ref. 群内答疑