A Bootup Nightmare

Prologue

I've been going through an awful lot of hardware and software trouble lately, even for me. Most folks have problems along these lines every so often, but I seem to have such problems more frequently than others by at least an order of magnitude. In just the last few weeks, I've largely rebuilt my desktop system and wrestled with some nasty audio difficulties that make little to no sense. The last thing I needed, mind you, was yet another round of problems. But as I've asked before, it wouldn't be my life if it weren't Hell, would it?

A Hard Drive Heads South

It all started while I was trying to diagnose my audio difficulties. I got up one morning and found my computer sitting at a VGA-mode screen, waiting for my input. GoBack, which is normally an absolute life saver and all around must-have utility, was making a fuss about something. To be more specific, the error message on my screen said something to the effect that GoBack had rebooted the computer because it detected problems with the disk. It then said that it would uninstall itself, and that I should examine my drives most thoroughly with scandisk before reinstalling.

Given that the OK button was my only choice—note to developers: I hate pressing the OK button in circumstances that are clearly far from OK!—I pressed it. GoBack seemed to uninstall itself, and I was then able to boot into both of my current operating systems (Windows 98 and Windows XP). Unfortunately, however, GoBack hadn't removed itself completely. It had removed itself from the drive with which it had detected problems, but it had not removed itself from the other hard drive. Because I was planning to run a bunch of diagnostics, some of which can't tolerate having GoBack around, I needed to remove it from the other drive as well.

Thus, I fired up the Add/Remove Programs applet in Control Panel, selected GoBack, and pressed the Change/Remove button. The resulting uninstaller warned me that my computer would reboot during this process, and when I clicked the OK button I was then greeted with the second nasty error of the day. It said that my C: drive was "operating in MS-DOS mode" (whatever that means), and that GoBack could not be uninstalled because of it. I would first have to disable GoBack, it said, in order to continue the uninstall process. As an aside, one wonders: will we ever be free of MS-DOS?

Still, disabling GoBack is no big deal. I right-clicked the GoBack icon in my system tray, brought up the options menu, and pressed the button to disable GoBack. I was then greeted with the third nasty error of the day. It said that it could not communicate with the GoBack device driver. Oddly enough, I could browse the GoBack history for the hard drive on which it was still working, and it even offered me options to revert my drive, restore old versions of files, and so forth. It sure seemed to me like the GoBack device driver was working.

After fussing around for a while longer, I eventually gave up and called support. After wading through voice menus, and being reissued a technical support identifier, I got to speak with a person. He couldn't explain why GoBack was being so stubborn, and he couldn't explain why the hard drive from which it was removed was operating in MS-DOS mode. In fact, nothing the technician did helped. He eventually gave up and transferred me to someone else, whom I presume to be higher on the technical support food-chain at Roxio.

That person couldn't explain what I was seeing either, but he did have a fix for my problem. He sent me a little program named "GB_Prog.exe" via email, and he instructed me to run it with the '/u' switch from a bootable floppy. For those souls who actually recognize that file name, yes, GoBack does install a program by that name in its directory, but the file I was sent by technical support was different. I don't know what the differences are, but I've stuck with the presumed newer version sent specifically to me.

At any rate, I copied the utility to a bootable floppy I had lying around, and I ran the program in DOS. Sure enough, the GB_Prog.exe utility removed GoBack from my drives without any fuss. I was then able to boot into my operating systems and remove the remaining GoBack program files successfully using the standard Control Panel applet. Needless to say, I filed that utility away for future use. Foreshadowing: sign of quality films and literature everywhere.

To wrap up this part of the story, I ran scandisk in its most thorough mode on all my drives. It detected a number of bad clusters, and it repaired all the various problems. This took hours and hours, mind you, as my hard drives are pretty big (physical disk zero was 40 GB while physical disk one was 80 GB). Still, it was worth the time. I don't know why the first hard drive in the system was having problems, but these things just happen sometimes. Once all the scans came back with a clean bill of health, I reinstalled GoBack, and I figured that would be the end of it.

Replacing It

Boy was I wrong. It wasn't even a week later when I was standing in my office hearing a beeping noise from my computer, which hadn't been doing anything but idling. I looked in its direction, and I was dismayed to see that it was rebooting without any prompting from me. My first thought was that perhaps the power had gone out and my uninterruptible power supply had failed to work. You can imagine my lack of relief when I was greeted with a now familiar error message from GoBack. Yes, you guessed it: GoBack had rebooted the machine because it detected errors with the hard drive.

At least by now the drill was a familiar one. I let GoBack do its thing, I used the utility I had been sent to remove GoBack from my drives, and I was soon able to remove its program files as well. I then turned my attention (again) to diagnosing my hard drives. Sure enough, scandisk found more errors on the first drive in the system, a 40 GB Maxtor hard drive which was a replacement direct from the manufacturer roughly nine months ago. As I've said elsewhere, I don't have time for this crap right now. I'm in the middle of writing the dissertation for my Ph.D., and I have neither the time nor the energy to fuss with this stuff. I need a system that works.

So, I decided simply to replace the offending drive and deal with the manufacturer later. I ran out to my local Fry's Electronics and picked up a 60 GB replacement drive from Maxtor, which just happened to be on sale and had a manufacturer's rebate available to boot. My total cost for that drive will be just barely over $60, which means we've almost hit the dollar-per-gigabyte price point. Isn't that nuts? I can still remember paying over $500 for a 40 MB hard drive some years ago. I can also remember thinking that I would never need any more space than that. My how time flies.

Anyway, I got the drive home, and I hooked it up to my system. I own a copy of Drive Image, and believe me when I say that if you need that program, you need it bad. Drive Image lets you backup and restore entire partitions quickly and reliably. It's a great way to make a complete system backup if you can afford a large hard drive dedicated to storing the image files. With all the problems I've had, I might consider doing just that in the future. I keep my copy of Drive Image around for the disk-to-disk copy feature, however, which allows you to duplicate a hard drive with very little fuss.

I told Drive Image to do its thing, expanding all the partitions on the flaky 40 GB drive to the new 60 GB drive. The first partition copied without any problems. The second partition made it to the 99% complete point and then failed with an error message about a "bad CRC". Oops. I really had to fight that flaky hard drive to get the process to work, but on the third or fourth attempt with Drive Image, I eventually got all the data transferred successfully. I then removed the bad drive from my system, plugged the new drive into its place, and started the computer again.

I was pleased to see that everything had gone well. My Windows 98 installation had been copied intact, as had my other two partitions on that drive to the best of my ability to discern. I tested the system a bit, fussed around with some programs on the drive to make sure they were working, and set the old drive aside as something I could deal with later. What really mattered was that I had managed to get out from under that flaky drive before it up and died on me.

GoBack Screws the Pooch

Only one thing remained before I would be back up and running, namely, I needed to get GoBack reinstalled and protecting my system. Since it had been a while since my hard drives had been defragmented, and since I had done a lot of fussing around with the system of late, I decided to take the time to get the drives in good shape before I reinstalled GoBack. The only bad thing about GoBack, you see, is that you really need to disable it before you defragment your hard drives, which makes it essentially impossible to automate that task.

So, I fired up my defragmentation utility, Diskeeper, and told it to defragment all my drives. I let this process run overnight, as it can take quite a while, and when I got up this morning I checked out my drives. Sure enough, Diskeeper had finished during the night, and my drives were now entirely free of fragmented files. That portion of the process was uneventful. I wish I could say the same of other maintenance chores.

The time to reinstall GoBack was at hand. For those who have a dual-boot setup, you might wonder (as I once did): how do you get GoBack installed properly, so that it is accessible from under both operating systems? The answer is to install it in the following fashion:

  1. Install GoBack first under Windows 98.
  2. After the system restarts, and everything checks out, disable GoBack under Windows 98.
  3. Let the system restart again and boot into Windows 98 and do not re-enable GoBack.
  4. If everything is fine, then reboot into Windows XP and install GoBack there as well, taking care to specify exactly the same location(s) for the GoBack history file(s).

After you've installed it under Windows XP, GoBack will again be working under Windows 98 as well. The GoBack software will be accessible from both operating systems, and all the history data will be stored properly. Note well: GoBack will work in this fashion only with the Microsoft dual-boot mechanism. That is, GoBack cannot install and run properly with third-party boot managers like Boot Magic, OS Commander, and so forth. Perhaps it will work with any third-party solution that uses the same approach as Microsoft, but I have no specific knowledge of any such products.

This is exactly the process I followed, or rather tried to follow. I installed GoBack under Windows 98, and I let it reboot my system. When my computer restarted and I elected to boot into Windows 98, however, I got a very scary message: "invalid system disk". That's not good. Still, I figured it could be a glitch, so I tried again. Nope, no joy. It's not a glitch. Well, maybe I can get into Windows XP to fix the problem? I tried rebooting again, selecting Windows XP instead. Nope, still no joy. I'm getting "invalid system disk" messages no matter which one I try to use. This really isn't good.

I did the only thing I could think to do: I hit the spacebar at startup to access the GoBack options menu. There was no useful history available to revert my drives, so I told GoBack to disable itself completely. I figured that maybe if I could just get GoBack out of the way, I could get into Windows 98 or Windows XP and uninstall it completely. After it disabled itself, I tried booting into Windows 98, but I was hit with the same error. Fortunately, and surprisingly, when I tried to boot into Windows XP, I got to a screen that said Windows XP had previously failed to start. It gave me a number of options, and I elected to start up with the last known good configuration. That worked. I could run Windows XP.

So what was I to do? I thought of several things. I could just live with the situation, which would really suck given that I had only recently gotten a stable, dual-boot system up and running. Alternately, I could try installing GoBack under Windows XP to see if that would somehow fix the problem under Windows 98. Doing so, of course, would presumably risk screwing up Windows XP as well. Neither of these seemed very attractive.

The Way Out

It was then I remembered that it used to be possible under Windows NT to repair the boot sector. That is, if Windows 98, Windows 95, or any other OS had overwritten the boot sector with its own startup code, you could always use the repair feature of the Windows NT setup program to fix that. So, I had an idea. I figured I could use the old SYS.COM utility to transfer the Windows 98 system files from a bootable floppy to my hard drive. That should let me boot into Windows 98. I could then use the repair facility of the Windows XP setup program to fix the bootup process, and I would be good to go.

I quickly booted to floppy and used the SYS.COM utility. Sure enough, when I then rebooted my PC, it went directly into Windows 98. It didn't fuss at me about any "invalid system disk" or anything like that. It just worked. Feeling pretty pleased with myself, I dug out one of my Windows XP installation CDs, placed it in my DVD drive, rebooted the system, and booted to the Windows XP CD-ROM.

Sure enough, I got to the Windows XP repair facility, and I was surprised to find that Microsoft has made some improvements. In the past, Windows NT simply gave you some checkboxes for a few common repair tasks. Windows XP provides a full-blown character mode console application for repairing a non-functional system. That's neat. In pretty short order, I found what looked like exactly the command I needed. The "FIXBOOT" command would write Windows XP startup code to the boot sector for me, re-enabling the boot loader. I used it, and sure enough I was soon pleased to see my regular boot menu in place again.

Unfortunately, when I tried to boot into Windows 98 I got the same error as before. Apparently, Windows XP does not build whatever files are relevant to running the previous operating system with the "FIXBOOT" command. After looking through the help on the Microsoft web site for a while, I concluded that, in fact, none of the Windows XP repair facilities were going to help me. It sure seemed like I was stuck.

Thus, I decided to start researching exactly how the Windows XP bootup cycle works, and I discovered relatively quickly that the most likely cause of my problem was that the BOOTSECT.DOS file had become corrupt. When you install Windows XP from another operating system, it saves the old boot sector in a file named BOOTSECT.DOS, which is typically given both the hidden and system file attributes to keep it safe from prying eyes. If my copy of that file had become corrupted, then that would explain why my system couldn't boot Windows 98 but could boot Windows XP.

I then remembered that I had done exactly the same sort of installation on our house server. That is, our house server had been running Windows 98 when I installed Windows XP. So, I checked its hard drive and was pleased to find that it had a BOOTSECT.DOS file available. Unfortunately, copying that file to the root directory of my desktop machine's hard drive only made the problem worse. I no longer got the "invalid system disk" error when choosing to boot into Windows 98; rather, my system would lock hard immediately. The BOOTSECT.DOS file I had on my laptop didn't work either.

Thus, I set about trying to find out how I might obtain a good copy of BOOTSECT.DOS. Along the way, I found a utility that's worth mentioning. The BootPart utility provides a number of handy features, but perhaps its best feature allows you to insert new entries into the boot menu for Windows NT/XP. It will write a proper boot sector to your hard disk and reference that file in the entry it generates in the boot menu. That worked for me, incidentally, even though it was somewhat less than optimal.

I say it was less than optimal because it generated a file named BOOTSECT.W95, and it added an entry to the BOOT.INI file (i.e., the file that controls the boot menu) that used the /Win95 startup switch. I don't know what the /Win95 startup switch does, and I don't know if that boot sector it generated was really for Windows 95 or Windows 98. I was quite relieved to see that I had at least one way out of my troubles, but what I really wanted was to get back to what I had enjoyed prior to GoBack hosing my system. I pressed onward.

Eventually, I discovered a way to make a new BOOTSECT.DOS file. The process is pretty simple, though it does require a real trip to "bad old days" of MS-DOS. Essentially, you use the SYS.COM utility to make the C: drive bootable for Windows 98. You then use a script for the practically-archaic DEBUG.EXE utility to load the boot sector into memory and dump it to a file. You may then use the repair feature of the Windows XP setup utility to restore the boot loader to a functional state, and both operating systems will be available as normal. For those interested in the contents of the script, it is as follows:

L 100 2 0 1
N C:\BOOTSECT.DOS
R BX
0
R CX
200
W
Q

You save that to some file, say, RUN.SCR, and then invoke the DEBUG.EXE utility on that file using input redirection; i.e., use a command line like "DEBUG.EXE <RUN.SCR". There are a couple of tricks to getting the script to run correctly that are also worth mentioning. First, if you already have a BOOTSECT.DOS file, you may want to delete it or at least remove the system and hidden attributes so the debug script will be able to write successfully to that filename. Second, if the boot sector you want is somewhere other than the C: drive, then you should change the "2" in the first line of the script. The numbers correspond to drive letters; e.g., 0 = A:, 1 = B:, 2 = C:, and so forth.

Conclusion

Once I had created a proper BOOTSECT.DOS file, I was able to use the old BOOT.INI file that had originally been in place prior to using the BootPart utility. My system was able to boot into both Windows 98 and Windows XP without any problems. I still don't understand why taking the BOOTSECT.DOS file from other computers didn't work, but I guess I don't really care. I now know how to generate a new one if needed. I've since been able to reinstall GoBack successfully. I don't know why it hosed my system the first time I tried today, but it seems to be working now. I have great hope that I will not be seeing any of those awful GoBack-has-rebooted-your-computer messages again any time soon.

The one truly positive outcome of this whole sordid affair is that I now realize that it is possible to install Windows 98 after Windows XP and make it work just fine. I wish I had known about that when I first installed Windows XP all those months ago. It would have saved me a great deal of effort, both then and now. For those who don't get the connection, the steps to install Windows 98 after Windows XP are as follows.

  1. Be sure you can boot the Windows XP setup CD or be sure to have Windows XP startup disks on hand. It is crucial to make sure that you can access the Windows XP repair console before going any further.
  2. Install Windows 98 (or Windows 95 or whatever other OS you wish to install that will screw up the boot record). Don't be alarmed when you have no ability to get back into Windows XP. This is exactly how it should work.
  3. Boot into your new operating system and use the method I've described above to create a proper BOOTSECT.DOS file.
  4. Boot to the Windows XP setup CD or the Windows XP setup disks and get into the repair console. Once there, type FIXBOOT and press the enter key.
  5. When your system restarts, you will now boot directly into Windows XP, or you'll have your old boot menu back if you had one previously.
  6. Edit the BOOT.INI file and add a line for the new operating system. For the standard BOOTSECT.DOS file, the line would be: C:\="My New Operating System". Whatever text you include between the quotes will be displayed on the boot menu.

Strictly speaking, you can use this trick to add multiple options to the boot menu. The trick to getting more than one other operating system to run is simply to specify which boot sector file to use. For example, if you want to run MS-DOS 6.22 and Windows 98 in addition to Windows XP, you could make a BOOTSECT.622 file and a BOOTSECT.W98 file. The lines you would then add to the BOOT.INI file would be C:\BOOTSECT.622="MS-DOS 6.22" and C:\BOOTSECT.W98="Windows 98" respectively. That's a pretty neat trick, eh?

I'm never happy when these kinds of rotten issues intrude on my day. The whole bootup nightmare today cost me roughly five hours of my time. That's five hours I wasn't working on my dissertation, spending time with my wife, playing games, or doing pretty much anything I want to do. But I have to say I'm pretty happy with the things I've learned. At least I know how to repair the bootup process should things go wrong again. Hopefully, this will be of use to others as well. I know many people have wondered how to install Windows 98 after Windows XP, and my experience demonstrates exactly how it is possible to do that.

11/03/2002