1use multiboot2_common::MaybeDynSized;
2use multiboot2_header::Builder;
3use multiboot2_header::{
4 HeaderTagFlag, HeaderTagISA, InformationRequestHeaderTag, MbiTagType, Multiboot2Header,
5 RelocatableHeaderTag, RelocatableHeaderTagPreference,
6};
7
8fn main() {
10 let mb2_hdr_bytes = Builder::new(HeaderTagISA::I386)
14 .relocatable_tag(RelocatableHeaderTag::new(
15 HeaderTagFlag::Required,
16 0x1337,
17 0xdeadbeef,
18 4096,
19 RelocatableHeaderTagPreference::None,
20 ))
21 .information_request_tag(InformationRequestHeaderTag::new(
22 HeaderTagFlag::Required,
23 &[
24 MbiTagType::Cmdline.into(),
25 MbiTagType::BootLoaderName.into(),
26 ],
27 ))
28 .build();
29
30 let ptr = mb2_hdr_bytes.as_bytes().as_ptr();
32 let mb2_hdr = unsafe { Multiboot2Header::load(ptr.cast()) };
33 let mb2_hdr = mb2_hdr.unwrap();
34 println!("{mb2_hdr:#?}");
35}