isobemak 0.3.4

Create bootable ISO images with FAT32 and UEFI (El Torito) support in Rust.
Documentation
use crate::iso::disk_layout::UefiBootStrategy;

#[derive(Debug, Clone)]
pub struct IsoLayoutProfile {
    pub use_gpt: bool,
    pub eltorito_mode: ElToritoMode,
    pub esp_mode: EspMode,
    pub esp_alignment_lba_512: u32,
    pub mbr_mode: MbrMode,
    pub hidden_sectors_mode: HiddenSectorMode,
    pub uefi_boot_strategy: UefiBootStrategy,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ElToritoMode {
    Both,
    DirectEfiOnly,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum EspMode {
    AppendedPartition,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum MbrMode {
    HybridLinuxEsp,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum HiddenSectorMode {
    Zero,
    PartitionOffset,
}

impl Default for IsoLayoutProfile {
    fn default() -> Self {
        Self::hardware()
    }
}

impl IsoLayoutProfile {
    pub fn emulator() -> Self {
        Self {
            use_gpt: true,
            eltorito_mode: ElToritoMode::Both,
            esp_mode: EspMode::AppendedPartition,
            esp_alignment_lba_512: 4096,
            mbr_mode: MbrMode::HybridLinuxEsp,
            hidden_sectors_mode: HiddenSectorMode::PartitionOffset,
            uefi_boot_strategy: UefiBootStrategy::ElToritoDirectEfi,
        }
    }
    pub fn hardware() -> Self {
        Self {
            use_gpt: true,
            eltorito_mode: ElToritoMode::Both,
            esp_mode: EspMode::AppendedPartition,
            esp_alignment_lba_512: 4096,
            mbr_mode: MbrMode::HybridLinuxEsp,
            hidden_sectors_mode: HiddenSectorMode::Zero,
            uefi_boot_strategy: UefiBootStrategy::EspPartition,
        }
    }
}