Hadris
A Rust workspace for working with partition tables, filesystems, and disk images. Designed for no-std compatibility, embedded systems, and bootloaders.
Workspace Crates
Core Libraries
- hadris-io - No-std I/O abstraction layer (Read, Write, Seek traits)
- hadris-common - Shared utilities (endian types, CRC, UTF-16 strings)
Partition Tables
- hadris-part - Partition table support
- MBR (Legacy BIOS partition tables)
- GPT (Modern UEFI partition tables)
- Hybrid MBR (Combined MBR+GPT for dual BIOS/UEFI boot)
Filesystems
-
hadris-iso - ISO 9660 filesystem implementation
- ISO 9660 Level 1-3 and ISO 9660:1999 (long filenames)
- Joliet extension (UTF-16 Unicode filenames)
- Rock Ridge (RRIP) and SUSP (POSIX semantics, symlinks)
- El-Torito bootable CD/DVD images
-
hadris-fat - FAT filesystem implementation
- FAT12, FAT16, FAT32 support
- Long filename support (VFAT/LFN)
- FAT sector caching for performance
- Analysis and verification tools
- ExFAT support (experimental)
CLI Tools
- hadris-iso-cli - Command-line tool for ISO operations
- hadris-fat-cli - Command-line tool for FAT operations
- hadris-cli - General-purpose disk utility CLI (WIP)
Meta-crate
- hadris - Re-exports all filesystem implementations
Key Features
- No-std compatible - Use in bootloaders, kernels, and embedded systems
- Configurable - Feature flags for read-only, write support, and extensions
- Comprehensive - Support for multiple partition schemes and filesystem extensions
- Standards compliant - Follows ECMA-119, IEEE P1282, El-Torito, and Microsoft FAT specifications
Quick Start
Add dependencies to your Cargo.toml:
[]
= "0.2"
= "0.3"
= "0.2"
For no-std environments:
[]
= { = "0.2", = false, = ["read"] }
= { = "0.3", = false, = ["read"] }
Building
# Build entire workspace
# Run tests
# Build for no-std (example)
See CLAUDE.md for detailed build instructions and architecture notes.
License
Licensed under the MIT license.