multiboot2-header
Rust library with type definitions and parsing functions for Multiboot2 headers.
This library is no_std
and can be used in bootloaders.
What this library is good for:
- writing a small binary which writes you a valid Multiboot2 header
into a file (such as
header.bin
) - understanding Multiboot2 headers better
- analyze Multiboot2 headers at runtime
What this library is not optimal for:
- compiling a Multiboot2 header statically into an object file using only Rust code
Features and Usage in no_std
This library is always no_std
. However, the builder
-feature requires the alloc
-crate
to be available. You need the builder
only if you want to construct new headers. For parsing,
this is not relevant.
# 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 in a LOAD segment with a file offset with less than 32768 bytes. See specification.
MSRV
The MSRV is 1.52.1 stable.
License & Contribution
See main README file.