I don't have time to read all the other posts. The "mind map" looks like a good way to organise your thoughts before filling in the detail of the initial post, and is already more complete.
Some thoughts I took right away from the first post:-
BIOS (it's death is snowballing) better to say "Firmware" since BIOS, EFI and OFW are all essentially Bootstrap code in a ROM. (More likely EEPROM, but that's not so important)
The purpose of the BIOS (Basic Input Output System) *was* to enable the ROM BASIC to interface with the Serial teletype, tape and optional floppy disk drive and associated IBM Disk Operating System. (DOS) It provided interrupt based APIs for accessing the Parallel communications port(s), serial port(s) keyboard and teletype / text only VDU (including it's "bell", usually implemented as a monotone "beeper") on an IBM XT Personal Computer.
It had no other functionality, and knew nothing about hard disks, USB, LAN etc. All of which where yet to be invented, or some even conceived when the BIOS and it's built in IBM BASIC A was created.
PC Clones implemented the BIOS, but (for copyright reasons) where not allowed to re-implement the BASIC, leaving plenty of room in the ROM for other code. And Microsoft, (who wrote, and owned IBM BASIC A) started shipping software versions of the firmware BASIC A as GW-BASIC in later DOS versions, especially for non-IBM OEM clone manufacturers.
All the other functions available in modern BIOS are outside the original specification, and definition by name. We still call modern PC firmware a BIOS for historical reasons only. It *is* now, primarily a bootstrap firmware and low level configuration utility.
A CMOS setup screen is completely alien to the very term "BIOS" in fact. Since XT PCs where usually configured (IRQs and DMA lines for Serial and Parallel ports etc.) via DIP switches or Jumpers. There was no CMOS.
In fact, the first IBM XT compatible "clone" I ever owned had an NVR, (Non-Volatile RAM, actually backed by a AA battery) and the OEM Microsoft DOS (version 3) which came with it included an NVR.COM tool which could be run from DOS in order to make those configurations... and this was highly praised as making this clone so much easier to work with than any other.
However, that only configured the NVR with boot code for a number of possible propitiatory "Rigid Disk" drives which where available as ISA cards, the Real Time Clock, and the initial colour and resolution for it's propitiatory "graphics adaptor". (true IBM PC XT cannot produce graphics, or colour)
The default (when ever the AA went flat) was bright yellow text on a black background at a resolution of 640 x 360 and 80 x 25 characters. That's how the A:> prompt looked, even without ANSI.SYS or any AUTOEXEC.BAT or CONFIG.SYS. Or the C:> prompt once you had plugged the hard disk card into the ISA slot, run the low-level format and partition from the NVR tool, rebooted from your DOS floppy run SYS C: and copied everything from A:\ to C:\.
The ATA standard, IDE and SCSI did not exist at the time. Most "Rigid Disk" devices where some form of miniaturisation of a Winchester Drive or TTL devices. (Large drums filled with plates which where inserted into a drive mechanism)
All the Parallel and Serial communication was still controlled with DIP switches.
Also...
The ordering of Bootstrap, Boot loader, BIOS, MBR, Boot Manager, Kernel etc are all completely wrong, (in relation to the boot process) and you can't explain what one does without referencing the functions provided by previous one. So it's well worth getting those in the right order.
The MBR it's self is not part of any standard except MS DOS partitioning, and is *gone* in many modern OS. How Drives are partitioned is not formally standardised. So OS like BeOS, Vista/Win7, Mac OS-X and others can use MBR partitioning, or another form. More native to their own internal operation.
It is not "standard" to partition devices. As far as DOS was concerned, C:\ was a device, not a partition, and corruptions of the "BIOS" made partitioning possible as ATA and SCSI standards became popular. Any true BIOS, following IBMs original specification to any extent, will only read the "boot sector", and run it.
All that *is* standard is 512 bytes (more is common, but *not* standard) read from the first sector of the first reboot persistent memory device registered. (whether that is an 8" 120K single sided single density floppy or a 2TB solid state device) The location in memory to which it is loaded, and the address the instruction pointer is jumped to in order to execute it. (But *some* OEMs have to buck even that. lol)
And... I had to look up what the heck a UFD was. The answer I got was "an overloaded acronym".
Edited by bobsobol, 30 May 2011 - 04:12 PM.