multiboot2-header
Rust library with type definitions and parsing functions for Multiboot2 headers,
as well as a builder to build them at runtime. This library is no_std and can
be used in bootloaders.
What this library is good for:
- construct a Multiboot2 header at runtime (constructing one at build-time with macros is not done yet, contributions are welcome!)
- write a Multiboot2-bootloader that parses a Multiboot2-header
- understanding Multiboot2 headers better
- analyze Multiboot2 headers at runtime
Features and no_std Compatibility
This library is always no_std without alloc. However, the default builder-
feature requires the alloc-crate and an #[global_allocator] to be available.
You need the builder only if you want to construct new headers at runtime.
For parsing, the feature is not relevant, and you can deactivate it.
# without `builder`-feature (and without `alloc`-crate)
= { = "<latest>", = false }
# else (requires `alloc`-crate)
= "<latest>"
Example 1: Builder + Parse
use ;
use ;
/// Small example that creates a Multiboot2 header and parses it afterwards.
Example 2: Multiboot2 header as static data in Rust file
You can use the builder, construct a Multiboot2 header, write it to a file and include it like this:
#[used]
#[no_mangle]
#[link_section = ".text.multiboot2_header"]
static MULTIBOOT2_HDR: [u8; 64] = *include_bytes!("mb2_hdr_dump.bin");
You may need a special linker script to place this symbol in the first 32768 bytes of the ELF. See Multiboot2 specification.
MSRV
The MSRV is 1.70.0 stable.
License & Contribution
See main README file.