tg-arceos-tutorial 是一个集合 crate,用于把与arceos相关的 app-* 教学 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解包后会在当前目录生成以下 15 个 crate 目录:
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
进入任意 app-* 目录即可独立构建/运行,如:
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
或在所有 app-* 目录中执行,
cd tg-arceos-tutorial/
./scripts/batch_exec.sh -c "cargo xtask run"
./scripts/batch_exec.sh -c "cargo xtask run --arch=aarch64"
./scripts/batch_exec.sh -c "cargo xtask run --arch=loongarch64"
./scripts/batch_exec.sh -c "cargo xtask run --arch=x86_64"
有5 个练习需要完成
- app-helloworld
- app-collections
- app-msgqueue
- app-loadapp
- app-runlinuxapp
在包含 app-* 目录的路径中执行:
cd tg-arceos-tutorial
SOURCE_ROOT=.. bash scripts/compress_crates.sh将生成:
bundle/apps.tar.gz
该压缩包会被 Cargo.toml 的 include 字段打包进发布产物。