#uefi #specification #firmware #efi #boot

无 std r-efi

UEFI 参考规范协议常量和定义

14 个稳定版本 (5 个主要版本)

5.0.0 2024年7月30日
4.5.0 2024年5月23日
4.4.0 2024年3月27日
4.3.0 2023年10月18日
0.1.1 2018年12月10日

#33 in 嵌入式开发

Download history 10755/week @ 2024-05-05 11735/week @ 2024-05-12 13867/week @ 2024-05-19 13804/week @ 2024-05-26 13431/week @ 2024-06-02 11871/week @ 2024-06-09 12900/week @ 2024-06-16 11513/week @ 2024-06-23 11040/week @ 2024-06-30 11193/week @ 2024-07-07 11589/week @ 2024-07-14 12292/week @ 2024-07-21 11467/week @ 2024-07-28 12194/week @ 2024-08-04 11005/week @ 2024-08-11 9200/week @ 2024-08-18

每月45,128次下载
用于 3 crate

MIT OR Apache-2.0 OR LGPL-2.1-or-later

260KB
6.5K SLoC

r-efi

UEFI 参考规范协议常量和定义

r-efi 项目提供了 UEFI 参考规范的协议常量和定义的原生 Rust 代码。此项目的范围仅限于这些协议定义。这些协议并未实际实现。因此,此项目作为任何需要与 UEFI 交互或实现(部分)UEFI 规范的 UEFI 应用程序的基础。

项目

需求

此项目的要求包括

  • rustc>= 1.68.0

构建

要构建此项目,请运行

cargo build

可用的配置选项包括

  • native: 此功能选择器启用编译需要本地 UEFI 目标的模块和示例。它们将无法在外国目标上编译,因此受此标志的保护。
通过官方工具链构建

从 rust-version 1.68 开始,rustup 为许多 UEFI 目标分发预编译的工具链。您可以通过 rustup 列举和安装它们。以下示例显示了如何列出所有可用目标,然后安装适用于 x86_64 架构的 UEFI 目标

rustup target list --toolchain=stable
rustup target add --toolchain=stable x86_64-unknown-uefi

然后可以直接为选定的目标编译此项目

cargo +stable build \
    --examples \
    --features native \
    --lib \
    --target x86_64-unknown-uefi
通过 cargo/rustc nightly with -Zbuild-std 构建

如果您的选定目标没有可用的预编译工具链,您可以通过 rustc 的实验性 -Zbuild-std 功能编译项目及其所需的标准库部分。这需要一个夜间编译器

cargo +nightly build \
    -Zbuild-std=core,compiler_builtins,alloc \
    -Zbuild-std-features=compiler-builtins-mem \
    --examples \
    --features native \
    --lib \
    --target x86_64-unknown-uefi
通过外国目标构建

可以通过标准 Rust 工具链为非 UEFI 目标构建此项目。这允许非 UEFI 目标与 UEFI 系统交互或以其他方式托管 UEFI 操作。此外,只要目标支持完整的标准库,就可以运行此项目的国外测试套件。

cargo +stable build --all-targets
cargo +stable test --all-targets

请注意,对于外国目标,不得启用 native 功能,因为它将在非 UEFI 系统上无法编译。

仓库

许可证

  • MIT OR Apache-2.0 OR LGPL-2.1-or-later
  • 详细信息请参阅AUTHORS文件。

依赖项

~205KB