Files
os-build/btrfs
Blake Ridgway f879bcf219 fix: btrfs/init.sh blkid probe (blkid -O is --offset, not "on device")
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.
2026-08-21 21:10:47 -05:00
..

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-snapshot and triggered automatically by the arcline-snapshot.timer systemd unit (see overlays/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.