# multiboot2
[](https://crates.io/crates/multiboot2)
[](https://docs.rs/multiboot2/)
Convenient and safe parsing of Multiboot2 Information Structures (MBI) and its
corresponding tags. Usable in `no_std` environments, such as a kernel. An
optional builder feature also allows the construction of the corresponding
structures.
It follows the Multiboot 2.0 specification
at https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html and the
ELF 64 specification at http://www.uclibc.org/docs/elf-64-gen.pdf.
## 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 boot information
structures at runtime. For parsing, this is not relevant, and you can
deactivate the default features.
## Background: The Multiboot 2 Information Structure
The Multiboot information structure looks like this:
total size | u32
reserved | u32
tags | variable
end tag = (0, 8) | (u32, u32)
There are many different types of tags, but they all have the same beginning:
type | u32
size | u32
other fields | variable
## MSRV
The MSRV is 1.70.0 stable.
## License & Contribution
See main [README](https://github.com/rust-osdev/multiboot2/blob/main/README.md)
file.