使用 UEFI 的 Grub:在外部 SSD 上再次安装后本地 Debian 无法启动

使用 UEFI 的 Grub:在外部 SSD 上再次安装后本地 Debian 无法启动

我有一台 ThinkPad 笔记本电脑,其 BIOS 仅启用 UEFI 模式(无旧版)。它同时安装了 Windows 和 Debian12 作为双启动选项 - 可以在启动时通过 Grub 进行选择。最近,我儿子决定使用这台笔记本电脑在外部 SSD 驱动器上安装 Debian。一切都很顺利,他能够在外部 SSD 驱动器上启动到新的 Debian,但是笔记本电脑上的 Grub 发生了某种改变,所以现在它直接启动到 Windows,而不提供启动菜单来选择操作系统(Debian 是默认操作系统启动)。

  1. 究竟发生了什么?我没有遵循这个过程,但奇怪的是 Debian 安装会在没有事先警告的情况下做出如此巨大的改变......

  2. 现在我该如何修复它才能恢复旧的 Grub 启动菜单?

一些相关输出(获得外部引导的 Fedora):

sudo lsblk -f -o +PARTUUID
NAME        FSTYPE FSVER LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
                                                                                              PARTUUID
sda                                                                                           
├─sda1      vfat   FAT32        B7E4-5065                             581.4M     3% /boot/efi f53afd02-d970-4764-a560-93dab8cf172d
├─sda2      ext4   1.0          83c95001-37bc-47f8-b1ed-f9795ad1e50e  659.9M    25% /boot     0055d417-41d1-4d56-a442-7f8bfc092912
└─sda3      btrfs        fedora 80b304cc-ed4e-4024-8953-7e622aa49c31  445.9G     4% /home     ea394dcd-f563-4016-b058-5303e6ba94e5
                                                                                    /         
sdb                                                                                           
zram0                                                                               [SWAP]    
nvme0n1                                                                                       
├─nvme0n1p1 vfat   FAT32        7892-C839                                                     9860d2db-9326-4a98-bfc8-e4ec84887136
├─nvme0n1p2                                                                                   c69f083e-f0c0-4ceb-843e-4016ccab4515
├─nvme0n1p3 ntfs                20CA9615CA95E776                                              222a0d1e-ca4f-4f84-a142-53c072758867
├─nvme0n1p4 ntfs                5CFEA3A4FEA374C4                                              b568758e-1d6c-4208-ae8d-0e62b30045a4
├─nvme0n1p5 ext4   1.0          dcb0d97a-513a-427c-be6c-618cd5dcf1d2                          1a8a88f2-3a34-4449-8528-fee23e43cb2e
└─nvme0n1p6 swap   1            c4acdea6-8ae5-453f-af91-58f75a5c6e7c                          7b3cf8d9-e418-4350-8e20-beb9f65cbf2e

和:

sudo efibootmgr
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0001,0003,0002,001C,0010,0011,0012,0013,0017,0018,001A,0000,0019,001B,001D,001E,001F,0024
Boot0000* Windows Boot Manager  HD(1,GPT,9860d2db-9326-4a98-bfc8-e4ec84887136,0x800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d00000061000100000010000000040000007fff0400
Boot0001* debian    HD(1,GPT,e0c16116-3b12-42eb-b28f-6f2b50950004,0x800,0x100000)/File(\EFI\debian\shimx64.efi)
Boot0002* Fedora    HD(1,GPT,7f992509-1fa6-4ca8-b42f-99492160a566,0x800,0x12c000)/File(\EFI\fedora\shimx64.efi)
Boot0003* Fedora    HD(1,GPT,01540828-ce9e-4881-897b-751b02b41f92,0x800,0x12c000)/File(\EFI\fedora\shimx64.efi)
Boot0004* Fedora    HD(1,GPT,f53afd02-d970-4764-a560-93dab8cf172d,0x800,0x12c000)/File(\EFI\fedora\shimx64.efi)
Boot0010  Setup FvFile(721c8b66-426c-4e86-8e99-3457c46ab0b9)
Boot0011  Boot Menu FvFile(126a762d-5758-4fca-8531-201a7f57f850)
Boot0012  Diagnostic Splash Screen  FvFile(a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380)
Boot0013  Lenovo Diagnostics    FvFile(3f7e615b-0d45-4f80-88dc-26b234958560)
Boot0014  Startup Interrupt Menu    FvFile(f46ee6f4-4785-43a3-923d-7f786c3c8479)
Boot0015  Rescue and Recovery   FvFile(665d3f60-ad3e-4cad-8e26-db46eee9f1b5)
Boot0016  MEBx Hot Key  FvFile(ac6fd56a-3d41-4efd-a1b9-870293811a28)
Boot0017* USB CD    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,86701296aa5a7848b66cd49dd3ba6a55)
Boot0018* USB FDD   VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,6ff015a28830b543a8b8641009461e49)
Boot0019* NVMe1 VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,001c199932d94c4eae9aa0b6e98eb8a401)
Boot001A* NVMe0 VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,001c199932d94c4eae9aa0b6e98eb8a400)
Boot001B* ATA HDD0  VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f602)
Boot001C* USB HDD   VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,33e821aaaf33bc4789bd419f88c50803)
Boot001D* PCI LAN   VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,78a84aaf2b2afc4ea79cf5cc8f3d3803)
Boot001E  Other CD  VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,aea2090adfde214e8b3a5e471856a35406)
Boot001F  Other HDD VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f606)
Boot0020* USBR BOOT CDROM   PciRoot(0x0)/Pci(0x14,0x0)/USB(11,1)
Boot0021* USBR BOOT Floppy  PciRoot(0x0)/Pci(0x14,0x0)/USB(11,0)
Boot0022* ATA HDD   VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f6)
Boot0023* ATAPI CD  VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,aea2090adfde214e8b3a5e471856a354)
Boot0024* PCI LAN   VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,78a84aaf2b2afc4ea79cf5cc8f3d3803)

答案1

  1. 究竟发生了什么?

注释中的分析看起来是正确的:debian中的现有条目与efibootmgr系统上的任何 ESP 都不匹配,唯一匹配的Fedora条目Boot0004是指 上外部引导的 Fedora sda

外部驱动器上的安装必须覆盖原始debian条目。

  1. 我现在该如何修复它[...]?

在外部启动的 Fedora 上运行时,您首先需要将 Debian 使用的文件系统挂载到 Debian 安装中:

sudo mount /dev/nvme0n1p5 /mnt           # root filesystem
# if you had a separate /boot for Debian, it would be mounted to /mnt/boot here
sudo mount /dev/nvme0n1p1 /mnt/boot/efi  # EFI System Partition
sudo mount -t proc none /mnt/proc        # /proc virtual filesystem
sudo mount --rbind /dev /mnt/dev         # /dev and /dev/pts
sudo mount --rbind /sys /mnt/sys         # /sys and /sys/firmware/efi/efivars
sudo chroot /mnt /bin/bash               # chroot into Debian

现在,您将以 root 用户身份访问 Debian 安装,并使用与 Debian 实际运行时完全相同的文件系统“视图”。立即修复引导加载程序可能出现的所有问题的最简单方法是运行grub-install

grub-install /dev/nvme0n1

这将自动确保中的 等shimx64.efi正确,并且还会自动为其重建 UEFI NVRAM 引导变量。grubx64.efi/boot/efi/EFI/debian

之后,您可以退出 chroot 并撤消为达到这一点而必须做的所有准备工作:

exit
sudo umount /mnt/sys
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/boot/efi
sudo umount /mnt

...然后重新启动。您可能需要访问 BIOS 设置以确保debian启动条目具有最高优先级,但在此之后您的系统应该可以毫无问题地再次启动到 Debian。

或者,您可能希望清除涉及系统中不可访问磁盘的 UEFI NVRAM 引导变量,即至少Boot0002Boot0003。您可以通过以下方式执行此操作efibootmgr

sudo efibootmgr -b 0002 -B
sudo efibootmgr -b 0003 -B

Boot0004(为了避免不必要的不​​便,在确认系统现在可以正常引导至 Debian 之前,请勿删除该变量。该引导变量当前负责引导至外部 Fedora 安装。)

相关内容