Ubuntu – How to make live DVD EFI bootable

12.10dual-bootinstallationuefiwindows 8

Equipment: Pre-loaded Windows 8 Laptop, needs multi-boot capability (Win8 + Linux and BSD)
Lots of USB 3.0 sticks and blank DVD-Rs.
Various ISO's, including Ubuntu Secure-remix 12.10

Problem: After burning aforementioned Ubuntu iso to DVD (or USB), the live disc does not boot in EFI mode. Booting into Legacy mode installs for legacy mode. This makes Windows not work without switching back and forth.

Requirements: A pre-loaded windows 8 machine that can boot a liveDVD in EFI mode, install Ubuntu 12.10 64-bit in EFI mode, and finish with a multi-boot capable machine.

What is done already: ISO's downloaded. Partition shrunk, leaving lots of room to play with, Ubuntu installed in legacy mode. Windows and Ubuntu work but have to switch EFI depending upon which is being used.

What isn't done: Anything with GRUB.

Best Answer

It sounds like you've already installed Ubuntu in BIOS mode. If I'm mistaken, you can either do so or try my first suggestion and/or a rEFInd installation to boot the installer in EFI mode to do the installation directly in that way.

First, try disabling Secure Boot and booting the Ubuntu installer in EFI mode. Secure Boot support is brand-new in Ubuntu 12.10, and it may yet be buggy, so eliminating Secure Boot as a possible troublemaker is worth trying.

If that works, you can boot the Ubuntu disc into live CD mode and use it to install the EFI boot loader of your choice. Ubuntu 12.10 uses GRUB 2, but several others are available, and you may prefer one of them. You could try something similar with the System Rescue CD, which supports an EFI-mode boot.

If you can't seem to get Ubuntu or System Rescue CD booted in this way, try installing my rEFInd boot manager from within Windows. (You'll need to either disable Secure Boot or jump through some extra hoops to get it working, though.) A basic installation with no extra changes will present a menu with Windows and nothing else; but you can enable a boot to Ubuntu in either of two ways:

  • You can edit the refind.conf file, uncomment the scanfor line, and add hdbios to the list of options. This will enable scanning for, and booting to, BIOS-based OSes, such as your Ubuntu installation. This option works with many, but not all, UEFI-based PCs.
  • You can install the ext4fs driver that comes with rEFInd 0.6.0. This will enable rEFInd to search for Linux kernels and launch them from your regular installation. You'll also need to create a refind_linux.conf file and put it in your Linux /boot directory, though; without it, the kernel will launch but it won't be able to find your root filesystem. You could do a one-time boot by selecting the Linux icon, hitting the Insert key a couple of times to bring up the editor, and adding ro root=/dev/sda3 (or whatever the Linux root partition's identifier is) to the boot options. Once Linux is up, running the mkrlconf.sh script that comes with rEFInd should generate a suitable configuration file to obviate the need for manually entering this option.

The last I heard, none of the BSDs had a working EFI-mode boot loader. If I'm misinformed or if this has changed recently, you should be able to install BSD and select it with rEFInd. If the BSDs are still behind the EFI times, though, you'll need to use either your firmware's selection tool or rEFInd to switch between Windows and BSD; AFAIK, no other boot program can switch BIOS/EFI boot modes on UEFI-based PCs. (rEFIt can do this on Macs, though.)