基于 zircon 并提供 Linux 兼容操作系统内核。
关于设置 docker、构建图形应用等操作可能需要查询原版 README,但其中很多脚本都废弃了
项目构建采用 xtask 模式,常用操作被封装成 cargo 命令,再通过 Makefile 提供 make 调用,以兼容一些旧脚本。
开发者和用户可以按以下步骤设置 zCore 项目。
先决条件
目前已测试的开发环境包括 Ubuntu20.04、Ubuntu22.04 和 Debian11, Ubuntu22.04 不能正确编译 x86_64 的 libc 测试。 若不需要烧写到物理硬件,使用 WSL2 或其他虚拟机的操作与真机并无不同之处。
在开始之前,确保你的计算机上安装了 git、git lfs 和 rustup。要在虚拟环境开发或测试,需要 QEMU。
克隆项目
git clone https://github.com/rcore-os/zCore.git
NOTICE 此处不必递归,因为后续步骤会自动拉取子项目
初始化存储库
cargo initialize
保持更新
cargo update-all
探索更多操作
cargo xtask
如果下面的命令描述与行为不符,或怀疑此文档更新不及时,亦可直接查看内联文档。
如果发现 error: no such subcommand: ...
,查看命令简写为哪些命令设置了别名。
NOTICE 内联文档也是中英双语
打印构建信息。
cargo dump
初始化项目。转换 git lfs 并更新子项目。
cargo initialize
更新工具链、依赖和子项目。
cargo update-all
静态检查。设置多种编译选项,检查代码能否编译。
cargo check-style
反汇并保存编指定架构的内核。默认保存到 target/zcore.asm
。
cargo asm --arch riscv64 --output riscv64.asm
生成内核 raw 镜像到指定位置。默认输出到 target/{arch}/release/zcore.bin
。
cargo bin --arch riscv64 --output zcore.bin
在 qemu 中启动 zCore。这需要 qemu 已经安装好了。
cargo qemu --arch riscv64 --smp 4
支持将 qemu 连接到 gdb:
cargo qemu --arch riscv64 --smp 4 --gdb 1234
启动 gdb 并连接到指定端口。
cargo gdb --arch riscv64 --port 1234
重建 Linux rootfs。这个命令会清除已有的为此架构构造的 rootfs 目录,重建最小的 rootfs。
cargo rootfs --arch riscv64
将 musl 动态库拷贝到 rootfs 目录对应位置。
cargo musl-libs --arch riscv64
将 ffmpeg 动态库拷贝到 rootfs 目录对应位置。
cargo ffmpeg --arch riscv64
将 opencv 动态库拷贝到 rootfs 目录对应位置。如果 ffmpeg 已经放好了,opencv 将会编译出包含 ffmepg 支持的版本。
cargo opencv --arch riscv64
将 libc 测试集拷贝到 rootfs 目录对应位置。
cargo libc-test --arch riscv64
将其他测试集拷贝到 rootfs 目录对应位置。
cargo other-test --arch riscv64
构造 Linux rootfs 镜像文件。
cargo image --arch riscv64
在 linux libos 模式下启动 zCore 并执行位于指定路径的应用程序。
NOTICE libos 模式只能执行单个应用程序,完成就会退出。
cargo linux-libos --args /bin/busybox
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型