Amazon.com Widgets
...not so private reflections of greg.newman
RSS feed - Categories & Search

hal.dll missing on dual boot with linux

I received the error on Windows XP startup that my hal.dll file (hardware abstraction layer) was missing and Windows would not boot. Here’s how I fixed it.

Boot from your Windows CD and follow the directions to start the Recovery Console. When asked for your Administrator password, enter that in. In my case I didn’t have one so I left it blank.

I then navigate to the system32 folder by typing “cd windows/system32? to get into the system32 directory and type “dir” to get a list of directory files to confirm that the hal.dll file was there. In which case it was. This tells me that there is a problem with my boot.ini file.

I then typed the following:

cd C:/
Attrib -H -R -S C:\Boot.ini

DEL C:\Boot.ini

BootCfg /Rebuild

Fixboot

exit

The Attrib command I entered made the file editable. The DEL command deleted the Boot.ini file and the BootCfg /Rebuild created a new Boot.ini file based on my partition tables. The exit command reboots the PC.

If you ever run into this and the hal.dll file is truely missing, you can extract a copy from your Windows CD by typing the following from the recovery console.

expand d:\i386\hal.dll_c:\windows\system32\hal.dll
This will copy the file from the CD to your system32 directory and reboot. You should be up and running again.

I hope this helps someone that has the same problems I encountered with Windows and hal.

0 TrackBacks

Listed below are links to blogs that reference this entry: hal.dll missing on dual boot with linux.

TrackBack URL for this entry: http://www.20seven.org/cgi-bin/mt/mt-tb.cgi/30

1 Comments

I've observed the same error after installing Ubuntu 8.04 alongside Windows XP, which has already been running on the system for quite some time.
I had the suspicion that Windows fails to load due to incorrect partition reference in boot.ini. Unexpectedly, the hard part was to locate the boot.ini itself as it was not present on the system partition as I've expected for some reason, but was placed on another partition used only for data storage. After finding the boot.ini fixing it was as easy as changing

default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
to
default=multi(0)disk(0)rdisk(0)partition(4)\WINDOWS

AND
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
to
multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

It depends on a particular configuration what the partition number should be, but it shouldn't hurt to experiment with different values, as there's nothing more to break :)

Leave a comment