Tangled in the Threads

Jon Udell, December 05, 2000

OS merry-go-round

Recovering from a botched upgrade

An upgrade NT 4 to Windows 2000 goes wrong, prompting detours through Windows 95/98 and Linux

Once upon a time, I was among the first to upgrade to every new Microsoft operating system. I ran every release candidate for DOS 5, Windows 3.0, Windows 3.1, and Windows for Workgroups. Why? It was my job to report on these developments. But also, beta versions of these systems were -- at least in my experience -- remarkably trouble-free. By the time Windows 95 and Windows NT rolled around, though, I found myself less and less likely to emerge unscathed from an installation of a beta version of a Microsoft OS.

The reason, I think, is not that these newer operating systems are less reliable than their predecessors, or less savvy about detecting and adapting themselves to hardware. But the operating systems have grown much more complex, and the range of hardware we ask them to support has expanded dramatically. Over the years, I've become increasingly averse to tampering with a stable configuration, once I've achieved it on a particular machine.

So it was with a bit of trepidation that I approached an upgrade from NT 4 Server to Windows 2000 Server on a dual-processor PC here in my home lab. Why do the upgrade? I wanted to test the .NET framework, and VisualStudio.NET. Because VisualStudio.NET is plenty rough around the edges, Microsoft advises that you do this testing on a sacrificial machine.

My system wasn't specifically listed on the Win2K compatibility page, but I had previously installed a Win2K beta on it (though not the final product) so I took a deep breath, popped in the CD, and went for it. The first phase went smoothly, but after the first reboot I was dead in the water. Apparently this box, with its 1997-vintage motherboard and AMI BIOS, is allergic to the final version of Win 2K, thus proving the rule: "If it's not specifically listed on the hardware compatibility page, don't upgrade."

Well, nothing ventured, nothing lost, I figured. Wrong. Because I was lulled into a false sense of security by the memory of Win 2K beta running on the box, I'd skipped too lightly over the screen advising that earlier OSs, including NT, would not be recoverable. Indeed, the NT 4 boot entries showed up in the list, but selecting them led to the same BIOS crash as in Win 2K.

OK, time for a fresh installation of NT 4, then. No big deal, this is mainly a sacrificial test machine and although it has data I care about, there are no apps that would be painful to reinstall. So I popped in the NT 4 CD and...oops. To NT 4, the primary IDE disk looks like it only has "damaged or unformatted" partitions. Excuse me? Those are FAT and NTFS partitions, and I really don't want to reformat them.

Grumble. Now I'm having a full-blown Jerry Pournelle experience. Frankly, that's the kind of thing I'd rather wish on Jerry than myself. For me, this stuff isn't nearly as much fun as it used to be. But, nowhere to go but forward. Or rather, given that I wasn't in the mood to attempt a BIOS upgrade, sideways.

I didn't really believe that "damaged or unformatted partition" message, so I booted to good old DOS. Sure enough, there were the FAT partions C: and D:, though of course DOS didn't see the NTFS partition. My data was still there. What OS would I used to get at it? Since it was obvious my day was shot anyway, I decided to try out two that I'd never used: Windows 98, and the new Red Hat Linux 7.

Late to the Win98 party

It may seem odd that I'd never used Win98. But in fact, there never was a compelling reason. It would use more memory on my older laptop than Win95 does, without adding any particular benefit that I need. For desktops, I've happily used NT 4 for some time now. So when Win98 came along, I just said no. But recently, I'd added a USB printer to the mix, which Win95 and NT 4 wouldn't support, Win 2K might support, but Win 98 almost certainly would support.

Unlike NT 4, Win 2K, and Linux, the Win 95 and 98 CDs I had on hand weren't bootable. So the first hurdle was to gain access, from a bootable DOS floppy, to the CD-ROM, in order to run one of the Win 9x setup programs. I searched the web for a real-mode DOS driver for ATAPI CD-ROM drives, and then took a trip down memory lane. First, I edited config.sys to load the ATAPI driver. That worked, but where was the CD-ROM's drive letter? Oh yeah, now it all came back. I needed to name a device with a command-line switch to the CD-ROM driver, then match that name in the invocation of MSCDEX.EXE from autoexec.bat. Such is the creaky foundation upon which rests what is still the world's dominant desktop OS, Windows 9.x.

Because my Win 98 CD was upgrade-only, I had to establish Win 95 as a base camp, then hike upward from there. Not surprisingly, Win 95 failed to detect various things -- monitor, netcard, USB printer -- beyond its ken. So I only paused briefly there, before ascending (I use the word loosely) to Win 98. It managed fine with the monitor and netcard, but not the printer, an HP PhotoSmart P1100. Not surprising, I figured, since this printer has its own baroque and proprietary setup procedure. I popped in that CD, fired up the setup program, and was dumbfounded to see the message:

This installation method not supported for Windows 98. Please refer to the setup poster and follow the instructions in the precise order shown there.

That would be the setup poster I'd thrown away, of course, after installing the HP software and printer driver for parallel-port mode on NT 4. But it was the "not supported for Windows 98" that really threw me for a loop. When I found the installation guide on the web and read it, sure enough, there were two paths. One, for Win95 and NT (what an unholy alliance!), instructs you to simply run setup.exe (as I had previously done). The other, for Windows 98, was, well, different. Here it is, and as Dave Barry likes to say, "I am not making this up":

For Windows 98 only

  1. Shut down Windows and turn off your computer.
  2. Leave the printer cable disconnected from the computer.
  3. Turn on your computer and allow Windows to start up.
  4. Whenever installing software be sure to temporarily end task on all non-essential programs running in the computer. Here is how:
    1. Press the key combination CTRL+ALT+DELETE, one time, to display the Close Programs Window.
    2. Select the program to be terminated.
      • Unless turned off on a more permanent basis, a terminated program will return when the computer is restarted.
      • Do not press CTRL+ALT+DELETE while on this screen except to restart Windows.
      • Do not select Explorer because it is Windows 98.
      • Be advised that on some computers it is entirely possible to terminate an otherwise nondescript program that will necessitate a restart of your computer. If such should occur simply start over and remember not to terminate that particular program again.
    3. Click End Task.
    4. Beginning with CTRL+ALT+DELETE repeat this section until only Explorer and possibly one or two other essential programs remain.
  5. Click Cancel to Exit the Close Programs Window.
  6. Insert the HP PhotoSmart CD in the CD-ROM drive.
  7. Reconnect the communications cable and power cord to the back of the printer to initiate the Plug and Play routine.
    1. With a USB installation, expect a response from the Plug and Play feature as evidenced by the New Hardware Found screen.
    2. With a parallel installation, the device manager will need to be updated. Here is how:
      1. Click Start
      2. Click Settings.
      3. Click Control Panel.
      4. Double-click System.
      5. Select Device Manager tab.
      6. Select Ports.
      7. Click refresh. Expect a response from the Plug-and -Play feature as evidenced by the New Hardware Found screen.
  8. On the Add New Hardware Wizard screen Click Next.
  9. Select Search for the best driver for your device (recommended), then click Next.
  10. Ensure that only the bottom check box, Specify a location, is selected. Ensure that all other check boxes are not selected.
  11. Click Browse.
  12. Look for and double-click the appropriate letter for the CD-ROM drive. Then double-click the folder, 98driver.
  13. Click OK.
  14. Click Next.
  15. Continue through the Wizard screens, clicking Next or Finish as appropriate.

I should add that 7a (parallel printer) didn't work at all. But 7b (USB printer) eventually did, once I searched for and destroyed the generic USB device that I somehow accidentally allowed Win 98 to detect, and fail to install software for. After several false starts, a moderately technical computer user (yours truly) was able to connect a printer to a computer. Sheesh. This is a consumer OS?

On to Red Hat Linux 7

Next, I broke open the Red Hat CD kit I'd picked up at Staple's for $30. (Finding the latest Red Hat Linux nestled comfortably among the Windows games and productivity apps at Staples is a testament to just how far Linux has come.) The CD booted up and delivered a really pleasant and competent installation experience. The graphical installer (Anaconda) clarifies a number of formerly obscure things. As advertised, RH Linux 7 is smarter about soundcard detection than predecessors. This was the first Linux install I've done that didn't require futzing with the audio. And it was the first I've done on a dual-processor machine -- no problems there either.

It was, all in all, an impressive showing. I've long believed that there exists, within the Linux community, the raw talent to adapt Linux convincingly to the needs of consumers who, for the most part, continue to find Win 9x an unmaintainable mess. Given Win 2K's appetite for RAM, and picky attitude toward older BIOSes, the creaky Win 9x platform will likely survive long after the advent of Whistler, the forthcoming consumerized version of Win 2K. Add to this the increasing sophistication of GNOME and applications written for it, and I can almost believe that Linux for the consumer desktop is more than just a pipedream.

Almost, but not quite. The one suboptimal result of the Linux install was the video driver. I'd forgotten to test at the 1024x768 resolution that I wanted to use. When I ran Xconfigurator the problem went from bad to worse: now my XF86Config file was completely broken, and X wouldn't start at all. No problem, it's "just" a simple text file, right? Well yes, but like every other Linux config file, XF86Config has its own syntax, its own set of non-obvious rules, and its own special-purpose parser. In the end, it was quicker to redo the install than to sort out the mess.

Several years ago, at the first Perl conference, Tim Bray (co-editor of the XML specification) brought down the house when he satirized the arcane and pathological syntaxes of Linux config files. "This," Tim concluded ruefully, "is horses**t." XML, he pointed out, is the right way to manage these kinds of rule-governed structured texts. Sadly, there's little evidence of movement in this direction. C'mon, penguin-heads, get with the program! You're so close now! But competing with Windows in the pretty face department isn't the whole ball game. Get the plumbing right too. How can a system based on structured text not aggressively exploit a wildly popular and completely open technology for sanely managing the stuff?


Jon Udell (http://udell.roninhouse.com/) was BYTE Magazine's executive editor for new media, the architect of the original www.byte.com, and author of BYTE's Web Project column. He's now an independent Web/Internet consultant, and is the author of Practical Internet Groupware, from O'Reilly and Associates. His recent BYTE.com columns are archived at http://www.byte.com/index/threads

Creative Commons License
This work is licensed under a Creative Commons License.