[−][src]Crate gptman
A library that allows managing GUID partition tables.
Examples
Reading all the partitions of a disk:
let mut f = std::fs::File::open("tests/fixtures/disk1.img") .expect("could not open disk"); let gpt = gptman::GPT::find_from(&mut f) .expect("could not find GPT"); println!("Disk GUID: {:?}", gpt.header.disk_guid); for (i, p) in gpt.iter() { if p.is_used() { println!("Partition #{}: type = {:?}, size = {} bytes, starting lba = {}", i, p.partition_type_guid, p.size().unwrap() * gpt.sector_size, p.starting_lba); } }
Creating new partitions:
let mut f = std::fs::File::open("tests/fixtures/disk1.img") .expect("could not open disk"); let mut gpt = gptman::GPT::find_from(&mut f) .expect("could not find GPT"); let free_partition_number = gpt.iter().find(|(i, p)| p.is_unused()).map(|(i, _)| i) .expect("no more places available"); let size = gpt.get_maximum_partition_size() .expect("no more space available"); let starting_lba = gpt.find_optimal_place(size) .expect("could not find a place to put the partition"); let ending_lba = starting_lba + size - 1; gpt[free_partition_number] = gptman::GPTPartitionEntry { partition_type_guid: [0xff; 16], unique_parition_guid: [0xff; 16], starting_lba, ending_lba, attribute_bits: 0, partition_name: "A Robot Named Fight!".into(), };
Creating a new partition table with one entry that fills the entire disk:
let ss = 512; let data = vec![0; 100 * ss as usize]; let mut cur = std::io::Cursor::new(data); let mut gpt = gptman::GPT::new_from(&mut cur, ss as u64, [0xff; 16]) .expect("could not create partition table"); gpt[1] = gptman::GPTPartitionEntry { partition_type_guid: [0xff; 16], unique_parition_guid: [0xff; 16], starting_lba: gpt.header.first_usable_lba, ending_lba: gpt.header.last_usable_lba, attribute_bits: 0, partition_name: "A Robot Named Fight!".into(), };
Modules
linux | Linux specific helpers |
Structs
GPT | A type representing a GUID partition table including its partition, the sector size of the disk and the alignment of the partitions to the sectors. |
GPTHeader | A GUID Partition Table header as describe on Wikipedia's page. |
GPTPartitionEntry | A GPT partition's entry in the partition array. |
PartitionName | A wrapper type for |
Enums
Error | An error that can be produced while reading, writing or managing a GPT. |
Type Definitions
Result | The result of reading, writing or managing a GPT. |