I had issues with my Dell Optiplex 3050 micro PC not booting via UEFI into Batocera Linux. When trying to boot, I was stuck on a black screen with the message “Booting Batocera.linux” but the system wouldn’t continue to boot.
If I switched the Dell Optiplex BIOS to use “Legacy” boot then it worked, but then the PC wouldn’t recognise other OS installations if I swapped out Batocera, and I didn’t want to have to keep fiddling with the BIOS settings turning Legacy mode on and off.
After reading this page, here is what I did to add an EFI boot manager entry to the Optiplex NVRAM:
First, boot up into a different Linux distro on the same Dell machine. I booted Linux Mint via the internal SATA connection, then connected my Batocera SSD via a USB adapter. Doing the opposite (booting from a Linux distro on a USB flash drive and leaving Batocera connected via SATA) should work too.
Run the following command:
sudo efibootmgr -c -d /dev/sdb -p 1 -L "Batocera" -l '\EFI\BOOT\bootx64.efi'
Here are what the options mean:
-c - Create new variable bootnum and add to bootorder
-d DISK - The disk containing the loader
-p PART - Partition number containing the bootloader
-L LABEL - Boot manager display label
-l NAME - Specify a loader
Note that “/dev/sdb” in the command above is where the Batocera installation is currently located, which isn’t necessarily the same place it will be when booting from it.
Whilst I was there, I also used Gparted to increase the size of the “userdata” partition to use a small amount of unallocated space at the end of the SSD.
You should now be able to boot via UEFI, rather than having to use Legacy mode. Hopefully this helps someone!