efibootmgr - 将 Win10 从一个驱动器移动到另一个驱动器,并使用不同驱动器上的 EFI

efibootmgr - 将 Win10 从一个驱动器移动到另一个驱动器,并使用不同驱动器上的 EFI

我在一个驱动器(m.2)上运行 Ubuntu 20.04,在另一个驱动器(3.5 英寸 SSD)上运行 Win10。我最近在系统中添加了另一个 m.2 驱动器,并将我的 Win10 系统克隆到它上面。所以这就是我的驱动器现在的样子,其中 sda1 和 nvme1n1p1 是克隆的:

root@cantankerous:~# lsblk -f

NAME                 FSTYPE      LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINT
sda                                                                                          
└─sda1               ntfs              9638B89D38B87E35                                      
nvme1n1                                                                                      
└─nvme1n1p1          ntfs              9638B89D38B87E35                                      
nvme0n1                                                                                      
├─nvme0n1p1          vfat              23FD-2B75                               478.1M     6% /boot/efi
└─nvme0n1p2          LVM2_member       cKt344-wOPa-y34D-j0Wg-y3wq-ZlFz-fIGpnr                
  ├─vgkubuntu-root   ext4              27945eb2-45c3-48da-b887-6391111416e3    328.4G    23% /
  └─vgkubuntu-swap_1 swap              9bdb7f2f-ac7b-4322-ae8e-38c870a190cc                  [SWAP]

我现在想摆脱 /dev/sda。

我认为我接下来需要做的是使用启动管理器修改我的可启动驱动器。目前我的 EFI 文件位于 Ubuntu 所在的 nvme0n1 驱动器上。以下是启动管理器

root@cantankerous:~# efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0002,0008,0001
Boot0000* ubuntu        HD(1,GPT,9ab61c6d-62f6-474f-99c4-64eae4e5b595,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0001* Windows Boot Manager  HD(1,GPT,9ab61c6d-62f6-474f-99c4-64eae4e5b595,0x800,0x100000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0002* Hard Drive    BBS(HD,,0x0)..GO..NO........q.S.a.m.s.u.n.g. .S.S.D. .9.7.0. .E.V.O. .5.0.0.G.B....................A...........................%8Z.........4..Gd-.;.A..MQ..L.S.4.6.6.N.X.0.K.A.6.2.1.5.9.H........BO..NO........u.S.H.G.P.3.1.-.5.0.0.G.M.-.2....................A.......................................8..Gd-.;.A..MQ..L.C.S.0.9.N.5.2.4.9.1.0.2.0.9.G.3.K........BO..NO........u.S.a.m.s.u.n.g. .S.S.D. .8.5.0. .E.V.O. .2.5.0.G.B....................A.................................>..Gd-.;.A..MQ..L.2.S.5.R.X.N.H.A.0.3.4.9.1.2. .Z. . . . ........BO
Boot0008* Windows m.2   HD(1,GPT,2aba441a-2647-48c4-868c-b4ca31d4f5a3,0x800,0x3a385800)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)

我试过使用启动管理器创建一个新的可启动项,但我不知道该怎么做,尽管 EFI 映像位于“nvme0”,但我需要它启动到“nvme1”。我看到这是通过 /dev/sda 用这个“bcdobject=([uuid])”完成的,但我找不到任何关于如何完成的信息。

当然,这是假设我走在正确的轨道上!

一旦完成,我假设操作系统探测将获得新的驱动器,我可以将其与grub-mkconfig

谢谢你的帮助!

答案1

efibootmgr 使用的 UUID 或 GUID/partUUID 不能重复。

在尝试任何更新之前,请断开 sda 的连接,以避免混淆哪个设备是哪个设备。一些 efibootmgr 条目示例:Sony、HP 和其他解决方法:

双启动 Win 8 / Ubuntu 仅加载 Win

您必须使用 /dev/nvme 和正确的驱动器、分区。类似这样,但检查驱动器/分区是否正确,比较 UEFI 启动项中的 GUID 和 lsblk 中的 partUUID。这将告诉您使用哪个 ESP 进行启动。

sudo efibootmgr -v
lsblk -o name,mountpoint,label,size,fstype,uuid,partuuid | egrep -v "^loop"

sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi" -d /dev/nvme1n1 -p 1 

Grub 仅启动可运行的 Windows。Windows 将重新启用快速启动,然后 grub 将无法启动它,因此最好修复 UEFI 启动项以直接启动 Windows。

Grub2 的 os-prober 在 ESP 中查找 .efi 启动文件以查找其他要启动的安装。它不使用 UEFI 条目。

相关内容