There's this thing called the BIOS - standard for "Basic Input/Output System" or something like that. It scans all the devices connected to the computer and, among other things, asks "Do you have any hard drives I should be aware of?" And if it does, it adds it to the Big Hard Drive List. Now, most of the time the only stuff it finds are the IDE hard drives connected to the motherboard, because that's the only thing most people have. However, there's some other interesting stuff it can detect sometimes. For example, this is how boot-from-CD works - it detects a bootable CD and says "uh, yeah! I'm a hard drive! Boot from me!" and the BIOS says "Okay!" and it does.
This is also how things like bootable external hard drives, bootable network cards, etc. function. This is also how SCSI functions. My SCSI card says "Hi! I'm a hard drive! Boot from me!" and BIOS says "Okay!" and does so.
Well, obviously booting from a SCSI drive and booting from Ethernet or a CD are quite different things, so the BIOS has a standard interface that the thing-masquerading-as-a-hard-drive can play with. Which it does, and things boot and load as normal, and everyone's happy.
However, the BIOS is also deathly slow. It works fine for the first few seconds of booting, but you really don't want to be running your drives through BIOS. Plus you might not be able to *access* all your drives if you're doing it directly through BIOS. So any modern OS will reach a point (usually pretty early in the booting process) where it tells the BIOS "okay, I'm taking over", installs its own drivers, and runs through them instead.
Which works flawlessly, usually.
However, I'm trying to install a new SCSI card right now. So it reaches that point, says "okay, I'm taking over", and realizes it DOESN'T HAVE THE RIGHT DRIVER.
So *now* what do I do?
Obviously I can't have the card in there until I've installed the driver. But I can't install the driver because it refuses to install unless - of course - the card is installed!
Does this sound like bad design to anyone else? >_