Clover
Clover is a bootloader that supports booting UEFI. It is capable of emulating a UEFI bootloader if your BIOS is too old to support it in order to boot operating systems that require UEFI. It is also capable of booting from devices that your BIOS might not recognize such as NVMe drives by allowing you to chainload the boot process.
Project website: https://github.com/CloverHackyColor/CloverBootloader
Booting Linux from NVMe with Clover
My use case for Clover is to boot Linux from a NVMe drive on a BIOS that's too old to properly detect it. The BIOS can be set to boot from a USB device with Clover which can then chainload the boot process from the NVMe drive.
The example below is what I did to get Proxmox installed on a NVMe drive to boot from a Sandy Bridge system (circa 2012). There hasn't been a new ASUS BIOS update for many years and it lacks the ability to detect and boot from the NVMe drives directly. As a work around, these are the steps I took to get Proxmox booting:
- Install Clover on a USB drive using Rufus.
- Go into the
EFI/CLOVER
directory and edit theconfig.plist
file with the following:Adjust the volume ID with the ID of the partition containing grub. Ensure that the path exists on the partition.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Boot</key> <dict> <key>Timeout</key> <integer>5</integer> <key>DefaultVolume</key> <string>LastBootedVolume</string> </dict> <key>GUI</key> <dict> <key>Custom</key> <dict> <key>Entries</key> <array> <dict> <key>Path</key> <string>\EFI\BOOT\BOOTX64.EFI</string> <key>Title</key> <string>Proxmox</string> <key>Type</key> <string>Linux</string> <key>Volume</key> <string>964F18C8-9ADB-4DEB-AA70-75361FF39E4A</string> <key>VolumeType</key> <string>Internal</string> </dict> <dict> <key>Path</key> <string>\EFI\BOOT\BOOTX64.EFI</string> <key>Title</key> <string>Proxmox</string> <key>Type</key> <string>Linux</string> <key>Volume</key> <string>85C5849B-9824-4D3A-961C-2DD190CD8ADE</string> <key>VolumeType</key> <string>Internal</string> </dict> </array> </dict> </dict> </dict> </plist>
- For NVME devices, you'll have to also move/copy the
NvmExpressDxe.efi
driver from theEFI/CLOVER/drivers/off
toEFI/CLOVER/drivers/UEFI
directory - Reboot. Hit
F3
when you see the Clover boot menu and select the entry for Proxmox. Clover should be able to remember this and autoboot into Proxmox next time. - After the system boots, reboot once more and confirm that Clover can indeed autoboot by itself without intervention.
Troubleshooting
Clover doesn't autoboot
I wasted more time than I'd like to admit trying to figure out why I couldn't get Clover to autoboot. It turns out, I had the path to the EFI executable wrong. Doublecheck the path and volume IDs.
What I did wrong was misspelled the Grub EFI binary as 'grubx64.efi
' rather than 'bootx64.efi
' which was too easily overlooked as I tried troubleshooting the issue.