I’m trying to build a custom grub menu for an UEFI Windows/Linux multiboot setup. I’ve successfully tested the menu via a USB drive, containing:
/EFI/boot/BOOTX64.EFI
/grub/grub.cfg
/grub/x86_64-efi/*
…etc.
When booting from this drive, I can access the menu without issue. Next, I transfer grub to my PC's EFI system partition:
/boot/grub/bootx64.efi
/boot/grub/grub.cfg
/boot/grub/x86_64-efi/*
…etc.
Also on that partition is Windows’ bootloader, in /EFI/Microsoft/boot
.
Finally, I use the Windows utility BOOTICE (or just the system BIOS) to add an entry for \boot\grub\bootx64.efi
. I reboot, and up comes grub.
...Except rather than bringing up the menu, I end up at a rescue prompt. My assumption was that I'd simply put grub.cfg & the modules in the wrong place – however, what’s really strange is that ls
shows no partitions – just (hd0) (hd1)
. My expectation was for something like (hd0) (hd0,msdos1)
, etc – but grub rescue can’t seem to ls
any partitions at all. ls (hd0)
and ls (hd1)
both yield “Filesystem is unknown.”
My system contains a single physical disk, with partitions:
1 = EFI system partition (fat32)
2 = Veracrypted partition (with Windows installation)
3 = Veracrypted partition (data)
4 = Linux swap
5 = Linux root
6 = Linux home
Why would grub be able to startup from the EFI system partition - but then not be able to see that partition, or any other? And more importantly, how can I get its menu working from the internal drive like it did from USB?