The deploy failed with:
blkid: invalid offset argument '/dev/vda2': invalid argument
error: /dev/vda2 is not a btrfs filesystem
`blkid -p -O "$DEV"` passed the device path to --offset, so the probe
always failed. Use a proper TYPE tag probe:
blkid -p -s TYPE -o value "$DEV" # -> "btrfs"
The guard now triggers only when the filesystem type is genuinely not
btrfs. The UUID lookups in deploy-disk.sh (-s UUID -o value) were already
correct.
btrfs in Arcline OS
Arcline OS is btrfs-native: the root filesystem layout is created at install time and snapshots are first-class, not bolted on.
Subvolume layout
| Subvolume | Mount point | Purpose |
|---|---|---|
@ |
/ |
system root — rolled back on failed upgrade |
@home |
/home |
user data — not rolled back by default |
@log |
/var/log |
logs survive rollbacks |
@snapshots |
/.snapshots |
read-only snapshots live here |
The layout is created by btrfs/init.sh <device> (this is what the installer
runs). /etc/fstab templates live in each edition manifest and reference these
subvolumes with subvol= mount options.
Tooling
btrfs/init.sh <device>— create the subvolume layout on a target device.btrfs/snapshot.sh— snapshot / list / prune. Installed in images as/usr/local/sbin/arcline-snapshotand triggered automatically by thearcline-snapshot.timersystemd unit (seeoverlays/base/usr/lib/systemd/system/).btrfs/rollback.sh— promote a snapshot back to@. Installed as/usr/local/sbin/arcline-rollback.
How a rollback works
Rollbacks are done from a rescue/live environment (never against the mounted
@). The tool moves the current @ aside to @.rollback-<ts> and promotes
the chosen snapshot to @. Because btrfs renames are atomic, a crash mid-way
leaves a recoverable system on disk.
Compression
All subvolumes mount with compress=zstd:3 (see the edition fstab
templates). Transparent compression is on by default.