Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
86f50b6
build: add EROFS layer output format
smoser May 26, 2026
caff1a5
docs: add EROFS build and verification walkthrough
smoser May 26, 2026
1a74824
cli: add `apko erofs` mount/umount/ls subcommands
smoser May 27, 2026
d9c01a4
golangci-lint
smoser May 27, 2026
545f18d
erofs: make `ls` mount-less and cross-platform via layered fs.FS
smoser May 27, 2026
9805d50
build: rename writeERofs -> writeErofs for capitalization consistency
smoser May 28, 2026
8a51763
add doc on using akpo_build with erofs
smoser May 28, 2026
0e54c8e
docs(erofs): refresh stale notes and fix the manual-overlay snippet
smoser May 28, 2026
e244004
erofs: dedupe spec constants into pkg/build/types
smoser May 28, 2026
7914a1e
erofs(mount): drop -o loop from kernel layer mount
smoser May 28, 2026
be3f3bc
erofs(mount): fail Unmount fast instead of cascading EBUSY
smoser May 28, 2026
a1738d2
erofs(mount): expose --read-only and short-circuit single-layer mounts
smoser May 28, 2026
85de9d8
erofs: preserve setuid/setgid/sticky in the writer
smoser Aug 1, 2026
d0607cb
deps: bump github.com/erofs/go-erofs to v0.3.1
smoser Aug 1, 2026
752868f
erofs(ls): fix uid/gid, device columns and special mode bits
smoser Aug 1, 2026
ae26e8c
erofs: cover file capabilities and other xattrs with a test
smoser Aug 1, 2026
fdb74fa
fix(apkfs): seed character devices as devices, not empty files
smoser Aug 1, 2026
53d98e7
erofs(ls): print 0 as the size of a directory
smoser Aug 1, 2026
245e55a
test(erofs): guard the go-erofs metadata source erofs ls depends on
smoser Aug 1, 2026
50525af
build(erofs): close the image explicitly instead of syncing it
smoser Aug 14, 2026
a2fada1
erofs: stop discarding ListXattrs and short-write errors
smoser Aug 14, 2026
1c0535e
test(erofs): make the optional fsck.erofs cross-check explicit
smoser Aug 14, 2026
46ac139
erofsmount: explain erofs: vs oci:, drop an unbacked claim
smoser Aug 14, 2026
4486222
erofs: add `--format=erofs+ALGO[,level=N]` for compressed layers
smoser Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions docs/apko_file.md
Original file line number Diff line number Diff line change
Expand Up @@ -274,3 +274,19 @@ It contains the following children:
- `budget`: The number of additional layers apko will use for layering.

See [layering.md](layering.md) for more information.

### Format (experimental)

`format` selects the on-wire layer payload format:

- `tar` (default): gzip-compressed tar layers (`application/vnd.oci.image.layer.v1.tar+gzip`).
- `erofs`: EROFS filesystem images (`application/vnd.erofs`), per the draft [erofs/erofs-image-spec](https://github.com/erofs/erofs-image-spec). Written by a pure-Go writer with no internal compression.
- `erofs+ALGO[,level=N]`: compressed EROFS via `mkfs.erofs` (`erofs-utils`); `ALGO` is one of `zstd`, `lz4`, `lz4hc`, or `deflate`. The optional `level=N` is passed through to `mkfs.erofs -z<ALGO>,level=N`.

EROFS layers advertise `erofs` in the image config's `os.features` so consumers that do not implement the spec can identify and skip them. Compressed layers also set `org.erofs.uncompressed-digest` on the layer descriptor to the SHA-256 of the equivalent uncompressed image, which equals the layer's DiffID in `rootfs.diff_ids`.

`format` may also be selected on the command line with `--format=…` on `apko build` and `apko publish`. The CLI flag overrides whatever is in the config file.

**Status:** EROFS support is experimental and tracks the spec PR at https://github.com/erofs/erofs-image-spec/pull/1; media types and annotations may change before the spec reaches a stable release. Both single-layer and multi-layer (`layering`) builds are supported. Multi-layer builds emit each non-final layer with `org.erofs.role=overlay-lower` per spec §3.8; the final layer carries no role. dm-verity is not implemented. Compressed (`erofs+ALGO`) variants require `mkfs.erofs` on `PATH`.

See [erofs.md](erofs.md) for a step-by-step guide to building, inspecting, mounting, and pulling EROFS images.
Loading