top | item 16461803

EFI Sucks (2012)

101 points| turrini | 8 years ago |plus.google.com | reply

72 comments

order
[+] kev009|8 years ago|reply
UEFI is a really unfortunate second system with all the markings of Intel's internal cultural issues imbued onto it that are hard to not see if you've worked with intel for any length of time. In the common case of an end user running an operating system, it's really hard to botch that without being kicked out of the market in ways that can't be worked around so it wont matter to most computer users. But UEFI is only a minor improvement over BIOS versus other industry standards for the people that could reap the benefits of an open and extensible bootloader in embedded, appliances, and hyperscale -- device manufacturers and operating system developers.
[+] majewsky|8 years ago|reply
I'll go against the grain here: I go out of my way to use UEFI over BIOS, because it Just Works for me.

When I got my first UEFI-using notebook in 2012 (same year as the submission), things were a bit rough because the Arch wiki did not quite know what it was talking about, and the Arch ISO was not UEFI-bootable, so you had to use some trickery to install an UEFI bootloader, but even then, it only took me two hours to figure out partitioning and install the bootloader.

Since then, stuff has gotten much better. Just recently, I switched my VirtualBox VMs to use UEFI emulation instead of BIOS emulation because it allows me to use the well-designed systemd-boot (previously known as gummiboot) instead of that absurd abomination called Grub 2.

[+] appleflaxen|8 years ago|reply
> it only took me two hours to figure out partitioning and install the bootloader

This doesn't read like a success story to me.

[+] arghwhat|8 years ago|reply
Now try to install arch to a bootable USB stick from your UEFI booted system, and see all hell break loose.

I boot UEFI, but it's just so bloody cumbersome and fragile. The entire concept of having boot configuration in NVRAM is terrible.

[+] swiley|8 years ago|reply
The one thing I really love about EFI on non-macs is that you don't need a boot loader. You just compile your kernel with an EFI stub and whatever you want in the initrd and then select it with the firmware GUI.

That's nice

[+] Aelius|8 years ago|reply
I love efi for a similar reason: I still use bootloaders, but I don't have to chainload them or otherwise slow down my boot process with a menu asking which OS I should start.

Default boot into OS #1. If I want any other OS, I manipulate efi bootnext (efibootmgr -n #### && reboot).

So much simpler and more efficient.

[+] arghwhat|8 years ago|reply
The EFI stub is the bootloader, and is analogue to the bootloader needed on a BIOS system.

You don't need a seperate bootloader, or a multi-bootloader on any system. They only exists as a convenience. People still use GRUB on EFI for exactly that reason.

[+] abhishekjha|8 years ago|reply
I didn't understand a lot of what you said. Any sources?
[+] tinus_hn|8 years ago|reply
Many of the issues are just that BIOS is old and stable while EFI and UEFI are new and immature. There should be a testing suite for UEFI like the CSS Acid test so there is a baseline of working functionality. But instead the test is ‘does it run Windows’ and that really is only a small part of it all.
[+] tscs37|8 years ago|reply
A lot of the painpoints are gone, understandbly, but some still exist.

The biggest suck on EFI is that it uses PE fileformats. I would have liked it more if it would have just loaded a raw PIC binary or ELF. And not used Windows Calling Conventions.

[+] AstralStorm|8 years ago|reply
That is not important. The real bad part is that you still cannot easily load modules of your own to work around broken setup by mainboard manufacturer or Intel or boot rom in the device. This essentially causes lock in. Or even disable some broken modules.

(Security has nothing to do with it, the module can be crypto signed by user installed key.)

Plus the critical hardware setup documentation is not being released at all.

Another is the use of SMI to communicate with the thing which just does not play well with a preemptible OS.

Memory map handling is additional badness on top.

[+] digi_owl|8 years ago|reply
[+] raverbashing|8 years ago|reply
Linus spent a lot of energy and Management by Perkele to make sure stuff worked and kept stable under ACPI. People would submit patches that fixed some things and broke others, and Linus put a stop to this

I'm not so sure about the ACPI standard, it certainly has some warts but the main issue seems to be manufacturers who ship the thing once their hardware manages to boot Windows. Once. And note I said boot, not run.

[+] krylon|8 years ago|reply
"There are two kinds of interfaces: the simple ones, and the broken ones."

If only more people kept that in mind. ;-)

[+] snvzz|8 years ago|reply
There's a lot about it that's bad, but the worst is definitely that it allows the firmware to keep running after the OS boots, interfering with its normal operation. Thanks to SMI, the system is non-deterministic: No latency promises can be made.
[+] tinus_hn|8 years ago|reply
The same happens with BIOS, that is how many of its settings work.
[+] dekhn|8 years ago|reply
Is EFI the system that my newer motherboards use when booting up?

Is he talking about the system that has replaced grub on most of my machines with a more reliable one that's built into the hardware?

In 2012, EFI/UEFI was pretty unreliable because the implementations were bad and the software support was terrible. Nowadays, I find it preferable.

[+] pankajdoharey|8 years ago|reply
Unfortunately his statement is still valid even after 6 yrs, it is still a complicated disaster. And it uses Fat32 and PE. An abomination in my view.
[+] rkangel|8 years ago|reply
FAT32 is a good choice IMO. It's the simplest of the "mainstream" filesystems.
[+] zaarn|8 years ago|reply
FAT32 is not a bad choice. It's a relatively simple filesystem that reduces the amount of stuff the UEFI has to deal with while also being understood by basically any modern operating system (modern = since 2000)

The only other option I'm aware of that is cross-OS would be UDF, which back then wasn't popular outside DVDs and even today people continue to ignore. Though it would have been patent free.

[+] ttflee|8 years ago|reply
> It's just sad how people always try to "improve" on old standard interfaces by then over-designing the improvements to the point where the new interface is just overwhelmed by complexity.

Did Linus also criticize the complexity and untested nature of systemd?

[+] krylon|8 years ago|reply
I vaguely remember Linus finding some strong words when the systemd developers wanted to integrate dbus into the kernel.

(IIRC, they claimed it offered better performance, Linus ran some benchmarks and claimed the kernel-dbus implementation performed worse than the regular dbus daemon. My memory on the subject is fairly vague, though, so don't take my word on it.)

[+] digi_owl|8 years ago|reply
While he has not voiced any direct criticism of the project that i recall, he has voiced concerns about the principle developers of it.

Keep in mind that at one point he was so fed up with Kay Sievers that he announced he would not accept any kernel patches that originated from that person.

I think it related to Sievers unilaterally deciding that the kernel, and not udev, should be responsible for loading firmwares, leading to the kernel devs scrambling to implement the required functionality. In the aftermath some kernel devs even pondered forking udev and bundling it with the kernel code as part of its userspace toolkit.

And this was from before udev was merged with systemd (iirc).

[+] craftyguy|8 years ago|reply
How is systemd an 'interface'?
[+] anfilt|8 years ago|reply
I remembering reading this a while ago. EFI just tries to do too much and thus is too complicated.

Let alone the concerns that secure boot and other OSes.

[+] nszceta|8 years ago|reply
Arch Linux on VirtualBox using EFISTUB

Super simple steps to install an Arch Linux guest on VirtualBox with pure EFISTUB. No bootloader! Fill in the blanks with https://wiki.archlinux.org/index.php/installation_guide

timedatectl set-ntp true

gdisk /dev/sda

# 256 MB partition type EF00

mkfs.fat -F32 /dev/sda1

mkfs.btrfs /dev/sda2

mount -o discard,compress-force=lzo /dev/sda2 /mnt

mkdir /mnt/boot

mount /dev/sda1 /mnt/boot

pacstrap /mnt base base-devel btrfs-progs vim openssh

genfstab -U /mnt >> /mnt/etc/fstab

arch-chroot /mnt

ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime

timedatectl set-ntp true

vim /etc/locale.gen

locale-gen

vim /etc/hostname

vim /etc/hosts

systemctl enable dhcpcd

systemctl enable sshd

passwd root

useradd -m user

passwd user

# /boot/startup.nsh

fs0:\vmlinuz-linux rw root=/dev/sda2 initrd=\initramfs-linux.img

exit

umount -R /mnt

poweroff

[+] Samis2001|8 years ago|reply
For this area, my ideal world is one where both the BIOS and UEFI are dead, replaced by something that is inspired both by OpenFirmware and coreboot.
[+] nikofeyn|8 years ago|reply

[deleted]

[+] colanderman|8 years ago|reply
EDIT: Parent post was blaming Linus personally for sundry perceived issues with the greater Linux/Unix ecosystem. I've left my original reply below.

----

Linus had no part in any of those. Most of them existed long before Linux was a twinkle in his eye.

Heck, some (two-letter commands) even existed before Linus was a twinkle in his parents' eyes [1] [2] [3].

(The exception being git, which is objectively one of the best DVCSes which exists. There is a reason it is so widely used.)

[1] http://swenson.org/multics_wiki/index.php?title=Linux-to-Mul...

[2] https://en.wikipedia.org/wiki/Multics#Project_history

[3] https://en.wikipedia.org/wiki/Linus_Torvalds#Early_years