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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
> 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?
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.)
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).
Had the same experience with my plastic MacBook from 2007 and I could install Fedora 27 and Mint using a related program to iso master. Good to know about ISO master.
[+] [-] kev009|8 years ago|reply
[+] [-] majewsky|8 years ago|reply
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
This doesn't read like a success story to me.
[+] [-] arghwhat|8 years ago|reply
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
That's nice
[+] [-] Aelius|8 years ago|reply
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
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
[+] [-] tinus_hn|8 years ago|reply
[+] [-] tscs37|8 years ago|reply
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
(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
http://yarchive.net/comp/linux/efi.html
And here he is on ACPI:
http://yarchive.net/comp/linux/acpi.html
[+] [-] raverbashing|8 years ago|reply
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
If only more people kept that in mind. ;-)
[+] [-] snvzz|8 years ago|reply
[+] [-] tinus_hn|8 years ago|reply
[+] [-] dekhn|8 years ago|reply
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
[+] [-] rkangel|8 years ago|reply
[+] [-] zaarn|8 years ago|reply
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
Did Linus also criticize the complexity and untested nature of systemd?
[+] [-] krylon|8 years ago|reply
(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
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
[+] [-] anfilt|8 years ago|reply
Let alone the concerns that secure boot and other OSes.
[+] [-] nszceta|8 years ago|reply
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
[+] [-] unknown|8 years ago|reply
[deleted]
[+] [-] harijay|8 years ago|reply
Wrote about the process: “The 2007 plastic MacBook lives again with Mint-y Linux awesomeness” @harijay https://medium.com/@harijay/the-2007-plastic-macbook-lives-a...
[+] [-] Samis2001|8 years ago|reply
[+] [-] nikofeyn|8 years ago|reply
[deleted]
[+] [-] colanderman|8 years ago|reply
----
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