Dead disk walking
Windows XP was the first version of Windows that didn’t ship with boot floppies. It only shipped with a CD.
Yes, you could download a tool that would build a few boot floppies for you if your computer didn’t support El-Torito boot for some reason, but most computers that ran XP happily at the time that we shipped also supported CD boot.
So even as XP launched in late 2001, the writing was on the wall for the floppy diskette. In the weeks after we shipped XP, Bill Gates made an appearance on the TV sitcom Frasier. Early in the episode, a caller asks about whether they need diskettes to install Windows XP. For those of us on the team, it was amusing. Unfortunately, the reality was that behind the scenes, there were some issues with customers whose systems didn’t boot from CD, or didn’t boot properly from CD. We made it through those birthing pains, though.
When I had started at Microsoft in 1997, a boot floppy was critical to setting up a new machine. No longer, at least in business environments. Since RIS could start with a completely blank machine, and you could now boot a system to WinPE through a CD, there were two more nails in the floppy diskette. (RIS, or Remote Installation Services, had originally started as “remote boot”, but that had fallen on the cutting room floor during Windows 2000 development for… reasons.)
It was a bit amusing, and a bit frustrating, to watch OEMs early on with Windows XP. While customers often said, “I want a legacy free system”, they didn’t know what that really meant. When a Windows machine has problems, you hook it up to a debugger on another computer. When Windows XP shipped, a serial cable connection was the common vector to do so. The serial port, parallel port, and floppy disk controller often came integrated together in the computer. We saw some OEMs not include a parallel port, and not include a floppy diskette, but still include a serial port, for when you needed to debug the computer. Often, to make the system seem more legacy free than it actually was, a cache of legacy ports was tucked inside the computer’s case, so the PC could still appear legacy-free.
PCs often needed BIOS updates, too – and even when Windows XP shipped with them, these PCs would still usually boot to a DOS diskette in order to update the BIOS. When he was at Microsoft, Bill Gates would, go to a family cabin in western Washington, and read a selection of research papers written by Microsoft employees, and vetted by his executive assistant. I wrote one think week paper that was read, and was involved in another. The one a colleague wrote but included me on, involved booting an entire Windows install from a USB Flash Drive (UFD) and running Windows from that flash drive. I was a contributor to that paper at least in name, though I didn’t think the idea was terribly viable. Turns out Bill concurred. His feedback was that the idea was interesting, but needed more thought. Windows To Go (WTG), a feature of Windows 8-10, did deliver the ability to boot the entire OS from a flash drive (a decade after my colleague had proposed it), although WTG has already gone off into the sunset, likely because few customers used it, or used it successfully.
When I began in the Windows division, UFDs were just beginning to catch on. 32MB, 64MB or less drives were around, sure, but still not commonplace, and not cheap. In early 2002, the idea of USB booting began circling around the Web, and I talked with a few developers about how to make it work with Windows – particularly for WinPE, as it would give us something with more flexibility than a CD, at least in the long run. Unfortunately, there wasn’t a good understanding of what would need to happen for it to work, nor was the UFD hardware really there yet. I tabled the idea for a year, but came back to it every once in a while, trying to research the missing parts.
I found that while many computers supported boot from USB, they only supported remodel storage devices like USB-attached floppy drives (a ramshackle device that had come about, and largely survived because we were unable to make key changes to Windows that would have and should have killed it).
I started working with a couple of people around Microsoft in Windows Core OS, to try and glue the pieces together. I was able to find a PC that would try to boot from the UFD, then worked with a developer and one of our architects to get a disk formatted correctly (Windows didn’t like to format UFDs as bootable at that time, explicitly because they were removable drives). Finally, I worked with another developer within the USB team, who helped figure out some problems in the USB stack when we hit a few issues booting it. By early 2003, we had a pretty reliable prototype that worked on my Motion Computing Tablet PC. This was one of the more fun features I ever worked on at Microsoft, and I’d picked it up on a whim.
You could mention the idea of USB flash drive boot to people and they just got it. We were killing the floppy diskette. Well, eventually, anyway. This was going to be the new way to boot and repair a PC. Evangelists, OEM representatives, and UFD vendors came out of the woodwork to try and help get the effort tested and working. One device manufacturer gave me a stash of 128MB and even larger drives – very expensive at the time – to prepare and hand out to key OEMs so they could enable and test it in their systems. So we had a vehicle to test, and this effort also gave that supportive UFD vendor some face time with the OEMs. Though we never were able to get UFD booting nailed down as an official feature until after I left, in Windows Vista, OEMs used it before then, and it began to go mainstream. Today, you’d be hard pressed to find a modern PC that can’t boot from UFD.
If there was one commonly requested design change request that I wish I could have accommodated but couldn’t, it was F6 from UFD. Let me explain.
When you install Windows, it attempts to use the drivers it shipped with on the CD to put Windows down on the disk, or to connect over RIS to start setup. This idea worked alright, but it had one problem. This collection of drivers didn’t age well – if new devices shipped, there was no way to update them easily, since Windows was so reliant on shiny media distributed with computers or sold in stores years after the core shipped and the original CD had been mastered.
Not long after Windows XP shipped, a new, much faster class of network interface cards (NICs) began shipping. None of these drivers were “in the box” (on the CD). Even worse, a whole new class of mass storage devices (MSDs), called Serial ATA began shipping on high-end PCs, then went rapidly down market. While Windows needed special drivers to install on some high-end storage controllers before, this broad-scale mayhem was new. All of a sudden customers didn’t have drivers for the storage devices that were shipping on massive numbers of new PCs. Windows had a hack fix for this, but it was gross, particularly when it comes to consumer friendliness.
Early on during Windows XP setup, it asks you to press F6 if you have special NIC or MSD drivers to install. (Remember, a lot of these scenarios had been more Windows Server-centric through the life of NT prior to XP.) You have to press the F6 keyboard on your PC to tell it. If it can’t find the NIC and you’re installing from CD, you’ll be okay through setup – but then you have no way to add new drivers or connect to Windows Update. If you were installing through RIS and you had no appropriate NIC driver, setup would fail. Similarly, if you had no driver for the MSD on your PC, it wouldn’t find a HDD where it could put down Windows – so it would fail too.
Here’s where it gets ugly. As I mentioned, we were entering an era where OEMs wanted to ship, and often were shipping, legacy-free PCs. These computers often had no floppy diskette – which was the only place we could look for F6 drivers. As a result, we got a series of design change requests (DCRs) to make it so Windows setup could search any attached UFD for drivers as well.
While this sounds easy, it isn’t. This meant having to add Windows USB code into the Windows loader so it could search for UFDs very early on during boot. While we could do this for a full release of Windows, it wasn’t something that we could easily do in a service pack – and all of this came to a head in 2002, long after we had shipped Windows XP, and while we were all heads down on 1,001 other tasks, including the Windows Security push, and service packs that were about shoring up security, not introducing new features that could harm the integrity of the core of the OS if done wrong.
As a result, an OEM requested the DCR to add UFD F6 support. I worked with the kernel team, and I asked twice… but we had to say no – the risk of breaking a key part of Windows setup was just considered too great for a service pack. Later, a very large bank requested it as well. We had to say no then as well. In a twist of fate, I would later work with one of the people who had triggered that request from the bank, and he has never let me live it down.
Not adding UFD F6 support was, I believe, a mistake. I should have pushed harder, and we should have bitten the bullet in testing it. As a result of us not doing it, a cottage industry of USB floppy diskette drives continued for easily a decade longer than it should have.
Along with USB boot support for WinPE, the much maligned Windows Vista also finally brought USB F6 support.