UEFI and Linux

uefi2Most modern motherboards manufactured today contain an updated BIOS called UEFI (Unified Extensible Firmware Interface) that is intended to replace the older BIOS (Basic Input/Output System) that has worked reliably for the past several years.

“Does Linux install and run with UEFI?”

My experience with Linux and UEFI-based motherboards has been an exercise in disappointing frustration. In an attempt to fix what is not broken, UEFI adds a new hurdle for Linux users to jump over.

A Brief Description of UEFI

“Why design a new BIOS?”
“What is wrong with the existing BIOS?”

These questions are best answered by the developers of UEFI, by those who fund it, by those who love Windows 8 with a blazing hot passion, and by companies that have a track record for either not supporting Linux or supporting Linux as an afterthought.

The Unified EFI Forum provides complete details of the specification (with version 2.4 being the latest at the time of this writing). There are indeed improvements over legacy BIOS, such as cryptography, supposedly faster boot times, its own boot manager, and more. Most advantages of UEFI offer benefits that manufacturers best understand, so end-users would most likely not see them. From the everyday user’s point of view, the computer should perform as usual.

However, UEFI offers one major advantage that end users will understand: UEFI boots an operating system from hard drives greater than 2 TB in size.

This means if you want to perform multi-booting (using operating systems that support UEFI, of course), you can place them all on a single hard drive greater than 2TB. Or maybe you want to store all data with the operating system on a single, large 4 TB hard drive (such as a media server) so if the operating system crashes and corrupts your hard drive you get to experience the joy of losing all of your data too. Get ready to fill that 4 TB drive again!

The point is that UEFI offers much, but right now, those advantages exist more in a spec sheet than in real life and only with Windows 7 and Windows 8. (Not certain about Mac operating systems.) All other operating systems–Linux and versions of Windows older than Windows 7–are not supported.

Some Linux distributions do support UEFI out of the box, but every distribution I tried did not, and thus, refused to install or run. For a list of supported Linux distributions that should work with UEFI enabled, please check this short list: http://www.phoronix.com/scan.php?page=news_item&px=MTI2MzI

Further reading from that page yields interesting thoughts on why Linux might never receive full UEFI support in the future.

But how about today?

Does UEFI Work With Linux?

In theory, Linux should, but in my practical experience…No. I tried to install and run Linux Mint 15, Ubuntu 13.04, and Xubuntu 13.04 on UEFI-based motherboards from different manufacturers, but all refused to install when UEFI was enabled in the UEFI/BIOS settings. The only time Linux installed and ran on UEFI motherboards was when the Legacy BIOS option was selected. UEFI needed to be turned off.

All motherboards I tested contained an option to select either UEFI or Legacy BIOS. This is an option usually found in the “Secure Boot” section of the BIOS settings.

a

This UEFI BIOS allows UEFI or Legacy BIOS (called “Other OS” in this screenshot). This is located in the Secure Boot section of the BIOS. “Other OS” is compatible with all operating systems.

a

This BIOS is from a different motherboard, and it lists the choices between UEFI and Legacy BIOS. Here, the Legacy BIOS is referred to as LEGACY+UEFI, which is compatible with all operating systems. Same thing, different name. The “Boot Option” lines refer to the boot order.

The Legacy BIOS option is the traditional BIOS that is compatible with every operating system–including Windows 7 (tested) and presumably Windows 8 (not tested). Linux would install and boot with Legacy BIOS, but not with UEFI. However, this presented some issues as noted in the two scenarios below.

UEFI/Legacy BIOS Settings

The UEFI/BIOS settings often refer to the UEFI boot process as Secure Boot. Search for the Secure Boot option in the BIOS settings and choose Legacy BIOS, Other OS, Legacy+UEFI, or whatever the motherboard manufacturer felt like naming it that day. Whatever it is called, be certain that Legacy is chosen. You cannot go wrong. Save the BIOS settings and reboot.

a

The boot mode specifies which BIOS to use: UEFI or Legacy BIOS (called LEGACY+UEFI in this screenshot). Thankfully, many motherboards today still offer a choice or else most current Linux distributions will not boot or install.

Boot Order

These new BIOSes included advanced boot ordering that allows you to select which drives the system boots from and in which order. This is important to set correctly because some devices will be listed as UEFI in the boot order and will automatically switch the BIOS to UEFI if chosen. This happened to me when I had mistakenly set a UEFI USB drive as the first device in the boot order instead of a plain USB drive and then installed Windows 7 from it. The BIOS automatically reconfigured itself to UEFI in order to install Windows 7 even though I had already specified Legacy BIOS for the installation.

This might be a specific motherboard “convenience” feature, but be aware of it nonetheless. If you set BIOS to Legacy mode, be sure you boot from plain devices. Not UEFI listed devices.

a

The boot order proceeds from left to right. Notice that the last is a USB device with “UEFI.” If you want to boot using the Legacy BIOS, do not boot from a device labeled UEFI.

a

A large number of boot devices adorn this BIOS in the boot order. Here, each UEFI device is labeled with a white “U” within a red square. Booting from one of the UEFI devices will automatically switch the BIOS to UEFI mode.

The devices shown in the boot order are often the same, shared devices, not separate, specially manufactured UEFI devices. Those listed as UEFI will switch the motherboard into UEFI when the system boots from those devices. For example, if Legacy BIOS is set and you boot Windows 7 from a plain USB device (one not listed as UEFI), then Windows 7 will install under Legacy BIOS. But if you boot from the same USB device labeled UEFI, then Windows 7 will install under UEFI. Same device, different chosen BIOS.

Here are two first-hand accounts with UEFI and Linux:

Scenario A: Dual Boot with Windows 7 UEFI and Linux Mint 15

One system had Windows 7 x64 already installed under a UEFI BIOS. I tried to create a dual-boot system by installing Linux Mint 15 64-bit on a separate hard drive. However, once Windows 7 is installed with UEFI, it expects UEFI every time the system boots. Linux requires Legacy BIOS.

Linux Mint 15 would not install with UEFI enabled, so I changed to Legacy BIOS in the settings. However, this resulted in disaster. The Windows 7 installation was completely corrupted (Linux had not been installed yet), and Windows 7 immediately booted into its recovery mode in a futile effort to recover itself. It never did. Every time I tried to boot Windows 7, it always launched to the recovery screen where it would eventually give up and report that the system could not be recovered.

Switching back to UEFI was no help. Windows 7 still booted to the recovery screen and reported that the system could not be recovered. An error-free Windows 7 installation was gone simply by switching the BIOS mode. Not once, but every time. I reinstalled Windows 7 under UEFI, and Windows 7 was lost again when switched to Legacy BIOS. The same recovery screen. The same unrecoverable system.

The solution was to install Windows 7 under Legacy BIOS, and then install Linux Mint 15 using the same Legacy BIOS. No need for UEFI at all. Both operating systems worked perfectly in a dual-boot configuration.

Scenario B: Fresh Install with Linux Mint 15 64-bit

Simply put, Linux Mint 15 would not install when UEFI was enabled in the settings. The only way to install and run Linux Mint 15, as well as Ubuntu and Xubuntu, was to enable Legacy BIOS in the settings. This was consistent across different UEFI motherboards. Switching to UEFI after Linux installation did not corrupt Linux the way Windows 7 threw a fit, but Linux would not boot. Switching back to Legacy BIOS returned Linux to normal.

Solution

Use Legacy BIOS for everything and keep it there. This is noteworthy because UEFI-based motherboards usually default to UEFI, so if you install Windows 7 or Windows 8, then those operating systems will install as UEFI by default. You must manually enter the UEFI/BIOS settings and switch to Legacy BIOS before any OS installation. Otherwise, you might be in for a surprise should you decide later to install Linux in a dual-boot configuration. Goodbye, Windows 7.

Conclusion

Reading about the benefits that UEFI offers certainly makes UEFI sound appealing, but actually using it leads to an abhorrence of anything UEFI-related. With UEFI Windows 7 x64, I could not notice any speed increase in boot times as advertised. Windows 7 x64 booted in the same amount of time with UEFI and Legacy BIOS. Linux and UEFI never worked. UEFI is designed to be the extensible end-all, be-all of BIOS designs, but what good is it if Linux refuses to install or run–resulting in a non-bootable system?

All UEFI did for me was corrupt an existing Windows 7 installation (multiple times) when switching to Legacy BIOS, create a layer of incompatibility with Linux, and add an additional step of specifying the Legacy BIOS before the Linux installation process.

Personally, I can see no advantage to using UEFI at this time, especially with Linux. Booting from drives greater than 2 TB seems pointless when faster SSDs (Solid State Drives) offer superior performance when used as dedicated operating system drives–unless a 4 TB SSD exists at a reasonable price. Also, I am not concerned about a boot virus on a Linux system, so there is little need for the Secure Boot feature that seems to only work with Windows 7 and Windows 8.

In short, Legacy BIOS remains great and offers superb compatibility with Linux. Thankfully, the current motherboards offer Legacy BIOS for backwards compatibility. Otherwise, Linux will be in trouble until it supports UEFI as well as it supports Legacy BIOS now. Maybe in the future UEFI and Linux will play well together, but for now, Legacy BIOS is the only practical, frustration-free choice for Linux.

About these ads

, ,

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 33 other followers

%d bloggers like this: