tg-rcore-tutorial-ch6-basic 0.6.0-preview.1

Standalone reproducible crate for the Chapter 6 basic lab of tg-rcore-tutorial.
tg-rcore-tutorial-ch6-basic-0.6.0-preview.1 is not a library.

tg-rcore-tutorial-ch6-basic

tg-rcore-tutorial-ch6-basictg-rcore-tutorial Chapter 6 基础实验的独立可复现发布包,只包含本章基础实验所需的内核代码、easy-fs 修改、用户态测例、测试脚本和报告材料。

基本信息

  • Chapter: 6
  • 实验类型: 基础实验
  • crates.io crate: tg-rcore-tutorial-ch6-basic
  • 版本: 0.6.0-preview.1
  • 仓库: https://github.com/Joshua912815/tg-rcore-tutorial
  • 对应目录: standalone/tg-rcore-tutorial-ch6-basic
  • 对应 tag: ch6-basic-crate-v0.6.0-preview.1
  • 文档路径: docs/filesystem-hardlink-forward-compat-report-ch6.md

本 crate 包含什么

本 crate 对应 tg-rcore-tutorial-ch6/exercise.md 的 Chapter 6 基础实验,核心内容包括:

  • 实现 linkat
  • 实现 unlinkat
  • 实现 fstat
  • easy-fs 中支持硬链接、目录项复用、最后一个链接删除后的 inode 和数据块回收
  • 保持 chapter4/chapter5 的前向兼容,确保 mmap/munmapspawn/wait/waitpid 等测例继续通过

本 crate 不包含扩展实验、附加题、游戏移植或 Doom 等非 Chapter 6 基础实验内容。

与 AI 合作的最终材料

提交材料优先使用已经整理好的中文报告,而不是英文草稿或模拟聊天记录:

该文档明确覆盖:

  • 与 AI 合作的实现过程
  • 学习效果评估
  • 交互方式
  • 问题/bug/解决过程
  • 验证过程
  • 能力提升
  • 与校内教程的对比

复现方式

方式 1:从 crates.io 获取源码后复现

cargo clone tg-rcore-tutorial-ch6-basic
cd tg-rcore-tutorial-ch6-basic
make check-exercise

运行基础/练习测试:

./test.sh base
./test.sh exercise

直接启动练习版内核:

make run

方式 2:从仓库指定 tag 复现

git clone https://github.com/Joshua912815/tg-rcore-tutorial.git
cd tg-rcore-tutorial
git checkout ch6-basic-crate-v0.6.0-preview.1
cd standalone/tg-rcore-tutorial-ch6-basic
make check-exercise

环境说明

按照课程要求,推荐在 rcore-docker 中运行。示例:

docker run -it --name codex-ch6-basic \
  -v "$PWD":/mnt \
  -w /mnt \
  rcore-docker bash

在容器内进入 crate 目录后运行:

make check-exercise
./test.sh base
./test.sh exercise

测试结论

本 crate 在清理旧 Docker 容器后,使用全新容器完成验证,结果如下:

  • cargo check --features exercise 通过
  • ./test.sh base 通过,checker 结果为 Test PASSED: 15/15
  • ./test.sh exercise 通过,checker 结果为 Test PASSED: 33/33
  • 手动运行 cargo run --features exercise 后执行 ch6_usertest,输出 ch6 Usertests passed!

可复现性说明

为确保老师和助教从 crates.io 下载的真实发布包也能复现,同时满足 crates.io 的 10MB 包大小限制,本 crate 做了这些处理:

  • 内置 Chapter 6 必须修改的 tg-rcore-tutorial-easy-fs,以及运行/测试所需的 tg-rcore-tutorial-usertg-rcore-tutorial-checker,并统一打包为 bundled/vendor-src.tar.gz
  • .cargo/config.toml 使用 [patch.crates-io] 指向解包后的本地 easy-fs
  • scripts/ensure-vendor.shMakefiletest.sh 会在需要时自动解包该依赖
  • build.rs 优先使用包内 vendor/tg-rcore-tutorial-user
  • test.sh 优先使用包内 vendor/tg-rcore-tutorial-checker

因此,复现时不需要假定“本地刚好还有上层 workspace”;从 crates.io 下载的真实包执行 make./test.sh 即可完成准备。