我有一台 ThinkPad 笔记本电脑,其 BIOS 仅启用 UEFI 模式(无旧版)。它同时安装了 Windows 和 Debian12 作为双启动选项 - 可以在启动时通过 Grub 进行选择。最近,我儿子决定使用这台笔记本电脑在外部 SSD 驱动器上安装 Debian。一切都很顺利,他能够在外部 SSD 驱动器上启动到新的 Debian,但是笔记本电脑上的 Grub 发生了某种改变,所以现在它直接启动到 Windows,而不提供启动菜单来选择操作系统(Debian 是默认操作系统启动)。
究竟发生了什么?我没有遵循这个过程,但奇怪的是 Debian 安装会在没有事先警告的情况下做出如此巨大的改变......
现在我该如何修复它才能恢复旧的 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
- 究竟发生了什么?
注释中的分析看起来是正确的:debian
中的现有条目与efibootmgr
系统上的任何 ESP 都不匹配,唯一匹配的Fedora
条目Boot0004
是指 上外部引导的 Fedora sda
。
外部驱动器上的安装必须覆盖原始debian
条目。
- 我现在该如何修复它[...]?
在外部启动的 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 引导变量,即至少Boot0002
和Boot0003
。您可以通过以下方式执行此操作efibootmgr
:
sudo efibootmgr -b 0002 -B
sudo efibootmgr -b 0003 -B
Boot0004
(为了避免不必要的不便,在确认系统现在可以正常引导至 Debian 之前,请勿删除该变量。该引导变量当前负责引导至外部 Fedora 安装。)