Bug#1138211: grub-pc: package upgrades leave on-disk core.img out of sync with /boot/grub/, causing stale kernel selection at boot
Pascal Hambourg
pascal at plouf.fr.eu.org
Fri May 29 19:41:32 BST 2026
On 29/05/2026 at 14:09, Bastian Venthur wrote:
>
> After several grub-pc and kernel package upgrades on a Debian 13 (trixie)
> system, the GRUB stages embedded on disk (MBR boot.img + core.img in the
> post-MBR gap) drifted out of sync with the modules under /boot/grub/i386-pc/ and
> the regenerated /boot/grub/grub.cfg. The visible symptom was that GRUB
> consistently booted an older installed kernel (6.12.48) instead of the current
> default (6.12.90), across multiple reboots, despite /boot/grub/grub.cfg
> correctly listing 6.12.90 as the default entry.
This cannot be caused by a module version mismatch. A module version
mismatch would cause GRUB to enter rescue mode (more exactly to remain
in rescue mode and not enter normal mode).
> Steps to reproduce:
>
> 1. Install Debian on a BIOS/MBR system (in my case via Hetzner installimage,
> which runs grub-install once at provisioning).
What is Hetzner installimage ? What is provisioning ?
> 2. Over time, allow normal apt upgrade runs to upgrade grub-pc, grub-common,
> grub-pc-bin, and install new kernels. update-grub runs as part of these
> upgrades; grub-install does not.
grub-install runs on grub-pc upgrade.
> 3. Reboot. GRUB picks an older kernel than the one listed as default in
> /boot/grub/grub.cfg.
Is it only the default kernel which is older or is the current kernel
missing from the "Advanced options" submenu (in other words, the menu is
outdated) ?
> Re-running grub-install /dev/sda followed by update-grub resyncs the on-disk
> core.img with the current modules and config. After this, reboots correctly
> select the newest kernel and grubenv writes work again.
Running update-grub only generates a fresh /boot/grub/grub.cfg, has
nothing to do with the core image and should not be necessary here.
> *********************** BEGIN /dev/disk/by-id
(...)
> lrwxrwxrwx 1 root root 9 May 29 12:52 scsi-0QEMU_QEMU_HARDDISK_38212 -> ../../sda
> lrwxrwxrwx 1 root root 10 May 29 12:52 scsi-0QEMU_QEMU_HARDDISK_38212-part1 -> ../../sda1
(...)
> *********************** END /dev/disk/by-id
> -- debconf information:
(...)
> * grub-pc/install_devices: /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_38212-part1
debconf tells grub-pc to run grub-install on /dev/sda1 on upgrade. If
running grub-install on /dev/sda fixes the issue, it means that grub-pc
was configured to install GRUB into the wrong location, so the location
from where GRUB boots is not updated.
More information about the Pkg-grub-devel
mailing list