How To Install convert MBR Legacy booting GRUB to EFI from a non-EFI Linux Environment Ubuntu Mint Debian


1.) Create your EFI/ESP Partition

If you happen to have some free space on the drive already then this is easy, just create a new partition of at least 100M.

The nice thing about the EFI spec is that it must just be in the first 2.2TB of space so for most users, it means you can simply resize the last partition (downsize it by 100M) and then add an EFI partition at the end.

For example if you had this partition scheme:

/dev/sda1 = /

/dev/sda2 = swap

You could just downsize your swap partition or whatever the last partition is and then create a new partitiion as EFI/FAT32 at the end.  UEFI will still find and boot it even if it is not the first partition.

You could use gparted to achieve the above or from any other LiveCD like Ubuntu/Mint you could boot and manipulate the partition table as you need.

Format your EFI/ESP partition

Replace the xx with your info eg. if you had /dev/sda3 as your EFI partition then use mkfs.vfat /dev/sda3

mkfs.vfat /dev/sdxx

2.) chroot into your target root partition

How to properly chroot

3.) Install grub-efi first otherwise the target x86_64-efi won't exist and you won't be able to install the EFI boot loader.

apt install grub-efi

4.) Mount your ESP in /boot/efi

Remember the EFI boot loader calls for a partition type of vfat/fat32 and it can be at any location (eg. I have booted from ESP as partition#3).

mkdir -p /boot/efi

mount /dev/sda1 /boot/efi

5.) Install GRUB EFI like this:

Note that some platforms/devices/computers/laptops/servers will not boot if you don't use the --bootloader-id option and if you don't use the --no-uefi-secure-boot

Change /dev/sdx to your drive

If you are using secureboot do this:

grub-install --target=x86_64-efi /dev/sdx
Installing for x86_64-efi platform.
grub-install: warning: EFI variables are not supported on this system..
Installation finished. No error reported.

If you are not using secureboot do this:

grub-install --target=x86_64-efi /dev/sdx --no-uefi-secure-boot  --bootloader-id realtechtalk

Errors GRUB EFI won't boot or show at all or disappears from efibootmgr

The whole issue is that the grub efi binaries are hard coded to find the files in /EFI/debian for Debian for example or for Ubuntu it is /EFI/ubuntu.  If you use any bootloader-id other than those things won't work unless they exist.

To have a custom bootloader-id you need the hardcoded/default -bootloader-id in EFI/ and then you can install your customer one.  In essence --bootloader-id is broken as users have complained of for years.

This is usually caused by the issues mentioned in #4, especially installing without --bootloader-id  a lot of implementations of EFI will not boot if you don't set the --bootloader-id.

If you use a bootloader-id other than the default for the grub built for your OS eg. debian, ubuntu it will probably not work unless you use --no-uefi-secure-boot



GRUB Menu Won't Show or the EFI Computer says "No bootable disk/device"

If you have EFI/debian or EFI/ubuntu etc.. on your ESP/EFI partition and you are getting this message, it probably means your BIOS is bad/buggy.  Some EFI computers will only boot from a file called EFI/boot/bootx64.efi

You can see reports of even Asus computers and chipsets based on Z87 having this issue. 

How do you fix the problem?

Create EFI/boot on your ESP/EFI partition.

Then copy grubx64.efi from EFI/debian or EFI/ubuntu (whatever dir your EFI bootloader was installed to) to EFI/boot

Still keep your debian/ubuntu or whatever bootloader dirname you have in EFI.  Now your BIOS should pickup the file and then boot from the files it refers to in EFI/debian or EFI/ubuntu and work normally.

This is a bug as some old EFI implemenations will only boot from EFI/boot/bootx64.efi which is why a lot of OS's/distros like Ubuntu and even Microsoft Windows keep this structure.


Do you need a GPT partition table / does EFI support MBR partitions?

Yes, in my experience using an MBR partition is not an issue at all.


install, grub, efi, linux, ubuntu, mint, debian, _, loader, apt, chroot, partition, mount, esp, vfat, eg, booted, mkdir, dev, sda, sdx, installing, platform, variables, supported, installation, reported,

Latest Articles

  • vi cannot copy and paste automatic visual mode solution
  • python3 error Ubuntu Linux error solution SyntaxError: invalid syntax line 12 pip{sys.version_info.major}
  • Could not read response to hello message from hook [ ! -f /usr/bin/snap ] || /usr/bin/snap advise-snap --from-apt 2>/dev/null || true: Connection reset by peer
  • -bash: expr: command not found Linux Debian Mint Ubuntu
  • How to remove metadata from pdf on Linux Ubuntu
  • How to install and configure haproxy on Linux Ubuntu Debian
  • Linux Ubuntu Mint Gnome keyboard Typing not working in certain application or window solution
  • talib/_ta_lib.c:747:10: fatal error: ta-lib/ta_defs.h: No such file or directory
  • How to install Windows or other OS and then bring to another computer by using a physical drive and Virtual Machine with QEMU
  • PXE-E23 Error BOOTx64.EFI GRUB booting is 0 bytes tftp pxe dhcp solution NBP filesize is 0 Bytes
  • vagrant install on Debian Mint Ubuntu Linux RHEL Quick Setup Guide Tutorial
  • RHEL 8 CentOS 8, Alma Linux 8, Rocky Linux 8 System Not Booting with RAID or on other servers/computers Solution for dracut and initramfs missing kernel modules
  • How to Upgrade to Debian 11 from Version 8,9,10
  • Ubuntu Linux Mint Debian Redhat Cannot View Files on Android iPhone USB File Transfer Not Working Solution
  • Virtualbox Best Networking Mode In Lab/Work Environment without using NAT Network or Bridged
  • debootstrap how to install Ubuntu, Mint, Debian install
  • Linux grub not using UUID for the root device instead it uses /dev/sda1 or other device name solution
  • How To Restore Partition Table on Running Linux Mint Ubuntu Debian Machine
  • Debian Ubuntu apt install stop daemon questions/accept the default action without prompting
  • iptables NAT how to enable PPTP in newer Debian/Ubuntu/Mint Kernels Linux