Limine boot menu is losing kernel boot entries on system update

Hi,
Maybe I don’t have enough knowledge in this again, but is this normal that after a failed package update with paru, CachyOS kernels are disappears from Limine boot menu except snapshots?

As I saw after that, due to unsufficient free space on root subvol, paru packages upgrade failed on one of the upgrade step (at podman-desktop package but it does’t matter I guess). After that I made more free space and reran paru, but it updated only a few more packages (and not the package which update is failed, as I saw).
After that and a reboot, I saw that all of the main CachyOS kernels are disappeared from Limine boot menu for some reason…
Thanks to the working btrfs snaphots and script which successfully managed the restore of limine.conf file in /boot/ either, I could revert to the snapshot before the update.

I think the terminal output was more verbose, but I can attach the relevant pacman.log part:

[2025-08-27T05:03:11+0200] [PACMAN] Running 'pacman --sync -y -u --'
[2025-08-27T05:03:11+0200] [PACMAN] synchronizing package lists
[2025-08-27T05:03:12+0200] [PACMAN] starting full system upgrade
[2025-08-27T05:03:58+0200] [ALPM] running '05-etckeeper-pre-install.hook'...
[2025-08-27T05:03:59+0200] [ALPM-SCRIPTLET] [master b93686c] saving uncommitted changes in /etc prior to pacman run
[2025-08-27T05:03:59+0200] [ALPM-SCRIPTLET]  Author: N M <n@p.e>
[2025-08-27T05:03:59+0200] [ALPM-SCRIPTLET]  2 files changed, 1 insertion(+), 3 deletions(-)
[2025-08-27T05:03:59+0200] [ALPM-SCRIPTLET]  delete mode 100644 pacman.d/gnupg/.#lk0x0000562b483196d0.cachyos-x8664.26741
[2025-08-27T05:03:59+0200] [ALPM] running '05-snap-pac-pre.hook'...
[2025-08-27T05:04:00+0200] [ALPM-SCRIPTLET] ==> root: 130
[2025-08-27T05:04:00+0200] [ALPM] running '10-limine-snapper-lock.hook'...
[2025-08-27T05:04:06+0200] [ALPM] running '60-limine-mkinitcpio-remove.hook'...
[2025-08-27T05:04:06+0200] [ALPM] running '60-mkinitcpio-remove.hook'...
[2025-08-27T05:04:06+0200] [ALPM] transaction started
[2025-08-27T05:04:06+0200] [ALPM] upgraded libxmlb (0.3.22-1.1 -> 0.3.23-1.1)
[2025-08-27T05:04:06+0200] [ALPM] upgraded harfbuzz (11.4.1-1 -> 11.4.4-1)
[2025-08-27T05:04:06+0200] [ALPM] upgraded gdbm (1.25-1.1 -> 1.26-1.1)
[2025-08-27T05:04:06+0200] [ALPM] upgraded ca-certificates-mozilla (3.115-1.1 -> 3.115.1-1.1)
[2025-08-27T05:04:07+0200] [ALPM] upgraded appstream (1.0.5-2.1 -> 1.0.6-1.1)
[2025-08-27T05:04:07+0200] [ALPM] upgraded mesa (1:25.2.1-2 -> 1:25.2.1-3)
[2025-08-27T05:04:07+0200] [ALPM] upgraded appstream-qt (1.0.5-2.1 -> 1.0.6-1.1)
[2025-08-27T05:04:07+0200] [ALPM] upgraded bind (9.20.11-1.1 -> 9.20.12-1.1)
[2025-08-27T05:04:09+0200] [ALPM] upgraded botan (3.8.1-1.1 -> 3.9.0-1.1)
[2025-08-27T05:04:09+0200] [ALPM] upgraded bpf (6.15-4 -> 6.16-3)
[2025-08-27T05:04:09+0200] [ALPM] upgraded nss (3.115-1.1 -> 3.115.1-1.1)
[2025-08-27T05:04:12+0200] [ALPM] upgraded brave-bin (1:1.81.135-1 -> 1:1.81.136-1)
[2025-08-27T05:04:12+0200] [ALPM] upgraded cachyos-hello (0.18.0-1 -> 0.18.3-1)
[2025-08-27T05:04:25+0200] [ALPM] upgraded cmake (4.0.3-1.1 -> 4.1.0-1.1)
[2025-08-27T05:04:26+0200] [ALPM] upgraded cpupower (6.15-4 -> 6.16-3)
[2025-08-27T05:04:26+0200] [ALPM] upgraded cryptsetup (2.8.0-1.1 -> 2.8.1-1.1)
[2025-08-27T05:04:26+0200] [ALPM] upgraded dart-sass (1.90.0-1.1 -> 1.91.0-1.1)
[2025-08-27T05:04:33+0200] [ALPM] upgraded electron35 (35.7.4-1.1 -> 35.7.5-1.1)
[2025-08-27T05:04:39+0200] [ALPM] upgraded electron36 (36.7.4-1.1 -> 36.8.1-1.1)
[2025-08-27T05:04:39+0200] [ALPM] upgraded fd (10.2.0-1.1 -> 10.3.0-1.1)
[2025-08-27T05:04:42+0200] [ALPM] upgraded ghostscript (10.05.1-2.1 -> 10.05.1-3.1)
[2025-08-27T05:04:48+0200] [ALPM] upgraded git (2.50.1-3.1 -> 2.51.0-1.1)
[2025-08-27T05:04:49+0200] [ALPM] upgraded harfbuzz-icu (11.4.1-1 -> 11.4.4-1)
[2025-08-27T05:04:49+0200] [ALPM] upgraded libraqm (0.10.2-1.1 -> 0.10.3-1.1)
[2025-08-27T05:04:50+0200] [ALPM] upgraded imagemagick (7.1.2.1-1.1 -> 7.1.2.2-1.1)
[2025-08-27T05:04:50+0200] [ALPM] upgraded keepassxc (2.7.10-3 -> 2.7.10-4)
[2025-08-27T05:04:56+0200] [ALPM] upgraded qt6-declarative (6.9.1-2.1 -> 6.9.1-3.1)
[2025-08-27T05:04:56+0200] [ALPM] upgraded qca-qt6 (2.3.10-2 -> 2.3.10-3)
[2025-08-27T05:05:00+0200] [ALPM] upgraded kwin (6.4.4-1.1 -> 6.4.4-4.1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded ldb (2:4.22.3-1.1 -> 2:4.22.4-1.1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded lib32-harfbuzz (11.4.1-1 -> 11.4.4-1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded lib32-lcms2 (2.16-1 -> 2.17-1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded lib32-libgcrypt (1.11.1-1 -> 1.11.2-1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded lib32-sqlite (3.50.2-1 -> 3.50.4-1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded lib32-nss (3.115-1 -> 3.115.1-1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded libcerf (1:3.0-1.1 -> 1:3.2-1.1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded libqalculate (5.6.0-1.1 -> 5.7.0-1.1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded libwbclient (2:4.22.3-1.1 -> 2:4.22.4-1.1)
[2025-08-27T05:05:01+0200] [ALPM] upgraded limine-mkinitcpio-hook (1.20.3-1 -> 1.21.0-1)
[2025-08-27T05:05:10+0200] [ALPM] upgraded linux-cachyos (6.16.1-2 -> 6.16.3-2)
[2025-08-27T05:05:16+0200] [ALPM] upgraded linux-cachyos-headers (6.16.1-2 -> 6.16.3-2)
[2025-08-27T05:05:27+0200] [ALPM] upgraded linux-cachyos-lts-lto (6.12.42-2 -> 6.12.43-3)
[2025-08-27T05:05:31+0200] [ALPM] upgraded linux-cachyos-lts-lto-headers (6.12.42-2 -> 6.12.43-3)
[2025-08-27T05:05:31+0200] [ALPM] upgraded linux-cachyos-lts-lto-nvidia (6.12.42-2 -> 6.12.43-3)
[2025-08-27T05:05:33+0200] [ALPM] upgraded linux-cachyos-nvidia (6.16.1-2 -> 6.16.3-2)
[2025-08-27T05:05:34+0200] [ALPM] upgraded nano (8.5-1.1 -> 8.6-1.1)
[2025-08-27T05:05:34+0200] [ALPM] upgraded netavark (1.16.0-2.1 -> 1.16.1-1.1)
[2025-08-27T05:05:34+0200] [ALPM] installed gcr-4 (4.4.0.1-1.1)
[2025-08-27T05:05:35+0200] [ALPM] installed libnma-common (1.10.6-3.1)
[2025-08-27T05:05:35+0200] [ALPM] installed libnma-gtk4 (1.10.6-3.1)
[2025-08-27T05:05:35+0200] [ALPM] installed networkmanager-vpn-plugin-openvpn (1.12.3-1.1)
[2025-08-27T05:05:35+0200] [ALPM] upgraded networkmanager-openvpn (1.12.2-1.1 -> 1.12.3-1.1)
[2025-08-27T05:05:35+0200] [ALPM] upgraded nfsidmap (2.8.3-2.1 -> 2.8.3-3.1)
[2025-08-27T05:05:35+0200] [ALPM] upgraded nfs-utils (2.8.3-2.1 -> 2.8.3-3.1)
[2025-08-27T05:05:35+0200] [ALPM] upgraded nftables (1:1.1.4-1.1 -> 1:1.1.4-2.1)
[2025-08-27T05:05:55+0200] [ALPM] error: could not extract /usr/lib/podman-desktop/resources/app.asar.unpacked/node_modules/win-ca/api/index.js (Write failed)
[2025-08-27T05:05:55+0200] [ALPM] error: problem occurred while upgrading podman-desktop
[2025-08-27T05:05:55+0200] [ALPM] upgraded podman-desktop (1.20.2-2.1 -> 1.21.0-1.1)
[2025-08-27T05:05:55+0200] [ALPM] transaction failed
[2025-08-27T06:00:57+0200] [PACMAN] Running 'pacman --sync -y -u --'
[2025-08-27T06:00:57+0200] [PACMAN] synchronizing package lists
[2025-08-27T06:00:57+0200] [PACMAN] starting full system upgrade
[2025-08-27T06:02:24+0200] [ALPM] running '05-snap-pac-pre.hook'...
[2025-08-27T06:02:24+0200] [ALPM-SCRIPTLET] ==> root: 131
[2025-08-27T06:02:24+0200] [ALPM] running '10-limine-snapper-lock.hook'...
[2025-08-27T06:02:25+0200] [ALPM] transaction started
[2025-08-27T06:02:31+0200] [ALPM] upgraded proton-cachyos (1:10.0.20250807-1 -> 1:10.0.20250819-1)
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET] :: This package, due to the way it is built and packaged, is officially UNSUPPORTED
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    by Valve. Please do not bother them if something doesn't run with it.
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET] 
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    If games with anti-cheat refuse to run or connect to servers when using
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    this package please use the Steam Linux Runtime versions from our repository
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    https://github.com/CachyOS/proton-cachyos/releases
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET] 
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    If something does NOT run with this package, but DOES run with the same official
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    version, installed according to upstream instructions, feel free to report it through
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    the issues in our repository - https://github.com/CachyOS/proton-cachyos
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET] 
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    Proton-CachyOS is built with Wayland support, but it is DISABLED by default.
[2025-08-27T06:02:31+0200] [ALPM-SCRIPTLET]    If you want to test the Wayland driver, set PROTON_ENABLE_WAYLAND=1
[2025-08-27T06:02:31+0200] [ALPM] upgraded python-typing_extensions (4.14.1-1 -> 4.15.0-1)
[2025-08-27T06:02:31+0200] [ALPM] upgraded python-beautifulsoup4 (4.13.4-1 -> 4.13.5-1)
[2025-08-27T06:02:31+0200] [ALPM] upgraded python-cryptography (45.0.5-1.1 -> 45.0.6-1.1)
[2025-08-27T06:02:31+0200] [ALPM] upgraded python-filelock (3.18.0-1 -> 3.19.1-1)
[2025-08-27T06:02:31+0200] [ALPM] upgraded python-lxml (6.0.0-2.1 -> 6.0.1-1.1)
[2025-08-27T06:02:31+0200] [ALPM] upgraded python-platformdirs (4.3.8-1 -> 4.4.0-1)
[2025-08-27T06:02:31+0200] [ALPM] upgraded qca-qt5 (2.3.10-2 -> 2.3.10-3)
[2025-08-27T06:02:32+0200] [ALPM] upgraded qt6-webengine (6.9.1-2 -> 6.9.1-3.1)
[2025-08-27T06:02:32+0200] [ALPM] upgraded raptor (2.0.16-7.1 -> 2.0.16-8.1)
[2025-08-27T06:02:33+0200] [ALPM] upgraded rclone (1.70.3-1.1 -> 1.71.0-1.1)
[2025-08-27T06:02:33+0200] [ALPM] upgraded smbclient (2:4.22.3-1.1 -> 2:4.22.4-1.1)
[2025-08-27T06:02:33+0200] [ALPM] upgraded thin-provisioning-tools (1.2.0-1.1 -> 1.2.1-1.1)
[2025-08-27T06:02:36+0200] [ALPM] upgraded wine-cachyos-opt (2:10.0.20250807-1 -> 2:10.0.20250819-1)
[2025-08-27T06:02:36+0200] [ALPM] upgraded yt-dlp (2025.07.21-1 -> 2025.08.22-1)
[2025-08-27T06:02:36+0200] [ALPM] upgraded yyjson (0.11.1-1.1 -> 0.12.0-1.1)
[2025-08-27T06:02:36+0200] [ALPM] upgraded zsh-completions (0.35.0-2 -> 0.35.0-3)
[2025-08-27T06:02:37+0200] [ALPM] transaction completed
[2025-08-27T06:02:37+0200] [ALPM] running '30-systemd-update.hook'...
[2025-08-27T06:02:37+0200] [ALPM] running 'rebuild-detector.hook'...
[2025-08-27T06:02:39+0200] [ALPM] running 'zz-snap-pac-post.hook'...
[2025-08-27T06:02:39+0200] [ALPM-SCRIPTLET] ==> root: 132

Part of updating involves deleting your old kernel to replace itvwith a new one. Sobyes if you fill up your disk and have a failed upgrade this can happen.

Yes, that is normal behavior for any Arch based distros.

During a failed kernel update, the old kernel is removed but the new one isn’t fully installed.
Which boot loader doesn’t matter, the kernel will be gone after a broken upgrade.

There are several ways to solve this issue:

With Btrfs snapshots (Limine/Grub):

  • Just boot into a snapshot and restore.

Without snapshots:

  • Don’t reboot if the update failed, but fix the packages first. (However, I don’t think, most newbies do that)
  • If you did reboot and lost the kernel, you’ll have to learn chroot to recover for fun or give up.

This is somehow weird for me how is that possible that a failed non relevant package update step can cause such situation, without any verification of the kernel related update steps before updating limine boot configuration, beside that it is not reverting back automatically this, if something goes wrong that prevents booting the OS in normal way. Moreover how can be a normal state if there are missing any kernel boot entries from boot menu which is not a snapshot… I assumed paru or pacman rerun can redo all of the failed and missed update steps (or all) to correct the failed update process at least and apply the modification on system (especially on critical areas of system) if only when all steps are successful especially related to kernels and boot entries.
I didn’t see any sign of lost kernels and/or its boot entries on the update process. Didn’t experience such case before.
If I didn’t have btrfs snapshots I had really no idea how I would correct this state and packages only with paru/pacman… Paru/Pacman update process just terminated on the failed upgrade of a non relevant package… as I saw.
It’s true that I don’t have deep knowledge in Arch either. Just using. I did not experience such case with other non-arch distros.

I dont have deep knowlege in arch and linux development, but why is that not a possible way for such cases if package updates not deletes kernels first and waiting for a much later step for new kernels, but first make the new kernels and do the boot manager update hooks only if that processes of updating and making new kernels are seems correct? It seems to me there are no any verification in kernel and boot manager entries updates process, that the new kernels processing are ok, befire it delete old kernels and its entries.
Moreover updating kernel and boot manager processes would be the last steps of the system upgrade or can be more fail proof at least in this way.

This is a limitation of pacman, as pacman’s update process is not atomic (all-or-nothing) updates.
There is no automatic rollback and no delayed cleanup of old kernel after an successful update on any Arch based system.

That is why you need a snapshot solution in Arch rolling release system.
Without a snapshot, you can lose a kernel if the upgrade fails midway, as expected. The issue has nothing to do with Limine configuration.


For safe upgrades of all packages including kernels, consider immutable systems with atomic updates like Fedora Silverblue, NixOS or similar. They never break your boot even if a system update fails.

Reinstall/update your kernel and ideally fix everything so that a pacman -Syu completes cleanly. You can do this in a chroot from an install cd if needed…this isn’t that difficult, even if it “shouldn’t be necessary”

But this is why I’d be reluctant to run or recommend arch without a snapshot solution in place.