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-loadappapp-userprivilege : https://github.com/arceos-org/app-userprivilegeapp-lazymapping : https://github.com/arceos-org/app-lazymappingapp-runlinuxapp : https://github.com/arceos-org/app-runlinuxappapp-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 字段打包进发布产物。