Convert from EFI to BIOS boot mode

I figured out the exact way by myself. Rod Smith was right, it’s easier than I thought.

Here the solution if anybody else needs it:

Original Partition Layout:

  • /dev/sda1 (EFI Partition)
  • /dev/sda2 (Boot Partition)
  • /dev/sda3 (LVM2/LUKS encrypted Root & Swap)

Converting to BIOS boot:

  1. I deleted the EFI Partition and created a new partition with the bios_grub flag instead of it.
  2. Using this tutorial I mounted the encrypted file system, chrooted into it and installed GRUB.
  3. Remove the EFI Partition from /etc/fstab.

It's possible and it's easier than you think. Linux can boot fine from a GPT disk in BIOS mode, so there's no need to do the MBR-to-GPT conversion. With any luck, all you'll need to do is to install a BIOS-mode boot loader (GRUB, LILO, or SYSLINUX) to the disk. There are three caveats, though:

  • I've never used LUKS, so I'm not sure how this would affect things. I wouldn't expect any problems, but that might be my lack of experience talking.
  • Some EFIs have quirky requirements for booting in BIOS mode. Most commonly, some will only boot in BIOS mode if they see a boot/active flag on an MBR partition, and this is normally absent on GPT disks. You can work around this by using an old version of fdisk (one that lacks GPT support, which was added only very recently) to set the boot/active flag or by using a new version of parted to set a flag (whose name I don't recall offhand) on the whole disk. If you're lucky you won't need to deal with this issue. See this page for more on this problem.
  • If the computer is dual-booting with Windows, converting it to boot in BIOS mode is likely to be much trickier. In this case, it might be easier to install rEFInd as a boot manager. rEFInd can then boot Windows in EFI mode and boot the BIOS-mode GRUB (or whatever you end up using). To do so, though, you'll need to edit refind.conf: Uncomment the scanfor line and ensure that hdbios is among the items that are scanned.

Converting Ubuntu into Legacy mode

Note: Use this procedure only to convert an UEFI mode Ubuntu installation to boot in BIOS/CSM/legacy mode. Such a conversion may be necessary if some hardware doesn't work correctly under UEFI mode. (Graphics cards are a common source of problems.) Converting to boot in BIOS/CSM/legacy mode while Windows boots in UEFI mode can make the boot process more awkward -- you'll need to use the computer's built-in boot manager to switch between OSs, and some computer's have such poor boot managers that this may be impossible.

  • If Ubuntu is installed on a GPT disk (you can check it via the sudo parted -l command), use GParted partition editor to create a BIOS-Boot partition (1MB, unformatted filesystem, bios_grub flag) at the start of its disk.
  • Start Boot-Repair, and select Advanced options -> GRUB location tab.
  • Uncheck the Separate /boot/efi partition option

    Uncheck the Separate /boot/efi partition option

  • Click the Apply button in the lower right corner.

  • Set up your BIOS so that it boots the HDD in Legacy mode. Generally this setting is located in the Boot tab → Boot order section of the BIOS.

Source: revised from: UEFI - Community Help Wiki