The Windows Seat – Day 0: BIOS
On the 28th of December, I announced my week long trial of Windows Server 2008 Enterprise, a departure from my daily use of Linux (including at work) for the past several years.
The very first difference I’d like to bring up is the system hardware itself. I currently run two PCs that are custom built by me and nearly identical, with the exception of the hard drive capacity. Both run a Gigabyte GA-965GM-S2, revision 1 motherboard with Intel Core 2 Duo E6600 Processor and 4GB of DDR RAM. My home computer has an nVidia GeForce 7300 GS PCI-e card on a 17″ Dell CRT monitor. My work PC is using the integrated Intel G965 chipset and is attached to a 22″ BENQ wide screen TFT.
It’s important to note that both systems use the same motherboard, and more specifically, the same BIOS, Gigabyte’s F5. When I first put in the Windows Server 2008 installer, I immediately got a blue screen of death indicating to me that my BIOS was out-of-date and to contact the vendor for a newer one. The alleged culprit was non-compliance with ACPI.
I did manage to update both BIOSes. My home PC was updated with a formatted USB Key and my work by some complex juggling of LVM to make room for a FAT32 formatted bootable partition that the motherboard’s flash utility could recognize. I owe a huge debt to these guys for clear and simple instructions on how to flash my BIOS in a non-standard way.
The biggest thing that strikes me about the Windows/Linux split is that Linux doesn’t ever assume anything about hardware. Sure, it does assume that you’re on the right architecture and that you have some way to give the PC information. It doesn’t, however, expect you to have a certain BIOS version, a certain graphics card, a special TPM module or the like.
Linux developers learn to deal with the quirks of each system. The odds are that my system really WAS not compliant with ACPI but Linux never complained. It didn’t deny me permission to install until it was.
This isn’t entirely a win for Linux though. I have to wonder how much crappy code is in Linux dealing with exactly this kind of thing? How long has suspend/resume, for instance, been hindered by tossing the expectation that things will “work properly”? How many people might be dealing with hardware bugs, and complaining to Canonical (or their vendor of choice) when things don’t wake from sleep when it’s actually a crappy (as in, non-standard complaint) BIOS from a motherboard vendor?
Having a minimum required BIOS version is a new one for me, and this even before my first full day with Windows. This is really going to be interesting.