Old SSD unable to boot after using new SSD

I just bought a new larger nvme SSD for my laptop, so I removed my old drive, installed the new drive, and installed linux on that new drive to test it out. I was able to boot with the new drive and use the OS just fine. I then removed the new drive and installed the old drive back inside the laptop.

After installing the old drive inside the laptop, the BIOS is telling me that there is no bootable media installed on my device with the old (previously working) SSD installed. When I insert a bootable USB linux drive into my laptop, the BIOS recognizes the USB device and boots the USB media just fine. I’m then able to use that live boot media to see my old drive in the system, list the partitions on that drive and mount the drive within the live USB environment and see that the files are still on the disk and that the old drive is working, or at least readable.

When I boot into the Framework BIOS, the nvme device appears in the Attached Device List but does not appear in the EFI Boot Order list.

I have Secure Boot disabled on my device and have never used Secure Boot on this system before.

Why doesn’t my laptop want to boot my (previously working with this laptop) nvme drive now?

Figured out my own problem. I installed a different bootloader on my new drive, and it seems to have written some settings about available devices to the UEFI firmware which prevented my old drive from working.

For anyone stumbling upon this in the future, the easiest solution is probably to just fully reset the mainboard state so any EFI Vars are cleared out.

In my case, I booted into a live install USB media (Arch install ISO) and used the efibootmgr command to manually create a boot entry, then set it as the next boot device. This should work on any USB boot media that has efibootmgr installed (i.e. probably most linux distros).

efibootmgr --create --disk /dev/nvme0n1p1 --part 1 --loader '\EFI\GRUB\grubx64.efi' --label GRUB --unicode
efibootmgr --bootnext 0001

Note that the --loader param intentionally uses backslashes. The number used in the --bootnext argument will vary depending on the output from the --create command.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.