Discussion:
Automatic creation of last-known-good boot configuration
(too old to reply)
Jens Schmidt
2024-07-10 11:40:01 UTC
Permalink
On Debian testing I've been bitten by the systemd upgrade and the
systemd package split recently, rendering my dracut-LUKS-based
system unbootable. I know that my warranty is void since I'm on
testing, but both these issues would have been much easier to cope
with if there had been some good backup of my initramfs and kernel
below /boot.

So I thought that there might be some automatism like this:

If the currently used kernel and initramfs have been in use
already N times and if the boot time has been lower then M
minutes each time (and if some other conditions are fulfilled),
then consider that kernel and initramfs good and save them away
where they will not be overwritten by regular kernel/initramfs
maintenance.

Scripting something like that shouldn't be too hard, but I wonder
if there already is a package implementing that? A cursory search
hasn't brought up anything. There is package dracut-config-rescue,
but that only configures a variable that does not seem to be used
by dracut itself.

Please CC me when replying.

Thanks!
Michel Verdier
2024-07-10 12:10:01 UTC
Permalink
Post by Jens Schmidt
If the currently used kernel and initramfs have been in use
already N times and if the boot time has been lower then M
minutes each time (and if some other conditions are fulfilled),
then consider that kernel and initramfs good and save them away
where they will not be overwritten by regular kernel/initramfs
maintenance.
I compile my kernel adding a version suffixe. But the problem is the same
if I compile a new version without a different suffixe.

Perhaps a better way would be to save the "good" kernel in /boot with an
additionnal suffixe. Then generate a grub entry for it (update-grub
should does it). So you can directly boot with it. It supposes enough
available space in /boot.
Nicolas George
2024-07-10 13:40:01 UTC
Permalink
Post by Jens Schmidt
On Debian testing I've been bitten by the systemd upgrade and the
systemd package split recently, rendering my dracut-LUKS-based
system unbootable. I know that my warranty is void since I'm on
testing, but both these issues would have been much easier to cope
with if there had been some good backup of my initramfs and kernel
below /boot.
If the currently used kernel and initramfs have been in use
already N times and if the boot time has been lower then M
minutes each time (and if some other conditions are fulfilled),
then consider that kernel and initramfs good and save them away
where they will not be overwritten by regular kernel/initramfs
maintenance.
Scripting something like that shouldn't be too hard, but I wonder
if there already is a package implementing that? A cursory search
hasn't brought up anything. There is package dracut-config-rescue,
but that only configures a variable that does not seem to be used
by dracut itself.
I will say: this is probably not possible with Debian, since an apt-get
(dist-)uupgrade replaces distributed files, and initrds are rebuilt,
etc.

You can consider using a LVM snapshot, but you can only make one
reliably when the system is read-only. You can consider using a
filesystem snapshot, but filesystems that support snapshots have their
own set of problems.

On the other hand, I can say it is a feature of NixOS, I saw it last
week when somebody asked me “I made a mistake, our VM doesn't boot
anymore, can I access the GRUB console?” and they just rebooted on the
previous configuration. But NixOS is not Debian, it is barely Unix as
far as I can see.

Regards,
--
Nicolas George
Dan Ritter
2024-07-10 13:40:01 UTC
Permalink
Post by Jens Schmidt
On Debian testing I've been bitten by the systemd upgrade and the
systemd package split recently, rendering my dracut-LUKS-based
system unbootable. I know that my warranty is void since I'm on
testing, but both these issues would have been much easier to cope
with if there had been some good backup of my initramfs and kernel
below /boot.
If the currently used kernel and initramfs have been in use
already N times and if the boot time has been lower then M
minutes each time (and if some other conditions are fulfilled),
then consider that kernel and initramfs good and save them away
where they will not be overwritten by regular kernel/initramfs
maintenance.
Are you using grub as your bootloader? Normally apt upgrade
leaves the last N (N=5?) kernels and initramfs in /boot, and
configures grub to make them available. apt dist-upgrade, on the
other hand, tries to remove the oldest unused kernel and
initramfs each time.

-dsr-
songbird
2024-07-10 23:00:01 UTC
Permalink
Post by Dan Ritter
Post by Jens Schmidt
On Debian testing I've been bitten by the systemd upgrade and the
systemd package split recently, rendering my dracut-LUKS-based
system unbootable. I know that my warranty is void since I'm on
testing, but both these issues would have been much easier to cope
with if there had been some good backup of my initramfs and kernel
below /boot.
If the currently used kernel and initramfs have been in use
already N times and if the boot time has been lower then M
minutes each time (and if some other conditions are fulfilled),
then consider that kernel and initramfs good and save them away
where they will not be overwritten by regular kernel/initramfs
maintenance.
Are you using grub as your bootloader? Normally apt upgrade
leaves the last N (N=5?) kernels and initramfs in /boot, and
configures grub to make them available. apt dist-upgrade, on the
other hand, tries to remove the oldest unused kernel and
initramfs each time.
i do tell apt specifically to not remove any kernel images
by using the option NeverAutoRemove in apt.conf

=========
APT
{

NeverAutoRemove { "linux-image.*"; }; // packages that should never
// considered for autoRemove
};
=========

usually after each kernel upgrade i'll remove the third oldest one
leaving me the most current one and the one that i used previously
if it seems to have been stable enough. i like doing some things
manually and this is one of them. the other one i prefer to do
myself is bring up the network connection. sometimes i don't need
it so prefer to leave the connection off...

also, just out of a good idea i usually keep a stable booting
partition. this saves me at times.


songbird

Loading...