Skip to content

lamco-admin/lamfold

Repository files navigation

lamfold

A no_std, integrity-verifying read-only media filesystem stack — a shared substrate under thin, clean-room format frontends.

This is a metacrate workspace (one repo, many published crates), the same shape as the lamco-wayland / lamco-rdp workspaces. The name is a sheepfold — the enclosure holding the flock of formats — and the layered, recursive structure it reads. Authoritative spec: the lamfold design spec.

Crates

Crate Role Status
crates/lamfold substrate core — codec registry (deflate/lz4/zstd/xz/lzo), immutable-block cache, bounded zero-copy parse + read-cap, FoldFrontend trait, the shepherd (Verifier seam + native fs-verity Merkle) ✅ substrate + shepherd (21 tests)
crates/lamfold-iso optical frontend — ISO9660 + Rock Ridge + Joliet + El Torito + zisofs ✅ complete
crates/lamfold-udf UDF frontend — ECMA-167 / OSTA 1.02 read ✅ base (real mkudffs image)
crates/lamfold-squash compressed frontend — SquashFS 4.0 (gzip/xz/zstd/lz4/lzo), the live-ISO root ✅ complete (real mksquashfs image)
crates/lamfold-erofs forward-standard frontend — EROFS (uncompressed) + the shepherd (fs-verity block gating) ✅ complete (real mkfs.erofs image)
crates/lamfold-cramfs legacy compressed frontend — cramfs (per-page zlib) ✅ complete (real mkcramfs image)
crates/lamfold-romfs minimal-embedded frontend — Linux romfs (-rom1fs-) ✅ complete (real genromfs image)
crates/lamfold-cpio initramfs frontend — newc cpio tree (reuses cpio_reader) ✅ complete (real cpio archive)

Every frontend is a thin member that depends on lamfold (the namesake core, like the lamco-wayland crate within the lamco-wayland workspace) and contains only on-disk structure parsing — codecs, caching, bounded parse, and verification all come from the substrate. Each member publishes as its own crate (Debian/crates.io granularity) while versioning and CI'ing together.

Use

Not yet on crates.io — development is in progress. Until the first release, depend on the member you need via this Git repository:

# the optical frontend (ISO9660 + Rock Ridge / Joliet / El Torito / zisofs)
lamfold-iso   = { git = "https://github.com/lamco-admin/lamfold", default-features = false, features = ["zisofs"] }
# the EROFS frontend + the shepherd (fs-verity integrity)
lamfold-erofs = { git = "https://github.com/lamco-admin/lamfold", default-features = false, features = ["verity"] }
# …and lamfold-udf / -squash / -cramfs / -romfs / -cpio, plus the `lamfold` substrate core.

Once published, the same members will be available as crates.io versions (lamfold-iso = "X.Y.Z", …) — see each crate's documentation link.

Build / test (whole workspace)

cargo test                                   # all members
cargo build --no-default-features            # no_std check
cargo clippy --all-targets -- -D warnings

The pinned, all-permissive dependency set lives once in the workspace root's [workspace.dependencies] (zero copyleft in the tree). MIT OR Apache-2.0.

About

no_std read-only media filesystem stack — ISO9660/UDF/SquashFS/EROFS/cramfs/romfs/cpio with fs-verity integrity (the shepherd), for UEFI bootloaders (development repo)

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages