Linus Torvalds has picked up one of Apple's new Intel-based Mac minis to play with, but the Linux creator still prefers Apple's old PowerPC architecture for his primary desktop machine. "I'm actually still running a G5, but I also have a Mac mini," Torvalds revealed today in an e-mail to ZDNet Australia. "I like the design, and it's the right form-factor to be a replacement machine for my wife and daughter, but sadly, Apple screwed up the firmware in various stupid ways."

One of the responses in the linked article explains why Linus feels the way he does.

Actually, "more modern PCs with EFI" suck in a number of different ways. If you search the Linux Kernel Mailing List (LKML) you will know the technical details.

In a nutshell, the old BIOS sucks so bad that every modern OS just uses it for booting, and then ignores it altogether and goes on to do its own thing for scanning the machine for PCI cards and so on. EFI, on the other hand, has more features and those features allow some customization by manufacturers (the "Extensible" part in EFI). If some operations start requiring the OS to do EFI calls (unlike the BIOS, which forces nothing), we get into the same kind of mess as ACPI, with the extensions posing parsing problems, and bugs forcing the OS to work around them. ACPI was also supposed to be more "modern" and stuff, but its complexity as revealed itself to pose more problems than the ones that it was supposed to solve.

So, in this case, the BIOS is actually better, because it doesn't get in the way (and doesn't provide any false hope of solving any problems).

It has nothing to do with Apple specifically. Linus is criticising EFI itself.

I wrote a great reply to this comment, unfortunately it got lost. Shame, so I'll just write a quick summary. (It was a lot longer than this earlier).

Linus is full of BS as usual. He's going off on his usual NIH attitude or "it's different" attitude. This means that if he didn't invent it it's obviously no good and it's clear he's too ingrained to realise what advantages EFI gives over the good old BIOS because it looks like something he remembers sucks. Frankly, if you don't believe me, that's fine, but I recommend you read up for yourself the differences before making a rebuttal.

I wrote a good comparison of EFI vs OpenBoot vs Open Firmware vs BIOS, but the short of it is, the BIOS is a legacy bit of code that makes lives miserable for everyone from device developers to users (they just don't realise it yet) depending on how your expectations are based.

EFI (and Open Firmware) abstracts away the hardware from the OS to a reasonable degree so that POST and boot time is a lot easier for users and developers to get what they want. Stuff like booting over wifi, network or network related storage directly (like ATA-over-Ethernet or iSCSI) is within the realms of possibility. This is generally a no-go in the case of the BIOS (or patchily supported, such as PXE for some network cards).

This can be done via EFI by the use of an architecture agnostic programming system (similar to Forth, or stack processors like Java, .Net/Mono) to write platform independant firmware drivers. SDK development is greatly improved and life "just works". (Most of the time, there's probably some birthing issues here and there that have bitten a few people).

Basically - EFI and Open Firmware leave the BIOS in the dust for what it is - a kludge from the good old days of the IBM PC when 640 KB and real mode is all you got. And here we have Linus claiming it's a bad idea. If he had his way, we'd all be using the command line all the time it seems. Graphics? I remember this stuff called "Windows", and it sucked! Hell no!

As for the quote If some operations start requiring the OS to do EFI calls (unlike the BIOS, which forces nothing), we get into the same kind of mess as ACPI... I call that a mistruth for what it is. The BIOS actually loads in additional BIOSes, namely the VGA BIOS to let the OS kick into rudimentary graphics mode (if needed) such as 640x480 or 800x600 mode, typically to show you Windows is booting before it loads the real driver. Other add in cards such as SCSI or SATA card also load in additional BIOSes to handle booting. If people can get VGA and mass storage BIOS addons working, I'm pretty sure they can get real EFI or Open Firmware drivers working significantly easier and better than what the BIOS supports by a good margin.

So, in this case, the BIOS is actually better, because it doesn't get in the way... It also doesn't provide much support for OSes either. In fact, if you compare the BIOS to EFI or Open Firmware and all the convenient facilities it provides you'd choose EFI/Open Firmware hands down for any serious non-PC based project (such as embedded systems). Again, the correct tool for the job is a good skill to cultivate. Programming by choice under the BIOS is like programming GNU/Linux with ed and m4 to cat together machine code. Sure, you can do it, but why?

I would like to paraphrase Ken Pier (Xerox) here: I liken starting one's computing career with Unix ... to being born in East Africa. It is intolerably hot, your body covered with lice and fleas, you are malnourished and you suffer from numerous curable diseases. But, as far as young East Africans can tell, this is simply the natural condition and they live within it. By the time they find out differently, it is too late. My apologies to anyone who comes from East Africa.

So, what's it going to be? Believe Linus like everyone else who can't think for themselves? Or go out and research properly and realise that even role models can be wrong. I leave this in your hands...

If some operations start requiring the OS to do EFI calls (unlike the BIOS, which forces nothing), we get into the same kind of mess as ACPI, with the extensions posing parsing problems, and bugs forcing the OS to work around them.

That's about the size of it. Having a lot of stuff handled within the hardware is a nice idea, but when you have ACPI which is handled in umpteen different ways by umpteen different bits if hardware then it ends up being utterly pointless.