Last night I took a look at a poorly Windows XP box. It would not boot; error was:
C:\Windows\System32\Hal.dll missing or corrupt:
Please re-install a copy of the above file.
The one thing you can be confident about is that doing what the error message says will not fix the problem. I suspected an issue either with a failing hard drive, or with boot.ini. It was not boot.ini, and to my surprise the drive checked out OK using the long (most thorough) test in the manufacturer’s utility. There were files missing though, so I ran chkdsk /r and then tried a repair install. To do this, you boot from the setup CD, choose to install Windows, and then choose the option to repair an existing installation; it usually does a good job of preserving documents, applications and settings.
Everything was going fine until well into the repair. Setup came up with a message I had not seen before:
The file ‘Asms’ on Windows XP Home CD-ROM is needed. Type the path where the file is located, and then click OK.
It turns out that this means setup cannot communicate with the setup CD. Microsoft has a fix which did not work for me; the UPPERFILTERS and LOWERFILTERS registry keys mentioned there did not exist, though it was interesting to discover that you can press Shift+F10 during setup and get a command prompt. However, the command prompt could not see the CD either.
Even if you cancel the setup, it automatically resumes on reboot. All I needed to do was to copy the setup files (contents of the i386 folder) from the CD to the hard drive. However, the bafflingly crippled XP recovery console does not support either xcopy, or wild card copy, or copying directories.
I found an easy solution for this in Knoppix, a version of Linux designed to run from CD.I downloaded the latest version 6.0.1 which has read-write access to NTFS drives by default, booted Knoppix, copied the WIndows XP setup CD to a folder on the hard drive, and re-booted Windows. Setup resumed, and when I got the Asms error I pointed setup to the new folder. I had to do this multiple times (fortunately Ctrl-C and Ctrl-V works) but it was not difficult and the repair completed successfully.