Open Firmware is the boot loader software on PCI-based macintosh computers. (No, it is not just macs-- a number of other systems, including IBM's ppc offerings and some others, use OF.) Open Firmware is designed to work totally independent of whatever hardware or processor it may be running on-- it's simply an abstract, standard way to locate an operating system and boot it. It also gives plug-in cards a way to interface with the OS (or even boot the OS _from_ the card) without having to write a hardware-specific firmware (or even be aware of what the hardware is). It has all kinds of other nifty features i don't understand, and despite all this functionality it still manages to make simple things very simple. It is based around a built-in Forth interpreter, and everything (even device drivers) that happens in Open Firmware is done with processor-independent interpreted Forth (They call this "FCode") rather than platform-tied compiled machine code.

Open Firmware was begun by Sun. Sun had a number of different systems they were going to be shipping with totally different hardware configurations and different processors, and they wanted some simple, common way to interface booting and pci cards across all of them. So they set up a system written by Sun employee Mitch Bradley that was at the time called OpenBoot and later changed to Open Firmware.

Apple, facing pretty much the same dilemma, began using Open Firmware on the Power Macintosh 7200 (which was also, by the way, the first PCI-based mac). This is, blessedly, one of many reasons Macs neither have nor need a BIOS, and also basically eliminates the need for things like LILO-- booting into a linux partition which you have lost the boot floppy for is nearly impossible on a PC unless LILO is installed, and installing LILO is nearly impossible to do unless you're booted into linux, but in Open Firmware it's a single command. (I'm gonna get flamed for that one, i can tell.) Apple made some interesting enhancements to the original Open Firmware starting with the imac, which included the ability to boot over a drive located somewhere on the network the computer is attached to via ethernet (it uses bootp).If you want to boot into Open Firmware on a mac, hold down command-option-O-F on startup, and you will be presented with a nice little command-line interface (which, amazingly enough, uses a decently high screen resolution, a monaco-like font, AND is black text on a white background! ahh..). To continue normally, type 'bye'. The commands to boot a specific OS from a given place vary from mac to mac, but are well documented at linuxppc.org and other places.

That Forth interpreter i mentioned, by the way, is a complete implementation of ANSI Forth. You mostly see it used to write device drivers and LILO-esque boot loaders (yaboot, for example), although you can run pretty much anything you want in it-- freakily enough, a couple years ago some people went and wrote a complete Pong game in Forth that ran inside of Open Firmware on power macs, and as a result won an award from the MacHack conference. Yes, that's right; if you have a PCI macintosh sitting around, you can play Pong on it even if you have no hard or disk drives! I'm sure that now that you know that, you're going to all throw out all your x86 hardware and rush out to buy Power Mac G4s so that you can play Pong without an OS installed.

Open Firmware is defined by IEEE standard 1275-1994, and is part of the CHRP/PReP standard. It is also the only firmware standard in existence to have its own theme song.

For details on what exactly Open Firmware is doing, read ccunning's w/u under How an Operating System Boots. For an overview of how to use it, read The Custodian below. To see how this technology's mirror on the Sun side of things currently works, see Open Boot PROM-- note though that while some of that information may apply here and some vice versa, i'm not sure to what extent.

Quick note in response to The Custodian's writeup: if you do mess something up, be aware you can erase everything in PRAM by starting up with command-option-P-R held down, or by removing the battery on the motherboard for a few minutes.