I found a way how to change default BTRFS parent volume (normally hardocded to @) or to create any custom BTRFS subvolume on stock Agama (LEAP 16.0) installer - tested ISO Leap-16.0-online-installer-x86_64-Build171.1.install.iso. The whole trick is in modifying so called “product file” of installer.
In my example resulting BTRFS filesystem has following customization:
- parent root subvolume is
@leap16(normally always@) - there is additional subvolume
srv2
How I did that:
- normally boot install ISO
- once Agama starts - press Ctrl-Alt-F3 to switch to text console
- login as
rootwith provided password (printed on console) - edit file
/usr/share/agama/products.d/leap_160.yaml(you can usevieditor) - below is diff for my changes:
--- leap_160.yaml.orig 2026-06-05 22:04:31.151841796 +0200
+++ leap_160.yaml 2026-06-05 22:04:31.151841796 +0200
@@ -116,12 +116,13 @@
btrfs:
snapshots: true
read_only: false
- default_subvolume: "@"
+ default_subvolume: "@leap16"
subvolumes:
- path: home
- path: opt
- path: root
- path: srv
+ - path: srv2
- path: usr/local
# Unified var subvolume - https://lists.opensuse.org/opensuse-packaging/2017-11/msg00017.html
- path: var
- after save of changes and exit from editor we have to restart Agama service to reload changes with:
systemctl restart agama - before switching back - please note generated
rootpassword - you will need it - now use Alt-F2 (or Ctrl-Alt-F2) to switch back to Agama installer
- it may wait for a while and ask you for
rootpassword - use that one noted from other console - now you can proceed with install as usual - if you will use BTRFS filesystem in Storage setup it will apply our changes to its subvolumes layout
- Disclaimer: I tested only BTRFS without snapshots (yet).
- you can verify that either during installation (when in Software or later stage) - by again pressing Ctrl-Alt-F3 to switch to console and using command
btrfs su li /mnt
Below is my BTRFS layout after reboot to installed system:
$ btrfs su li -a /
ID 256 gen 51 top level 5 path <FS_TREE>/@leap16
ID 257 gen 39 top level 256 path @leap16/boot/grub2/x86_64-efi
ID 258 gen 39 top level 256 path @leap16/boot/grub2/i386-pc
ID 259 gen 51 top level 256 path @leap16/var
ID 260 gen 42 top level 256 path @leap16/usr/local
ID 261 gen 39 top level 256 path @leap16/srv2
ID 262 gen 39 top level 256 path @leap16/srv
ID 263 gen 48 top level 256 path @leap16/root
ID 264 gen 39 top level 256 path @leap16/opt
ID 265 gen 44 top level 256 path @leap16/home
Hopefully someone will find that useful - to workaround some Agama limitations in LEAP 16.0

