XP's Little-Known 'Rebuild' Command

There's an easy fix for "Missing HAL.DLL," "Invalid Boot.Ini," and several other fatal startup errors.

It usually takes a lot to stop XP in its tracks. Even in those rare cases when the operating system is badly damaged, you'll usually at least have the option of booting into the "Last Known Good" configuration, or to Safe Mode. But sometimes, especially after major hardware failures or part swaps (e.g. moving the operating system to a new hard drive), or after problems with dual- or multi-booting software, you may encounter seemingly intractable errors such as "Missing or corrupt HAL.DLL," "Invalid Boot.Ini," or "Windows could not start..."

These problems can seem hard to get past. For example, the first time I got a "Cannot find \Windows\System32\hal.dll" error message, I thought I'd be clever and replace the missing file via a simple Copy command from the Recovery Console. I booted the PC, switched to the \Windows\System32 folder, and there it was: The HAL.DLL was already there. It wasn't missing at all. Why couldn't the operating system find it?

I tried copying a fresh version of the file to \Windows\System32. No dice. I tried renaming it all uppercase and then all lowercase. Nothing. I put a copy in the root directory. No effect. I tried everything I could think of, but nothing worked.

Then--doh!--I stopped thrashing and did what I should have done initially: I dug into the Microsoft Knowledge Base and learned about XP's built-in Rebuild command. It can often easily fix "Missing HAL" and similar problems in just a minute or two. If you know about this command and how to use it, you can potentially save yourself hours and hours of manually reinstalling or rebuilding a failed operating system.

The Rebuild command--technically a software "switch" used with XP's Bootcfg tool--automatically searches a hard drive for valid startup information and files, letting you choose the correct ones. This has the effect of removing and repairing any references to whatever invalid, missing, or corrupt startup information was preventing normal booting.

As is true of so many technical topics, this one actually takes far longer to describe than to implement, so please don't be put off by any seeming complexity in this discussion. Once you know the process, it's actually quite straightforward and takes only a minute or two to run to completion.

For example, if you already have some knowledge of the commands involved, many "Missing or corrupt HAL.DLL," "Invalid Boot.Ini," or "Windows could not start..." problems can be fixed with these five shortcut steps:

* Boot from your XP Setup CD and enter the Recovery Console
* Run "Attrib -H -R -S" on the C:\Boot.ini file
* Delete the C:\Boot.ini file
* Run "Bootcfg /Rebuild"
* Run Fixboot

It really can be as simple as that!

But the first few times you try this repair, it makes sense to use the slightly longer but more certain "official" method, as outlined by Microsoft in a number of separate Knowledge Base articles. To save you time, we'll concatenate the instructions here.

Enter The Recovery Console

The safest, surest way to resolve problems such as "Missing or corrupt HAL.DLL," "Invalid Boot.Ini," or "Windows could not start..." is to boot the PC from an XP Setup CD and use the pristine, uncorrupted files and tools there to effect repairs. The one catch is that if your setup CD is significantly older than your current Windows version, you may have file compatibility problems. For example, you can hit snags if you use an original or SP1 XP Setup CD to try to repair an XP SP2 installation. You'll get a message to the effect that the version you're trying to upgrade is newer than the version on the CD.

The solution here is to use a "slipstreamed" setup CD, which adds the newer files to your original setup CD. This kind of updated setup CD can be used on just about any XP installation. It's a good idea to have an up-to-date, slipstreamed setup CD available in any case, as it simplifies all future installs and CD-based repairs.

Once you have a startup CD with the same version of system files as the PC you're working on, configure your PC to boot from CD if it isn't already set up that way. (You may need to enter the BIOS setup tool to configure the PC to boot from the CD.)

Start your PC with the XP Setup CD in the drive. When you see the "Press any key to boot from CD..." prompt, do so and let the CD-based boot process begin.

When the Recovery Console option is offered ("Press R to start the Recovery Console"), do so. You may be asked which Windows installation to enter, in which case type the number of the Windows installation you wish to work on (usually "1").

When prompted, enter the Administrator's password for that Windows installation.

At the command prompt, type "Bootcfg /Rebuild" (without the quotes) and hit enter. Windows will then scan the hard drive, looking for valid Windows installs and startup information.

The exact verbiage will depend on your setup, but after a few moments you'll see a prompt that says something like:

Total Identified Windows Installs: 1
[1] C:\Windows
Add Installation To Boot List?

Assuming the information you see is correct, enter "Y" for yes, and Bootcfg will start the process of rebuilding the boot list to include the indicated Windows installation. Along the way, it will repair most "Missing or corrupt HAL.DLL," "Invalid Boot.Ini," "Windows could not start...," and similar errors.

After a moment, you'll be asked to "Enter Load Identifier." This is the name of the operating system that will appear in boot menus. For consistency with the standard nomenclature used by Microsoft, enter "Microsoft Windows XP Professional" or "Microsoft Windows XP Home Edition" without the quotes and hit enter.

Next you'll be asked to "Enter OS Load Options." For normal installations, enter "/Fastdetect" (without the quotes) and hit enter.

In most cases, that's all it will take. You can type "Exit" to leave the Recovery Console and reboot the PC, which should then start normally.

But if you wish, or in cases where you suspect a problem with the boot sectors on the hard drive (as with problems in a dual- or multi-boot system that's become unstable, or where a third-party boot manager may have run amok), you can run Fixboot from the command line (without any parameters) prior to exiting the Recovery Console. This will write a new partition boot sector to the default drive, undoing any changes caused by dual-, multi-, or third-party boot processes. (You can reactivate those alternate boot methods later if you wish, but running Fixboot now simplifies the boot process and removes nonessential boot variables, which in turn helps ensure that the repaired XP installation will have the best chance of successful booting.)

After running Fixboot, type "Exit" to leave the Recovery Console and reboot the PC, which should then start normally.

Additional Options
A version of Bootcfg can also be run from inside Windows. Type "Bootcfg /?" (minus the quotes) in the Start/Run line to see the commands available that way. Note that the /Rebuild command isn't available from inside Windows; you can only run that from within the Recovery Console. (That makes sense because you only need to totally rebuild the boot information when Windows won't start normally.)

A /List command is also available only from within Recovery Console. It simply lists the entries already in the boot list, which can be useful for checking or as a learning tool.

You can also see entries already in the boot list from within Windows. Right-click on My Computer, then select Properties/Advanced/Startup and Recovery/Settings. The entries are shown in the System Startup portion of the dialog, and you can directly edit the Boot.Ini file by clicking the Edit button there.

You can also view and edit the startup entries via the Msconfig tool. Enter "Msconfig" on the Start/Run line, and you'll see numerous options for modifying the Boot.Ini and related files. The XP help system explains each option pretty well.


But none of these "edit from within Windows" options is available when Windows won't boot, which is why the Recovery Console's little-known Bootcfg /Rebuild command is so important and useful. If you know about this command and how to use it, you can potentially save yourself literally hours and hours of manually reinstalling or rebuilding a failed operating system!