Hi everyone.
After creating a snapper config with snapper -c root create-config / I’ve started having boot issues. I use systemd-boot and now in the boot list I only have snapshot entries. When I boot into any of them, it looks like the root is not mounted as I get errors like “The root filesystem looks like not currently mounted” in YaST.
I managed to circumvent this my editing the .conf entry manually to change it to point at root like this rootflags=subvol=@. Next I tried to remove snapper completely but even though the package and dependencies are removed, but by looking at the output of bootctl list I see that new snapper entries are still created.
Finally, I tried to reinstall the kernel, but now every time I do it I get this error
ERROR: Can't find /.snapshots/@/snapshot/lib/modules/6.19.11-1-default/vmlinuz
ERROR: Can't find /.snapshots/@/snapshot/lib/modules/6.19.11-1-default/vmlinuz
ERROR: snapshot @ has no kernels warning: %post(kernel-default-6.19.11-1.1.x86_64) scriptlet failed, exit status 1
Can someone please help me figure it out? Thank you in advance.
Please see if Systemd-boot#Known_issues is of any help.
Thanks for the link. I have read through it but couldn’t find the solution to my issue. In the end, I did a clean reinstall and now it seems that snapshots are configured properly. At least I see the system boot entry and below it are the snapshots.
Maybe the last time I turned off the “Snapshots” checkbox so the config wasn’t created. But why did things go so wrong is still a mystery of me.
The fresh install brought some other issues but I will make a new topic for that.
Anyway, thank you for your time.
What exactly did you do? Implement snapper from scratch?
If my memory serves me, you’d need to make a read-write snapshot, note down the number, “btrfs subvolume list /“, note the snapshot subvolid and then “btrfs subvolume set-default /“
This should allow you to boot on a subvolume that isn’t defined in boot parameters.
But as far as I know, openSUSE always passes the volume on boot as a rootflag, like “rootflags=subvol=@/.snapshots/0451/snapshot” where “0451” is the snapper id for the snapshot.
I’m not sure why OpenSUSE does this, there’s probably a good reason but when I set snapper up on other distros I just set the default sub volume and then don’t pass anything on boot (and mount the raw volume to / in fstab).
I think you’re right but unfortunately I don’t have the ability to verify this anymore.
I’ve had snapper installed but not enabled (the config was missing). After creating the config and rebooting I ended up with read-only snapshots, which effectively made the system unusable.
On a fresh install the output of bootctl list is like this:
type: Boot Loader Specification Type #1 (.conf)
title: openSUSE Tumbleweed 20260409 (default) (selected)
id: opensuse-tumbleweed-6.19.11-1-default-1.conf
source: /boot/efi//loader/entries/opensuse-tumbleweed-6.19.11-1-default-1.conf (on the EFI System Partition)
sort-key: opensuse-tumbleweed
version: 1@6.19.11-1-default
linux: /boot/efi//opensuse-tumbleweed/6.19.11-1-default/linux-xx
initrd: /boot/efi//opensuse-tumbleweed/6.19.11-1-default/initrd-xx
options: root=/dev/mapper/cr_root splash=silent mitigations=auto quiet security=selinux selinux=1 rootflags=subvol=@/.snapshots/1/snapshot systemd.machine_id=xx>
type: Boot Loader Specification Type #1 (.conf)
title: Snapper: openSUSE Tumbleweed 20260409 (102,6.19.11-1-default,2026-04-10 16:56:30, post, zypp(zypper)) (not reported/new)
id: opensuse-tumbleweed-6.19.11-1-default-102.conf
source: /boot/efi//loader/entries/opensuse-tumbleweed-6.19.11-1-default-102.conf (on the EFI System Partition)
sort-key: snapper-opensuse-tumbleweed
version: 102@6.19.11-1-default
linux: /boot/efi//opensuse-tumbleweed/6.19.11-1-default/linux-xx
initrd: /boot/efi//opensuse-tumbleweed/6.19.11-1-default/initrd-xx
options: root=/dev/mapper/cr_root splash=silent mitigations=auto quiet security=selinux selinux=1 rootflags=subvol=@/.snapshots/102/snapshot systemd.machine_id=xx>
...etc etc etc...
YaST snapper plugin shows description for snapshot #1 as “first root file system”.
On the broken install I had only those Snapper: openSUSE Tumbleweed... snapshots but no openSUSE Tumbleweed 2026xxxxx record in systemd-boot. I thought that the default entry would mount directly into root, but it seems that it’s a snapshot too.
Now that I think about it, I probably could’ve achieved the same by creating a single type snapshot manually, but it is what it is now. Should’ve RTFM more carefully before doing anything.
If you were making a new config from scratch then yes you’d need a snapshot saved as —read-write and then mount THAT as your “first root filesystem” using the snapshot number of the read-write snapshot you made.
To the best of my knowledge, anyway.
If you use btrfs set default on that snapshot and don’t specific a subvol in launch arguments, then it would work the same way. I don’t know why OpenSUSE specifies the snapshot in every entry, I guess it’s easier to manage the list of snapshots. When I did this in my Gentoo/Arch installs I didn’t bother, and used the default feature in btrfs instead.
1 Like