Building drivers
There are three types of UEFI images:
- Application
- Boot service driver
- Runtime driver
By default, Rust's UEFI targets produce applications. This can be
changed by passing a subsystem
linker flag in rustflags
and setting the
value to efi_boot_service_driver
or efi_runtime_driver
.
Example:
// In build.rs fn main() { let target = std::env::var("TARGET").unwrap(); if target.ends_with("-unknown-uefi") { println!("cargo::rustc-link-arg=/subsystem:efi_runtime_driver"); } }