I'm running Ubuntu 20.04 on one drive (m.2) and Win10 on another (3.5" SSD). I recently added another m.2 drive to my system and cloned my Win10 system onto it. So here's what my drives look like now, where sda1 and nvme1n1p1 are clones:
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]
I'd like to get rid of /dev/sda now.
I believe that what I need to do next is use efibootmgr to modify my bootable drives. Right now my EFI files live on the nvme0n1 drive that houses Ubuntu. Here's the output of efibootmgr:
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)
I've tried using efibootmgr to create a new bootable entry, but what I can't figure out how to do is specify that, although the EFI image lives on "nvme0", I need it to boot onto "nvme1". I see this being done with /dev/sda with this "bcdobject=([uuid])" but I can't find any information out there about how this is done.
That is, of course, assuming I'm on the right track!
Once that's done I'm assuming os-probe will pick up the new drive and I can integrate it with grub-mkconfig.
Thanks for any help!
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi" -d /dev/nvme1n1 -p 1
– oldfred Nov 25 '20 at 17:32efibootmgr -v
still shows my original "Windows Boot Manager", but also has the new one.os-prober
does not find the new drive (only nvme0), but when I boot into grub and select my old Windows option, it boots to the new drive just fine. I feel like I'm missing something, but I'm glad to have it working! – Chris C Nov 25 '20 at 18:59sudo efibootmgr -v
with partUUID from this for ESP:lsblk -o name,mountpoint,label,size,fstype,uuid,partuuid | egrep -v "^loop"
They need to match as that is how UEFI finds correct FAT32 partition. – oldfred Nov 25 '20 at 19:16lsblk
output and myefibootmgr -v
output for the entry I added, but I can't boot the drive through UEFI in my BIOS. There is no UEFI entry for the drive in my BIOS, and booting in legacy mode results in an unbootable disk error. Here's what I have in myefibootmgr
:Boot0003* Windows Boot Manager HD(1,GPT,[partUUID[)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)
– Chris C Nov 25 '20 at 21:59os-prober
uses the UUID to identify a drive, and so it doesn't really care that the device has changed. If you'd like to submit an answer instead of a comment I'd be happy to mark it solved at this point, you've been very helpful! – Chris C Nov 26 '20 at 01:03