60 个版本
0.10.3 | 2021 年 4 月 1 日 |
---|---|
0.10.2 | 2020 年 12 月 10 日 |
0.10.1 | 2020 年 8 月 3 日 |
0.9.0 | 2020 年 7 月 17 日 |
0.2.1 | 2018 年 3 月 31 日 |
#363 在 文件系统
2,147 每月下载量
52KB
1K SLoC
bootimage
从 Rust 操作系统内核创建可引导磁盘镜像。
安装
> cargo install bootimage
使用方法
首先,您需要将 bootloader
crate 添加为依赖
# in your Cargo.toml
[dependencies]
bootloader = "0.6.4"
注意:由于 bootimage 0.7.0
需要 bootloader 版本至少为 0.5.1
,因此至少需要此版本。对于早期 bootloader 版本,请使用 bootimage 0.6.6
。
如果您想使用具有不同名称的自定义 bootloader,可以使用 Cargo 的 重命名功能。
构建
现在,您可以通过运行以下命令构建内核项目并从中创建可引导磁盘镜像
cargo bootimage --target your_custom_target.json [other_args]
该命令将调用 cargo build
,并将所有传递的选项转发。然后,它将构建指定的 bootloader 与内核一起创建可引导磁盘镜像。
运行
要在 QEMU 中运行您的内核,您可以在 .cargo/config
文件中将 bootimage runner
设置为自定义 runner
[target.'cfg(target_os = "none")']
runner = "bootimage runner"
然后,您可以通过以下方式运行您的内核
cargo xrun --target your_custom_target.json [other_args] -- [qemu args]
所有在 --
后的参数都将传递给 QEMU。如果您想使用自定义运行命令,请参阅下面的 配置 部分。
测试
bootimage
集成了对您的内核进行单元和集成测试的支持。为此,您需要使用 Rust 的 custom_tests_framework
功能,具体说明请参阅 此处。
配置
配置通过在内核的 Cargo.toml
文件中的 [package.metadata.bootimage]
表格中完成。以下是一些可用的选项
[package.metadata.bootimage]
# The cargo subcommand that will be used for building the kernel.
#
# For building using the `cargo-xbuild` crate, set this to `xbuild`.
build-command = ["build"]
# The command invoked with the created bootimage (the "{}" will be replaced
# with the path to the bootable disk image)
# Applies to `bootimage run` and `bootimage runner`
run-command = ["qemu-system-x86_64", "-drive", "format=raw,file={}"]
# Additional arguments passed to the run command for non-test executables
# Applies to `bootimage run` and `bootimage runner`
run-args = []
# Additional arguments passed to the run command for test executables
# Applies to `bootimage runner`
test-args = []
# An exit code that should be considered as success for test executables
test-success-exit-code = {integer}
# The timeout for running a test through `bootimage test` or `bootimage runner` (in seconds)
test-timeout = 300
# Whether the `-no-reboot` flag should be passed to test executables
test-no-reboot = true
许可证
根据以下任一许可证授权:
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的选择。
除非您明确表示否则,根据 Apache-2.0 许可证定义,您提交的任何有意包含在工作中的贡献,将按上述方式双重许可,不附加任何额外的条款或条件。
依赖项
~1.3–2.1MB
~46K SLoC