0

I have a dual-boot setup with two separate SSDs:

  • Debian 13 is installed on an NVMe drive (nvme0n1)

  • Debian 12 is installed on a SATA SSD (sda / sdb, depending on which system is booted)

Each Debian installation has its own EFI partition.

lsblk outputs On Debian 12:

sda 8:0 0 223.6G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 222.1G 0 part / └─sda3 8:3 0 976M 0 part [SWAP] nvme0n1 259:0 0 476.9G 0 disk ├─nvme0n1p1 259:1 0 356.9G 0 part /media/ismail/SSDWorking ├─nvme0n1p2 259:2 0 976M 0 part ├─nvme0n1p3 259:3 0 112.9G 0 part └─nvme0n1p4 259:4 0 6.2G 0 part 

lsblk outputs On Debian 13:

nvme0n1 259:0 0 476.9G 0 disk ├─nvme0n1p1 259:1 0 356.9G 0 part /media/ismail/SSDWorking ├─nvme0n1p2 259:2 0 976M 0 part /boot/efi ├─nvme0n1p3 259:3 0 112.9G 0 part / └─nvme0n1p4 259:4 0 6.2G 0 part [SWAP] sdb 8:16 0 223.6G 0 disk ├─sdb1 8:17 0 512M 0 part ├─sdb2 8:18 0 222.1G 0 part └─sdb3 8:19 0 976M 0 part 

The Problem

After installing Debian 12, GRUB automatically detected Debian 13. However, I noticed a repeating issue:

  • Booting Debian 12 works fine.

  • The first attempt to boot Debian 13 after that fails with: error: file /boot/vmlinuz-linux not found...Press any key to continue ...

  • If I try again (select Debian 13 again from GRUB), it boots normally.

  • This repeats every time: after logging into Debian 12, the next boot of Debian 13 fails once, then works on retry.

Notes

  • On Debian 13, the NVMe is /dev/nvme0n1 and the SATA SSD (Debian 12) is /dev/sdb.

  • On Debian 12, the NVMe is still /dev/nvme0n1, but the SATA SSD (Debian 12) is /dev/sda.

  • So, the drive name of Debian 12’s disk changes between systems (/dev/sda ↔ /dev/sdb).

  • Both systems have their own EFI partitions and GRUB installations.

Question

  • Why does Debian 13 fail to find /boot/vmlinuz-linux the first time after booting Debian 12?

  • Is GRUB confusing device names (sda vs sdb) between the two installations?

  • What’s the proper way to fix this — reinstall GRUB on Debian 13, regenerate its entries using UUIDs, or set one as the primary bootloader?

1
  • Usually, you have only 1 EFI volume per computer system. If you have more than 1 EFI volume, it's your job to make sure it works. So I recommend to configure both OS to use the same EFI volume. You can then copy the primary EFI volume to the secondary EFI volume and use the secondary as some kind of backup EFI. You should not mount the secondary EFI, unless you know what you are doing. Commented Oct 27 at 10:54

2 Answers 2

2

When you boot from Debian 12, GRUB incorrectly remembers the device labels sda/sdb. On the first attempt to start Debian 13, GRUB therefore looks for the kernel file on the wrong drive. On the second attempt, GRUB recognizes the correct drive and finds the kernel.

I would recommend using UUIDs instead of device labels in Debian 13's GRUB configuration, as UUIDs never change.

Optionally, you can also set one bootloader as the primary entry in the UEFI, for example Debian 13, to avoid further conflicts.

0

In my case, the issue was caused by GRUB being installed on the SATA SSD, whose device name changes between systems (/dev/sda - /dev/sdb).

This confused GRUB when switching between Debian 12 and Debian 13, causing it to fail to locate /boot/vmlinuz-linux on the first attempt.

The fix was to move the GRUB bootloader to the NVMe drive, since its device path (/dev/nvme0n1) stays consistent across both systems.

Here’s what worked for me (run these commands from Debian 13):

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian13 sudo os-prober sudo update-grub 

After doing this, Debian 12 / Debian 13 boots normally every time — no more first-boot failure.

In short: install GRUB on the drive whose name doesn’t change (the NVMe), so GRUB always points to the correct partitions.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.