tg-arceos-tutorial 是一个集合 crate,用于把与arceos相关的 app-* 和 exercise-* 教学 crate 的源码打包到一个压缩包里,便于通过 cargo clone 后离线解包恢复完整目录。
cargo clone tg-arceos-tutorial # 或 git@github.com:rcore-os/tg-arceos-tutorial.git
cd tg-arceos-tutorial
bash scripts/extract_crates.sh解包后会在当前目录生成 20 个 crate 目录,包括 15 个 app-* 和 5 个 exercise-*。
app-helloworld: https://github.com/arceos-org/app-helloworldapp-collections: https://github.com/arceos-org/app-collectionsapp-readpflash: https://github.com/arceos-org/app-readpflashapp-childtask: https://github.com/arceos-org/app-childtaskapp-msgqueue: https://github.com/arceos-org/app-msgqueueapp-fairsched: https://github.com/arceos-org/app-fairschedapp-readblk: https://github.com/arceos-org/app-readblkapp-loadapp: https://github.com/arceos-org/app-loadapp
app-userprivilege: https://github.com/arceos-org/app-userprivilegeapp-lazymapping: https://github.com/arceos-org/app-lazymappingapp-runlinuxapp: https://github.com/arceos-org/app-runlinuxapp
app-guestmode: https://github.com/arceos-org/app-guestmodeapp-guestaspace: https://github.com/arceos-org/app-guestaspaceapp-guestvdev: https://github.com/arceos-org/app-guestvdevapp-guestmonolithickernel: https://github.com/arceos-org/app-guestmonolithickernel
| 目录 | 仓库地址 | 实验内容说明 |
|---|---|---|
exercise-printcolor |
https://github.com/arceos-org/exercise-printcolor | unikernel,彩色终端输出(ANSI) |
exercise-hashmap |
https://github.com/arceos-org/exercise-hashmap | unikernel,在 axstd 中实现 collections::HashMap |
exercise-altalloc |
https://github.com/arceos-org/exercise-altalloc | unikernel,实现 bump 式内存分配器 |
exercise-ramfs-rename |
https://github.com/arceos-org/exercise-ramfs-rename | unikernel,ramfs 根文件系统上的 rename 支持 |
exercise-sysmap |
https://github.com/arceos-org/exercise-sysmap | monolithic kernel,用户态程序与 mmap 系统调用实现 |
进入任意 app-* 或 exercise-* 目录即可独立构建/运行,例如:
cd tg-arceos-tutorial/app-helloworld
cargo xtask run # 或 cargo xtask run --arch=riscv64
cargo xtask run --arch=aarch64
cargo xtask run --arch=loongarch64
cargo xtask run --arch=x86_64在仓库根目录(已解包、且各 crate 目录存在)下,可按前缀批量执行同一命令:
- 对所有
app-*:./scripts/batch_app_exec.sh -c "cargo xtask run" - 对所有
exercise-*:./scripts/batch_exercise_exec.sh -c "cargo xtask run"
其它示例:
./scripts/batch_app_exec.sh -c "cargo xtask run --arch=aarch64"
./scripts/batch_exercise_exec.sh -c "bash scripts/test.sh"在根目录中执行:
cd tg-arceos-tutorial
bash scripts/compress_crates.sh将生成:
bundle/apps.tar.gz
该压缩包会被 Cargo.toml 的 include 字段打包进发布产物。