#bootloader #boot #kernel #no-alloc

no-std multiboot2

方便且安全地解析Multiboot2启动信息(MBI)结构和包含的信息标签。在no_std环境中可用,如内核。可选的构建器特性还允许构建相应的结构。

39个版本 (20个重大变更)

0.22.1 2024年8月20日
0.21.0 2024年8月17日
0.20.2 2024年5月26日
0.19.0 2023年9月21日
0.3.1 2016年10月31日

#59 in 操作系统

Download history 614/week @ 2024-05-02 1029/week @ 2024-05-09 975/week @ 2024-05-16 875/week @ 2024-05-23 1452/week @ 2024-05-30 922/week @ 2024-06-06 1221/week @ 2024-06-13 1129/week @ 2024-06-20 1346/week @ 2024-06-27 1639/week @ 2024-07-04 883/week @ 2024-07-11 1086/week @ 2024-07-18 1120/week @ 2024-07-25 685/week @ 2024-08-01 1152/week @ 2024-08-08 1226/week @ 2024-08-15

每月下载量 4,259
3 crates 中使用

MIT/Apache

235KB
5K SLoC

multiboot2

crates.io docs

方便且安全地解析Multiboot2启动信息(MBI)结构和包含的信息标签。在no_std环境中可用,如内核。可选的构建器特性还允许构建相应的结构。

它遵循在https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html的多启动2.0规范和在http://www.uclibc.org/docs/elf-64-gen.pdf的ELF 64规范。

功能和no_std兼容性

此库始终为no_std,但无alloc。然而,默认的builder功能需要alloc-crate和一个#[global_allocator]。您只需要在运行时构建新的启动信息结构时才需要builder。对于解析,这并不重要,您可以禁用默认功能。

背景:Multiboot 2信息结构

多启动信息结构如下所示

字段 类型
总大小 u32
保留 u32
标签 可变
结束标签 = (0, 8) (u32, u32)

有许多不同类型的标签,但它们都有相同的开始

字段 类型
类型 u32
大小 u32
其他字段 可变

MSRV

MSRV是1.70.0稳定版。

许可证 & 贡献

请参阅主README文件。

依赖关系

~2MB
~43K SLoC