Bootable snapshots are a thing, also known as boot environments. You need to use ZFS or btrfs, or possibly bcachefs or LVM offer them. And they never have seemed to have a great implementation on Linux compared FreeBSD, but they do exist.
And here's the crux of it, isn't it? Unless it's accessible and enabled by default, it might as well not exist from the PoV of the end user.
Windows' restore points happen automatically before updates or driver updates. Then you're prompted automatically to restore if Windows fails to boot after an update.
As usual Linux has all the pieces but no desire to create UX to go with it.
Which is a shame because ZFS with automatic snapshotting daily or before major events combined with a simple UI that can run in the preboot environment would be a game changer and make Windows look like a toy.
OpenSUSE Tumbleweed has this. The installer defaults to btrfs and snapshots using snapper. Snapshots are automatic before and after every package manager operation. Save for something that breaks grub, you can always recover.
Which kind of ruins bootable snapshots, as your kernel isn't part of them. You could have a massive esp with ~10 unified kernels each pointing at a different snapshot, with some kind of management script to handle them, but using GRUB seems easier than that.
I think there's still value in a bootloader. You can easily load an old kernel with an old initramfs if you messed up somehow, or adjust kernel parameters.
The boot UI for most modern UEFI-Firmwares is really primitive and they usually don't come with EFI shells.
> And here's the crux of it, isn't it? Unless it's accessible and enabled by default, it might as well not exist from the PoV of the end user.
For what it's worth, at one point Ubuntu supported installing on ZFS through its regular installer and installed the boot environment thingy, with a snapshot before every update. I have one such machine which is now running 23.04 and that still works. I've never had to use in practice, though.
Oh, so this! Having had the option last Friday to just reboot into whatever it was before said update, and just skip the next couple of updates, man, that would have been great!