![efibootmgr - 将 Win10 从一个驱动器移动到另一个驱动器,并使用不同驱动器上的 EFI](https://linux22.com/image/1178304/efibootmgr%20-%20%E5%B0%86%20Win10%20%E4%BB%8E%E4%B8%80%E4%B8%AA%E9%A9%B1%E5%8A%A8%E5%99%A8%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E9%A9%B1%E5%8A%A8%E5%99%A8%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E7%9A%84%20EFI.png)
我在一个驱动器(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 和其他解决方法:
您必须使用 /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 条目。