18 个版本
9.0.0-v0 | 2024 年 6 月 3 日 |
---|---|
8.2.2-v0 | 2024 年 3 月 11 日 |
8.2.0-v1 | 2024 年 1 月 10 日 |
8.1.3-v3 | 2023 年 12 月 19 日 |
0.1.6 | 2022 年 11 月 5 日 |
#3 在 模拟器 中
426 每月下载量
用于 66 crates
135KB
2K SLoC
qemu
此 crate 提供了 QEMU 二进制安装程序。您可以使用它来安装 QEMU 系统和用户模式模拟器,并在您的代码中使用它们。
目录
依赖项
要安装此 crate,您需要构建系统 QEMU 所需的所有依赖项。有一些包始终是必需的。更新后的列表可以在 这里 找到。截至 QEMU 7.3,您可以使用以下特定于发行版的命令安装所需的软件包。如果您在构建过程中遇到任何其他问题,请尝试检查您平台上的 构建说明。如果您无法解决问题,请在此处提交问题!
在 Ubuntu 上安装所需依赖项
$ sudo apt-get install git libglib2.0-dev libfdt-dev \
libpixman-1-dev zlib1g-dev ninja-build
在 Fedora 上安装所需依赖项
$ sudo dnf install git glib2-devel libfdt-devel \
pixman-devel zlib-devel bzip2 ninja-build python3
安装
要安装 QEMU 二进制文件(有关自定义构建的说明,请参阅功能标志部分)
cargo install qemu --features=binaries,lto,plugins
使用方法
有关启用目标的信息,请参阅功能标志部分,但一旦安装了软件,您就可以使用二进制文件了!
Rust 可执行包装器用于用户模拟器
每个 qemu 程序的二进制发行版都提供了 crate,它们基本上都实现了此模式。此可执行文件将作为包装器运行 qemu-aarch64
,并将命令行参数和 stdio 传递给可执行文件。现在我们有了直接在 Rust 中可用的二进制文件,所以一切皆有可能!
Cargo.toml
[package]
name = "qemu-aarch64"
version = "0.1.0"
edition = "2021"
description = "QEMU binary installer for qemu-aarch64"
license = "MIT"
# See more keys and their definitions at https://doc.rust-lang.net.cn/cargo/reference/manifest.html
[dependencies]
memfd-exec = "2.1.0"
qemu = { version = "9.0.0", features = ["qemu-aarch64"] }
use memfd_exec::{MemFdExecutable, Stdio};
use qemu::QEMU_AARCH64_LINUX_USEr;
use std::env::args;
fn main() {
let qemu = QEMU_AARCH64_LINUX_USEr;
let mut args: Vec<String> = args().collect();
args.remove(0);
MemFdExecutable::new("qemu-aarch64", qemu)
.args(args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.expect("Failed to start qemu process")
.wait()
.expect("Qemu process failed");
}
功能标志
此 crate 的功能标志提供了对 QEMU 配置选项的接口。默认情况下,所有标志都设置为与 QEMU 的 configure
脚本设置一样,但目标除外(请参阅 重要说明)。以下是如何将此 crate 配置为依赖项的一些示例
仅使用默认选项安装 qemu-x86_64 用户模式模拟器
这将使 qemu-x86_64
二进制文件可用。
qemu = { version = "9.0.0", features = ["qemu-x86_64"] }
安装经过优化的 qemu-x86_64 用户模式模拟器
这将使 qemu-x86_64
二进制文件可用,但使用 lto
进行剥离和优化。
qemu = { version = "9.0.0", features = ["qemu-x86_64", "lto", "strip"]
使用自定义选项安装 qemu-system-arm 模拟器
我们还可以选择性地启用功能。只有在确实需要时才使用此功能!如果默认情况下已经可用,则它们都将被启用!有关配置选项的更多详细信息,请参阅qemu 文档。
贡献
欢迎任何原因的贡献!
依赖项
~0–2.6MB
~44K SLoC