#partition-table #gpt #block-size #parser #uuid #attributes #standard

无std gpt-parser

GUID分区表(GPT)只读解析器。支持端序识别,可在无std+alloc环境下使用。

7个版本

0.0.10 2023年12月11日
0.0.9 2023年9月12日
0.0.5 2022年5月13日

150嵌入式开发

每月 35 次下载

MIT 许可证

19KB
278

GPT解析库

Crates.io MIT License Rust Version Platform

gpt-parser 是一个Rust库,用于解析符合UEFI标准的GPT(GUID分区表)分区表。它提供了一个端序识别的只读解析器,可以在标准Rust环境和嵌入式Rust环境中使用。这意味着您可以在标准库不可用的资源受限系统上使用它。

功能

  • 解析GPT分区表。
  • 验证GPT头部签名。
  • 验证分区表的CRC32校验和。
  • 处理不同块大小的磁盘(例如,512字节或4K)。
  • 提取有关分区信息,包括它们的UUID和属性。
  • 支持 no_std

用法

要将此库用于您的Rust项目,请将其添加到您的 Cargo.toml 中的依赖项。

[dependencies]
gpt-parser = "*"

标准Rust环境

在标准Rust环境(带有标准库)中,您可以使用库如下所示

extern crate gpt_parser;

use gpt_parser::{GPTHeader, LBA512};

fn main() {
    // Replace 'disk_image' with your disk image data.
    let disk_image: &[u8] = /* Load your disk image here */;

    // Create an LBA512 instance from your disk image.
    let lba = LBA512::from_slice(&disk_image);

    // Parse the GPT header.
    let gpt_header = match GPTHeader::parse_gpt_header(&lba) {
        Ok(header) => header,
        Err(err) => {
            eprintln!("Error parsing GPT header: {}", err);
            return;
        }
    };

    // Access information about the partitions.
    let partitions = gpt_header.get_partitions(&lba);

    for partition in partitions {
        println!("Partition Type: {:?}", partition.part_type);
        println!("Partition UUID: {:?}", partition.id);
        println!("First LBA: {:?}", partition.first_lba);
        println!("Last LBA: {:?}", partition.last_lba);
        println!("Attributes: {:?}", partition.attr);
        println!("Name: {:?}", partition.name);
    }
}

'disk_image' 替换为您的GPT格式磁盘镜像的二进制数据。

嵌入式Rust环境

如果您想在嵌入式Rust环境中(无标准库)使用此库,请启用项目中 no_std 功能。

[dependencies]
gpt-parser = { version = "*", features = ["no_std"] }

在嵌入式环境中,您可能需要根据您特定的平台要求提供某些功能(例如,内存分配)的自定义实现。

测试

此库包含一组测试用例以确保其正确性。要运行测试,请使用以下命令

cargo test

许可证

此库是开源的,并按照MIT许可证的条款分发。

作者

此库由Alberto Ruiz开发([email protected])。

贡献

欢迎对此项目做出贡献。请按需提交问题和拉取请求。

致谢

此库基于UEFI标准的GPT分区表,并使用各种Rust库来实现其功能。

享受使用这个库来解析您项目中GPT分区表吧!如果您遇到任何问题或有改进建议,请随时联系。

依赖项

~110KB