// the find
rust-osdev/uefi-rs
Rusty wrapper for the Unified Extensible Firmware Interface (UEFI). This crate makes it easy to develop Rust software that leverages safe, convenient, and performant abstractions for UEFI functionality.
A Rust wrapper around the UEFI firmware interface, split into a raw ABI-matching crate (uefi-raw) and a safe high-level crate (uefi) built on top of it. It's for people writing bootloaders, UEFI applications, or firmware tooling in Rust instead of C.
The raw/safe split is the right call — uefi-raw gives you ABI-exact types if you're implementing firmware or need raw interop, while uefi wraps it safely for application code, so you're not forced into one abstraction level. There's a real integration test runner that boots an actual UEFI app under QEMU and exercises protocols end to end, which is rare rigor for a niche systems crate. The cargo xtask tooling handles cross-target builds (x86_64/ia32/aarch64), clippy, and doc generation consistently, and CI actually runs the QEMU suite rather than just unit tests.
You're writing #![no_std] bare-metal code, so most of the normal Rust ecosystem and debugging tooling is off the table — QEMU or real hardware is your test loop. Protocol coverage is uneven: some UEFI protocols only exist as thin uefi-raw wrappers, so you'll drop into unsafe raw calls for anything less common than console/file/GOP. At ~1.6k stars, it's maintained but not battle-tested at scale — check open issues for the specific protocol you need before relying on it in something real. It pins a specific toolchain via rust-toolchain.toml, which adds friction if you're trying to fold this into an existing stable-toolchain workspace.