YeeP wrote:In my search to find how this is all done properly, it seems that booting by disc or usb, with a UEFI firmware, can only be done with an EFI based bootable CD or usb. Is that correct?
Correct. Any firmware (BIOS, UEFI, CoreBoot, or others) requires follow-on software designed for it. To boot a BIOS-based computer, you need a boot loader designed for BIOS, for instance. There are implementations that can re-converge (for instance, running the same Linux kernel from any of multiple firmware types), and some firmware implementations support two or more boot methods (as in most modern PCs, that support both BIOS and UEFI-style booting), but as a first approximation, each firmware type implements a track that's independent of each other firmware type.
If so, where can some instructions (for the idiot) be found on how to set this up? I keep finding things like "use the blah_blah.efi file". Sounds good, except where does this file go on the live disc so the bootloader will find it?
For CDs, it's much harder than it should be, and I don't know of any good instructions for novices about how to create EFI-bootable CDs. The problem is that in their Infinite Wisdom, the EFI designers decided that optical discs would be bootable using a standard known as El Torito, which was designed as a workaround to enable BIOS-based computers to boot from CDs. Being a workaround for the primitive BIOS, El Torito is ugly and difficult to set up. The alternative would have been to require that EFI implementations include a driver for ISO-9660 (the standard CD-R filesystem) and/or UDF (the standard DVD filesystem), which would have made it quite simple to create a bootable optical disc. For whatever reason, they didn't do this, so you've got to create a FAT filesystem image with the boot files and stuff that onto the disc using El Torito. Linux tools to do this exist, but AFAIK the process requires using a loopback filesystem, using obscure options to mkisofs, and so on.
For USB flash drives, it's much simpler:
- Create a FAT partition on the disk. You may need to use GPT and set its type to that for an EFI System Partition (ESP). In Linux, this would be by setting a type code of EF00 in gdisk or by setting the "boot flag" in parted or GParted. (Some EFI implementations are more lax about this and will boot from MBR disks, though.)
- Store your boot loader as EFI/BOOT/bootx64.efi on the FAT filesystem you've just created. (Name it bootia32.efi if it's to be bootable on those rare 32-bit EFI systems, or bootia64.efi for Itanium.)
- Store any other files that the boot loader requires on the flash drive. This part varies greatly from one boot loader to another, though; you'll have to consult program-specific documentation for details.
I cover this in more detail in my EFI Boot Loaders for Linux
page. It's written with the assumption that you'll be setting up on a hard disk, but for the most part it all applies to USB flash drives and the like. The big difference is that USB flash drives use the "fallback" filename of EFI/BOOT/bootx64.efi rather than a custom name and NVRAM entry. My Web page describes using efibootmgr to enter NVRAM entries, so you could ignore that information when creating a bootable USB flash drive.
I know that with the "bios" (dont know what else to call it) set at UEFI, it wont even recognize any live CD (one that I have downloaded the iso and burned it to a disc).
"Firmware" is the correct generic term. Manufacturers are misapplying the word "BIOS" to UEFI firmware.
Getting firmware to boot in EFI mode can be a problem for several reasons:
- Some bootable media don't support EFI-mode booting.
- Some bootable media, although they nominally support EFI-mode booting, aren't set up quite properly, or are set up in a way that works with some firmware implementations but not with others. I suspect that this problem is exacerbated by the fact that so many Linux distributions try to create boot media that are bootable on anything -- BIOS, UEFI, or Apple's peculiar EFI variant. The result is something that's heavily contorted, which of course just opens the door to problems caused by quirky system-specific incompatibilities.
- The methods used to force a given system to boot in EFI mode vs. BIOS mode vary from one computer to another. Some make it almost impossible to control the matter. On such systems, you may need to remove the unwanted boot mode from your media.
- Users seldom understand the methods their computers use to select a boot mode.
- Manufacturers seldom document the methods their firmware uses to select a boot mode. Combine this with the last two items and you get a situation where even experts may be stymied for hours. See, for instance, this blog post by the creator of shim, Matthew Garrett.
- If/when you get the system to boot, the boot mode may not be obvious. This can lead people to install Linux in BIOS mode on a computer that's already booting Windows in EFI mode.
As you can see, many of these problems actually relate to the support for multiple boot modes in the firmware -- a feature that's designed to help out, but that can have the opposite effect!
One comment regarding Mint specifically: Although I have yet to do a Mint 14 installation, based on what I've heard, the Mint 14 installer seems to be more problematic than many with respect to its EFI boot capabilities. The first release was a total disaster in this respect, and an update a couple of weeks later, although supposed to be better, still generates a lot of problem reports on this forum.
When moging it to EFI - Legacy mode, it will recognize the disc, but will not boot in to w**dows. From everything I can find, if you install linux in that manner, you have created a big problem because you have two operating systems installed in two different manners.
Correct. If you've got one OS booting in BIOS mode and another booting in EFI mode, it's theoretically possible to switch boot modes at boot time; but most firmware implementations make this rather awkward to do in practice. At best, you typically have to press a function key (which varies from one machine to another) at boot time to get the computer's own boot manager and select either an EFI boot option (which may or may not be labelled with the OS's name) or a BIOS boot option (which is typically lablled with the model number of the hard disk on which it's installed).
Recent versions of rEFInd can help with this, because they can redirect the boot process from EFI mode to BIOS mode -- rEFInd boots in EFI mode and can present an option to boot BIOS-mode OSes. This support is limited, though, and it doesn't work correctly on all computers. I've also got some changes to the installation script in progress that will make it possible to install rEFInd from a BIOS-mode boot of Linux and give it a fighting chance of booting up in EFI mode and launching Linux in EFI mode. If you're interested, you can download the new install.sh from the git repository
to try it out. (If you read this much beyond January 3, 2013, though, those changes will be incorporated in the 0.6.3 and later releases of rEFInd.)
So, it sounds like step one is to get your live CD setup to boot from EFI. Correct?