基于 Rust 的异步操作系统内核。可运行在 riscv64gc 环境下。
本项目采取 xtask 模式。可以认为是用 rust 写 make 或 bash 脚本。
这种模式只需要有 rust 环境就可以,无需其他依赖;而且更方便跨平台。
使用 cargo xtask --help 列出所有可用的任务,然后可以通过 cargo <task> 来运行(原理为在 .cargo/config.toml 设置 alias)。如 cargo xbuild 将构建内核和用户程序。具体参数可以查看每个任务的 --help。
- 安装 qemu-system-riscv64,建议版本不低于 7.0
- 安装 rust 环境,请务必用官方提供的安装方式
- 运行 cargo env
- 运行 cargo qemu
可以通过环境变量 KERNEL_CLOG、KERNEL_FLOG、KERNEL_SLOG 来具体指定日志级别。
若使用 vscode + rust-analyzer,建议将以下设置加入 vscode 设置:
"rust-analyzer.cargo.features": ["profiling"],
"rust-analyzer.check.overrideCommand": [
"cargo",
"check",
"--message-format=json",
/* for kernel and user apps */
"--target",
"riscv64gc-unknown-none-elf",
"--package",
"kernel",
"--features",
"profiling",
"--package",
"user",
/* for xtask */
// "--package",
// "xtask",
],由于一些限制,不能同时检查 kernel 和 xtask,若需开发 xtask,将上面的部分注释,再将 xtask 部分取消注释
可以通过调整添加 vscode 设置使 unsafe 块显示为血红色:
"editor.semanticTokenColorCustomizations": {
"enabled": true,
"rules": {
"*.unsafe:rust": "#ff4040"
}
},如非必要最好不要写 unsafe,如果一定要用,请控制使用范围,并且尽量不要从 *const T/*mut T 转换成 &T/&mut T,转换了也不要长期持有。
推荐扩展:
- rust-analyzer
- Even Better TOML
- crates
- Error Lens
- C/C++(调试用)
- RISC-V Support
- todo tree(用于查看项目中的 TODO/FIXME/NOTE)
- ANSI Colors(用于查看日志文件)
- AutoCorrect(中英文之间自动加空格隔开)
可以为 Todo Tree 添加以下配置: