The following is the GNU All-permissive License as recommended in

Copyright (C) 2024 Free Software Foundation

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.

Contributions are welcome. See

vm won't boot after dist-upgrade to nabia

before working on a vm in a chroot / mount point, make sure that the vm is shut down or destroyed. before starting a vm, make sure that it's completely unmounted and crypt and nbd device files closed, etc.

install cryptsetup-initramfs, add link_in_boot = no to /etc/kernel-img.conf, run update-initramfs -u, fix the symlinks for /vmlinuz and /initrd.img in /.

contents of /etc/initramfs-tools/modules:


then run update-initramfs -u.

If that doesn't work, you may need to chroot into the fs on the host. note that systemd-nspawn may not work for this purpose. be sure to bind-mount /dev. If cryptsetup is not added to the initramfs (command doesn't exist in busybox console: virsh console, then you may want to add CRYPTSETUP=y to /etc/cryptsetup-initramfs/conf-hook and rebuild the initramfs.

You will likely need the above rule to force add cryptsetup. When you update the initramfs, there's an error about a mismatch in device names, so when you boot, you'll need to manually open the encrypted drive with cryptsetup then mount the resuling partition to /root. Best if all of the above is done before the first boot after upgrading.

If you needed to manually unlock on boot, make sure to update the initramfs again, confirm that there is no warning about mistamtched devices, then reboot.

If you get an error about this on boot:

/lib/systemd/ undefined symbol: seccomp_api_get

mount the fs externally, chroot in, and run this command:

 mv /lib/x86_64-linux-gnu/* ~