Ubuntu – GPT partition scheme for UEFI from BIOS based system

dual-bootgptgrub-efipartitioninguefi

(Within the context of generating live CD/USB rescue disks.)

From a BIOS based system, is there something like rufus which will create:

enter image description here

so that the:

partition scheme and target system type are:

GPT partition scheme for UEFI

as in the sample image. Unetbootin doesn't appear to offer this feature. Perhaps there's an alternate? CLI solution acceptable but prefer GUI answer.

Extra points for explaining how Rufus alone seems to manage this.

Best Answer

Bootable USB flash drives for installing OSes contain data, and exactly equivalent data can be written whether the computer booted using an old-style BIOS or a new-style EFI. Different tools, though, offer different options for how to prepare the USB drive. In particular, there are two orthogonal factors:

  • Boot loader (BIOS vs. EFI) -- The boot loader is a program that interfaces between the computer's firmware (a BIOS or an EFI/UEFI) and the OS that's being booted. To boot on a BIOS-based computer, a BIOS-mode boot loader is required; and to boot on an EFI-based computer in EFI mode, an EFI-mode boot loader is required. (Most EFI-based computers also support BIOS-mode booting, which can create a real mess; see my page on this subject for details.) A USB flash drive can have BIOS-mode, EFI-mode, or both types of boot loaders, and different tools for preparing the USB flash drive present different options along those lines.
  • Partition table type (MBR vs. GPT) -- Just like hard disks, USB flash drives use partition tables. These are normally Master Boot Record (MBR) or GUID Partition Table (GPT). Traditionally, BIOS-based computers use MBR and EFI-based computers use GPT; however, it's possible to boot in BIOS mode from a GPT disk or in EFI mode from an MBR disk. There are also bizarre configurations that merge disk partition tables with the needs of ISO-9660 optical discs. The .iso file you download uses such a format. It can be written directly to a USB drive and the firmware and OS will interpret it as a weird disk format (GPT for Ubuntu, IIRC), but it deviates from the usual disk standards in several ways that can cause problems in some cases. For the most part, partition table types are mutually exclusive; a disk can't have both an MBR partition table and a GPT. (The ugly and dangerous hybrid MBR is a partial exception to this rule, but it's used mainly on Mac hard disks when the computer dual-boots with Windows. Hybrid MBRs are rarely or never used on Linux installation media.)

Most tools for writing .iso files to USB disks put both BIOS and EFI boot loaders on a disk that's either already been prepared with a partition table of your choice or that the tool prepares with either MBR or GPT, depending on the preferences of the tool's author. Some tools put just BIOS or EFI boot loaders on the disk, though, and some tools give you two or more choices of what to do. As you've discovered, Rufus offers three choices. This gives you flexibility and helps you work around system-specific quirks. For instance, if a particular firmware doesn't like a particular combination of boot loader and partition table, you can avoid it. You can also write only the boot loader required for the boot mode you intend to use, thus making it impossible to accidentally boot in the wrong boot mode (EFI if you intend to do a BIOS-mode install or BIOS if you intend to do an EFI-mode install).

There's a lot of subtlety and complexity to the boot mode choices, and I strongly recommend you read my page on this subject before attempting a dual-boot installation. It's far too easy to install in the wrong boot mode, which just creates problems you'll have to correct as soon as the installation has finished. Such problems were very common two or three years ago thanks to poor online documentation, but the most popular modern documentation does a better job of steering people around the problems. OTOH, a lot of bad documentation is still floating around online.

Note that the reason for the differences in tools' capabilities is simply that different programs' authors have different priorities and knowledge bases. There's no technical reason why Rufus gives you three options for boot loader and partition table combination whereas Unetbootin is less flexible on this score.

Related Question