More Power To The Firmware
An anonymous reader writes "In More Power To The Firmware Amit Singh talks about technical details of EFI, the next-gen BIOS replacement standard Intel, Microsoft and others are pushing. This is a very informative piece where he talks of issues with legacy BIOS, how it affects those who develop in the firmware environment and how EFI plans to solve these problems. EFI usage examples are included, including a programming example. He contrasts EFI with Open Firmware as well. IMO the second half of the article is even more interesting, where sample FORTH code is provided for displaying a window/mouse pointer GUI inside the Apple/Mac firmware! And of course, there's code for a new 'Towers of Hanoi' animation using the Mac firmware (remember Hanoimania?). Aspiring Mac Firmware Hackers could also check out the suggested projects ;-)"
...but can you imagine any sort of Windows-dependent BIOS? Is this in our future? Is it even possible? Or, worse yet, a Windows-based BIOS of some type where the OS actually IS the BIOS?
Don't be a looter...and yes, I know that it's spelled with an "A" instead of an "E".
I'm not in favor of increasing the complexity of the bios. They can barely get them stable after a few updates now, how will it be when they are doing alot more? Yeah I know that Sun Sparc's have a complicated bios, but they did it right. I don't trust Microsoft and Intel to do it right.
thisnukes4u.net
We don't need DRM built into the BIOS, and that's exactly what would happen if Microsoft had a say in it.
I agree that we don't need more complexity. Let the OS handle the hardware as much as possible.
- It's not the Macs I hate. It's Digg users. -
We don't need no stinkin' software, firmware will do it for us.
Insert witty saying or aphorism here.
Apple has been doing this since the beginning, since they control all hardware (or has to be approved by them). Having MS or Intel do it on a box that will have an immeasurable amount of peripherals by different manufacturers is only looking for problems. It may be possible but I fear it will be at the expense of creativity and thinking differently will not be an option.
Stay tuned for new sig...
Here's a link to an older KT entry; "Status And Discussion Of EFI (Extensible Firmware Interface) Support"
Explains some history, rationale and technical details.
Belief is the currency of delusion.
heh reminds me of a pocket pc where the Windows OS is in the ROM
The war with islam is a war on the beast
The war on terror is a war for peace
Now, now - that's enough of the negative thoughts. I think you should go to the M$ retraining centre for re-education right now.
Stay tuned for new sig...
Glad to see there is attention being paid to the firmware end of things both commercially and as open source - that's one area your average geek is a little leary of toying with, due to Inoperative Hardware potential.
What I always worry about is the non-techical end of these things. BIOS level control on what software a computer can run is a much harder obstruction to overcome than things like driver issues. I wonder if they won't use the "Next Generation" mantra to say this is the perfect time to pass legislation that requires DRM control be built into all computational devices. OpenBIOS wouldn't be of much use if DRM laws require a closed system.
Also, if firmware gets too smart, you might get things like a DVD drive refusing to play a movie unless your operating system can guarantee it that you computer doesn't have the ability to copy content illegally.
When you can program games in BIOS level systems, I start to get a little wary. Keep my BIOS to the minimum please - configuration options needed to handle my hardware (things like boot order, low level configuration options the OS shouldn't know about, etc.) should be all the capability needed. A BIOS should be simple, efficient, and stick precisely to its job. I've got an OS for the rest. If the new system is good for that type of work, excellent. But if the hardware starts getting too smart for its own good, then I might wind up hauling out those two Sun Ultra 1s I bought - they should run more or less forever and I'll live with slower speeds in order to stick with a consumer friendly machine.
"I object to doing things that computers can do." -- Olin Shivers, lispers.org
Let me add something that I find remarkable: I have not seen a single reference to Open Firmware in any EFI specification, presentation, whitepaper, or related document. Perhaps I did not look hard enough. This is not a criticism though. Some might argue that EFI's pathbreaking-ness is valid in the context of PCs, so it is appropriate not to mention prior similar ideas.
I'm not quite sure what that last part means - how can you say it's not appropriate to mention when the technology is so similar? Just because it hasn't been used on PC's before is no reason not to learn from what has been used before.
I would have liked to see more of a comparison of exactly whe EFI gives you over Open Firmware of today - I gathered it was the custom pre-boot programs and network connectivity, but I would have liked to see more examples of new things that make use of these features that you can't do in Open Firmware.
It's funny to have a whole article about EFI then show all the cool things you can do with an advanaced BIOS by giving Open Firmware demos. Sort of like watching a Longhorn demo of transparency in UI while working on a Mac.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
So I glaned over the article, and while it mainly focused on EFI being done for IA-64, it also hinted that EFI was available for x86. Does anyone know of any reasonable priced motherboards that use this as opposed to an older BIOS? I'm looking for the hinted at x86 support, as I don't feel like buying an Itanium. Also, while we are on the subject, is this an Intel only thing or does AMD have a say in the matter?
-- Fighting mediocrity one bad post at a time.
I've been using EFI (on Itanium) for quite some time, and have had zero issues with it. I really like the fact there are DCHP modules that allow networking to be started without the OS running. They have ftp servers, disk drivers and you can boot your machine from a remote image using bootp services. If your OS is dead on your disk, you can restart to efi and download a previous image on to your harddisk (or remote boot/install). Heck, you can run your code without even booting the OS. Imagine dedicated distributed.net clients that run straight from EFI without the overhead of an OS.
While I understand people have concerns that Microsoft is using this as a DRM delivery mechanism, there is nothing that is stopping Microsoft from working with Phoniex to add DRM to today's bios's. EFI (and non-legacy bios environments like openBios) make it easier for non-windows OSes to run on new Hardware. This isn't in microsoft's best interests. Microsoft wants a bios that only runs signed code (like their XBOX), so that you have to ask them nicely for a key to your equipment.
The author mentions that EFI is somehow better than Open Firmware, but I fail to see how. It all sounds like Intel decided to go their own way again (just like their Itanium had to be different and incompatible with any (RISC or CISC) CPU out there).
Why, for sanity's sake, can these companies never adopt a perfectly good standard, but do they always have to give everyone headaches by rolling their own? If Open Firmware has some deficiencies, surely they can be fixed with some incremental improvements?
The Intel Architecture is evolving...from the primitive, kludgy, underperforming, el cheapo to the overhyped, overheating, overexpensive and incompatible. Even IBM (Connector Conspiracy) and Apple (Think Different) are more open and standards-oriented these days.
Please correct me if I got my facts wrong.
I found the assertion that 64bit PC's don't use the BIOS rather amusing. Evidently bits of Intel still haven't managed to bring themselves to admit the existance of Athlon64 just yet.
I hope this doesn't mean that PCs will be sold like Xboxes. I don't want to have to intall a mod chip on my laptop to run linux. I like the idea of the BIOS having more function and power, but I want it to do more than just prevent code from being executed. This should definately be an open standard otherwise Microsoft or Intel will have too much control. It's one thing to boot into windows and have that muck up your computer, but it's different when microsoft code is running on a linux box.
Since microsoft doesn't seem to like to innovate anymore, I wonder why they are pushing for this. Linux has shown that you don't need security at the hardware level to prevent viruses from taking down your computer.
So far I don't see many benefits the user will notice and enjoy. I'm not trying to spread DRM FUD because this article doesn't talk about it, I'm just asking why Microsoft cares so much to push this.
There are various system emulators that need ROM images to boot the virtual system. I have been wondering about open source projects to provide these images, unencumbered by copyright restrictions, trade secrets, what have you.
I am into operating system development, and I would like to play around with architectures that I don't have real hardware of. It can't be too hard to write a firmware implementation if the code for the emulator is already available.
If you are aware of any such projects that are not mentioned here, please post. Ones that I know of are OpenBIOS, FreeBIOS, and LinuxBIOS, which are also mentioned in the article, with links.
Please correct me if I got my facts wrong.
It would be fun to see someone port one of those Apple ][ emulators to this thing, so you can actually boot a Mac into an Applesoft programming mode, just like in the old Apple ]['s. If it can handle a simple GUI like in the article, or if it could handle an implementation of System 1, I'm sure an Apple ][ emulation would be no problem.
From what I gather in the article, any of these Forth programs have to be loaded off of the hard drive in order to be executed. I didn't really understand if they could be stored in non-volatile memory, and if the computer could be configured to run them when it is turned on. I don't know how much space there is for non-volatile memory, but it would be interesting to be able to write a really basic OS that runs off of it without having to read from the hard drive at all.
I suppose it's possible since you can update the firmware, but does Apple keep information about how to program the firmware proprietary, or is it open for people to tinker with?
What's happening here with EFI is that the BIOS has now grown to become an OS. If all you want BIOS to do is init the hardware and then jump to an OS then that's all the BIOS should be, just some init code to set up memory, chipset registers and cache so that it can jump to an OS for all the rest. But if you want the BIOS to do a whole lot more than just call it an OS and use an OS with lots of support with drivers already written.
And for this BIOS that's really acting and grown to be an OS, I choose Linux!
More at : http://www.linuxbios.org/
Quidquid latine dictum sit altum viditur
The one thing people always forget is that, in truth, Microsoft/Adobe/Autodesk need people to have pirated versions of their software. Have you ever noticed how quickly major pieces of software are cracked after release? My guess is that they unofficially provide people with information to make this possible.
If everyone absolutely and without an option had to pay for their version of Office/Autocad/Photoshop, free software would become ten times more popular in no time at all. Right now, software companies can keep their prices artificially high for the businesses that have to pay for it, and keep the "installed user base" artifically high without having to provide tech support.
It's sort of the same thing with laws in the States. If every law was enforced every time, then people would be pissed and they would go away. Instead, laws that aren't enforced 100% of the time can be used against people the government doesn't like.
If DRM ever hits 100% of the market, prices will go down because people will refuse to pay.
CALL -151
I want to delete my account but Slashdot doesn't allow it.
While the OS may have been in ROM, Like the Atari ST's, that doesnt make it the actual BIOS.
By its very definition, the BIOS is a much lower level block of code. the true hardware abstraction layer, that the OS rides on top of..
Sure its also in a ROM of some sort, perhaps even the same chips.. but that still doesnt really make a ROM based OS a 'BIOS'..
---- Booth was a patriot ----
Let us not forget that IBM published the assembly language source code listing for the original PC BIOS in full beginning in 1980.
This "openness" allowed and enabled the first generation of PC developers to see and understand what was going on at the firmware level - literally an open book and manna from heaven for the times.
This was not quite the precursor of today's open source movement though since IBM never granted permission to copy or use the code, but 1 billion PC compatibles later it is easy to see that IBM's approach unlocked at least one aspect of the value of openness.
Dan Bricklin comments thoughtfully about the PC BIOS in his blog. Search for "purple".
Controlling access to copyrighted media is not the DRM BIOS's direct role; its role is to ensure that the operating system that boots can be trusted to do so.
Right now, a secure trusted music player may ensure that the copyrighted media it plays never ends up in the wrong hands (i.e., the user's); however, there's nothing (in theory) stopping the no-good thieving user from replacing the audio device driver with one which makes a copy of the unencrypted sample stream elsewhere. If the OS requires drivers to be signed, then the OS can be hacked; they can boot from a hacked kernel which doesn't enforce this requirement.
This is where the DRM BIOS comes in; under it, all bootup code would have to be digitally signed. Any code that's signed would, in theory, continue the chain and not load any other code which is untrusted in a privileged capacity. Only once the black iron sandbox is built does any potentially untrustworthy code get loaded, where it can't do anything untoward.
Incidentally, this may be compatible with the GPL. Linux could still be distributed with source code you could look at; just that if you compiled your own kernel, it wouldn't boot on your machine (at least not on the bare metal).
Boot time vulns...
Yup, its an attack vector. Real Story: A major vendor of network bandwidth wanted to remotely bring up router boxes... using dhcp etc. And remotely boot those boxes. Over the internet.
So, here is the attack vector:
Hacker intercepts communication, capturing digitally signed OS that boots the router box. Now, this is useless, because all the hacker can do is wait for the box to reloaded, and then feed it the same OS image.
Imagine, though, that a little time has gone by. Now, some vulns are known in that particular core. Now, when the router box is rebooted, the hacker can put BACK the vulnerable OS, and rehack.
So, each download image must be secured against the box, to avoid replay attacks. Yes, this was brought up up the review of the "load OS over the internet" project.
Of course, all names have been filed off, to protect.... well, whoever.
Of course no mass market data producer is going to re-crypt data for each individual. That would mean that the OS/CONTENT would have to be re-encrypted after registration, *or* every retail copy would be different, *or* there would be no retail copies (only pre-installed).
Ratboy.
Just another "Cubible(sic) Joe" 2 17 3061
Backslashes? DOS-style dir listings? UGH, I thought the idea was to remove obsolescence.
Also, this is even worse than ACPI from a needless complexity standpoint.
That is soooo lame. If I have a recovery tape, which is common practice under HP-UX, I can't recover from it, unless I use a very uncomfortable 2-step procedure (booting from CD and then proceeding from tape). HP-UX is one of Itanium's "native" OSes, but EFI is somewhat of a step back in some parts compared to HP's Boot Console Handler.
I get a certain kind of comfort when I pull in to the gas station and see a really old car using the same gas pump as me. In the auto industry there have been many changes in the past hundred years but a 1913 Model T can still buy and use the same gas as my car can.
BIOS is a sort of standard that assures compatibility. When we drift away from that standard, we start losing a very core basic value - the kind of thing that stops us from "filling up at the pump" so to speak.
I want my BIOS. Other things can change but I want my BIOS because I feel better knowing that some things stay the same.
The Amiga is kind-of unique. The OS _is_ the BIOS, as well as everything else.
Turn the Amiga on, the 680x0 reset vector runs. Through board logic, the Kickstart ROM is mapped to 0x00000000 as well as its usual location, and the lowest points of the ROM point out the jump address for the reset vector. The 68000 goes there, it's the INIT code of exec.library. Exec performs a self test on the board logic, the memory and the custom chips. It then searches for expansion cards (creates expansion.library), attached disk drives (trackdisk.device) and HDs (scsi.device (regardless of whether you have an IDE or SCSI hardware interface)), PCMCIA card disks (carddisk.device), etc.
The graphics.library writes direct to Amiga hardware. The audio.device, in ROM, writes direct to Amiga hardware. potgo.resource, cia[a|b].resource, misc.resource, disk.resource, etc, are all arbitration mechanisms for custom chip registers. Sure, dos.library can load filesystems from disk once it's initialised by a HD or disk standard bootblock, but the basic 6 Amiga filesystems are in ROM. intuition.library and its high level BOOPSI stuff like loadable gadgets, images, datatypes are built on top of layers.library, which is built on top of hardware-hitting graphics.library.
So there is tight integration between the hardware and the OS. There's no low-level code offering a hardware independent API to AmigaOS... that's AmigaOS itself. You can't put another OS there without adding in half of what AmigaOS did, in order to maintain the Amiga hardware. There's a lot of stuff that came after the Amiga designs (such as MMUs), and there's no official OS interface to it. They're not initialised by the OS. Random application programs fought over them with no OS supervision.
I vote they put GW Basic back into the BIOS ROM.
Or maybe useful utilities like Sun and other workstation vendors have.
Or maybe more than 15 FUCKING IRQS! Like Macs have.
Is it me, or is everyone else just better all around? The only thing going for PC's is the junk is so cheap.
Southeastern Virginia REPRESENT!