Hal.dll missing, won't boot windows

I can’t edit the message now - or I would - I believe I violated rule number one - no personal attacks. It was late at night. I apologize. As I can’t edit it, mods - please delete the original message. I will repost. At that moment - I was simply saying what I was thinking. While I am usually very good at saying things nicely - sometimes I have been known to be obtusely blunt in my opinions. I do not know why - sometimes things just pop out. Again - I apologize.

Let me try this again.

This thread is old - but it came up high in a search - so I want to add some things to it. My Windows dual install has, for the first time in my experience, produced this error. I’ve had to fix the hal.dll errors before, but not in a dual boot environment.

Re-installing windows WILL, without a doubt, no questions, no prisoners - destroy your grub mbr entries. In the OP case - a dual boot, linux and Windows, the hall.dll error has a high possibility of being associated with the linux install. This error also has about 10 jillion permutations - but they mostly point to “boot.ini”, the Windows partition boot record, a real hal.dll error, or hard drive/file system issues.

The Windows “how-to” guides mention the above - boot.ini, partition boot record. etc.

So, if you have this problem - start here:
How To Fix Missing Hal.dll Errors in Windows XP
That particular page covers most of the issues quite well.

The answer could be as simple as the partition pointers in the Windows boot.ini file. Also don’t hesitate to run chkdsk on the Windows volume, even if you are running fsck on the whole hard drive.

However, that page doesn’t cover linux/windows specific possibilities. For one thing - if you have to get to the reinstall stage, plan on fixing your grub (or lilo or grub2). I don’t know of anyone who has ever used the Windows multiple boot loader - so I don’t know how it would be affected. Fixing the MBR portion of grub and grub2 is not hard - but you should start the reinstall knowing how to fix it.

Since I am still in the middle of finding the solution in my case, I will come back and repost when I have found my answer. At the moment I am looking at doing the reinstall - but before I do that I want to try and mess with the boot.ini again. It points to the 2nd partition, which is correct - but I am wondering if it is looking at partitions the way grub does - where the numbering starts at 0.

boot.ini contains pointers like this one
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS

In my current case it says 2, and Windows is on sda2, the 2nd primary partition. Should be good, but I’m still getting the error. So maybe it is seeing the logical partitions in front of it - or is counting like grub does. I don’t know and I still have to find out.

Worst possible case, I will have to reinstall Windows. Blech. Nuisance, but not killer.

As for myself, I am still working on answers, and if I find any - I will post them here.

On 2012-01-05 09:56, spokesinger wrote:
>
> I can’t edit the message now - or I would - I believe I violated rule
> number one - no personal attacks. It was late at night. I apologize. As
> I can’t edit it, mods - please delete the original message.

Appreciated.

> I don’t know of anyone who has ever
> used the Windows multiple boot loader

If we are thinking of the same thing, I have used it. It made Windows offer
to boot Linux, and it worked. But I had to use third party software
(Windows doesn’t have a tool for easy use of this feature), BCD***
something, I don’t remember the exact name.

> and mess with the boot.ini again. It points to the 2nd partition, which
> is correct - but I am wondering if it is looking at partitions the way
> grub does - where the numbering starts at 0.

It probably does. Both have to load the systems using BIOS services, so the
numbers will be the same.


Cheers / Saludos,

Carlos E. R.
(from 11.4 x86_64 “Celadon” at Telcontar)

I ran into that error recently.

On the system where I had that problem, Windows XP is partition 1 and linux “/boot” is partition 2. However, “/boot” is physically before the Windows partition on the disk. So when I use linux “fdisk” it always warns me that the partitions are not in order.

Just before installing opensuse 12.1, I thought that would be a good time to fix things. So I resorted the partition table (there’s an “fdisk” option for that). That fixed things, but good. Windows would no longer boot. I put the partition table back to where it was, and things were then fine.

As I now understand it, I could have fixed the problem with simply editing “boot.ini” and changing the partition from 1 to 2 in the Windows boot line. I might try that when installing 12.2.

Apart from that, I can’t recall a problem. Back, many years ago, I think I was using NT Workstation 3.5. I used the NT partitioning tool. And it sorted the partition order without asking. That broke my linux boot. And that’s why I now have a shell script somewhere that I can use to resort the partition order in the MBR if I need to do that. But I mainly avoid using the Windows disk tools on a system where linux is installed.

Windows is looking at partitions in the same way that linux “fdisk” looks at them. So that “partition(2)” refers to the second entry in the partition table in the MBR.
Here’s my “boot.ini” for the record (on a different system from the one where I resorted the MBR):


[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
C:\bootsect.lnx="linux"

Note that there are two lines with “partition(2)”. They might both need to be correct to avoid problems. And to clarify on the partition numbering, I am reading that “boot.ini” from the file system mounted using “/dev/sda2”.

The poster to whom you replied seems to be using Window XP (or earlier). The “BCD***” thingie is for Vista and Windows 7 and probably later systems.

Windows (Vista and Win7) does include BCDEDIT, which I have used for booting that way. You probably installed “easybcd” which many people recommend. I presume it provides a GUI, while BCDEDIT is a command line tool.

I am currently using the Windows boot manager to select which system I boot.

To answer the OP, albeit a bit late. This is usually caused by an error in the boot.ini file. See here for more info. Windows XP Setup - Missing HAL.DLL

Quite a number of the responders pointed to boot.ini. I found a quote from a famous MS MVP that said the hal.dll error was a misdirection - that boot.ini was almost always responsible - but when I went back to look for it, it was lost in the deluge of places I visited.

Point being - most folks, think, and from my experience are probably right - it isn’t hal.dll. Hal.dll just happens to be the first file Windows looks for on the partition. If it is pointed to the wrong partition - it can’t find it.

I ended up doing a reinstall - during which I noticed something that was probably pertinent. The installation told me it wanted to install to the FIRST partition - which I KNEW was the 2nd partition. I don’t think it sees things the way Grub does (starts at 0 instead of 1) but maybe because it was on the 1st NTFS partition. Couldn’t say. But, I would place a small bet that if I had spent more time messing with the boot.ini file, I might not have reinstalled. I know my boot.ini was looking to the 2nd partition - and I wish I had tried pointing it to the first partition before reinstalling, just to see what happened. But, after the reinstall, it points to 1, and it works.

Thank you all who replied!

Ok, finally got it to boot. I gave up and threw it in a corner for a long time : )
(so long infact i forgot i post here originally, and accidentally came across my own thread lol)

What didn’t work:(on its own)

-Changing boot.ini to any valid partition - when set to the real partition, windows would start to boot up until Mup.sys, where it would kernel crash and auto reboot too fast to see.
-Copying a clean** hal.dll** from windows/servicepackfiles/i386/hal.dll to system32/hal.dll (note: a checksum showed the files were different, regardless, didnt work on its own)
-After finding a micro XP recovery CD image (7mb, can’t find the article it came from anymore, was on a microsoft answers page, but i’m putting it on dropbox for anyone else) followed others directions:

Attrib -H -R -S C:\Boot.ini
DEL C:\Boot.ini
BootCfg /Rebuild
Fixboot

(verbatim)

So, ** Attrib -R C:\boot.ini was the only flag that worked, -H & -S failed (-R **makes file writeable)
BootCfg /Rebuild failed, recovery couldn’t recognize the system. Chkdsk /r (repair) chugged away with no real errors, took about 1.5 hrs.
Fixboot C: ran with no errors.

I wanted to start with what didnt work, so you could see how i got to what ended up working

What worked (somehow):
When i deleted boot.ini,* bootcfg /rebuild* failed, so did bootcfg /add, so it never replaced the boot.ini…which seems to have been a good thing!!

Upon reboot, i saw a quick error about no boot.ini, which windows unhappily showed the safe-mode menu. i selected safe-mode + command prompt. It started to load, and slowed down again on Mup.sys. I swore a couple times, BUT IT DIDN’T REBOOT! it spent the next 30 minutes what i can only imagine as figuring its **** out, started identifying many drivers i used to have working fine. A reboot later, i can load windows in Normal.

Anyone with this hal issue, make a backup of your boot.ini and try deleting the original, boot and see if windows did what it did for me.

Because i tried a few things, including the Chkdsk repair (which on its own also didnt work), i can’t narrow it down to say, 1 specific action worked, but some combination of the above worked. Good luck! Btw, this process didn’t destroy GRUB, which still shows and boots opensuse, and windows (now)

**HP Pavilion Laptop: **For People who have a problem loading the XP recovery disk, where it won’t even boot into recovery because it can’t find a windows system, Open your BIOS, try disabling SATA support. This worked on my laptop (i recently recalled previous windows woes, it wouldn’t install to MY SATA DRIVE, while sata support was enabled…lol your guess is as good as mine, but it works)

XP Repair CD Image - http://dl.dropbox.com/u/57525189/xp_rec_con.iso (7MB - should this link die, email peter.rippe@gmail.com i’ll try to put it back up, but please someone else share it too!)- boot the CD, select Recovery, you’ll need to remember your admin password. Selecting Install won’t work. Don’t remember your password? Find OPHCRACK cd image, helps get access to/crack windows passwords (if you have the encrypted password, there are websites with lookup tables that can translate your password (if its not too hard))

I’ve had this hal.ddll missing error a number of times in two different linux installs (Ubuntu 12.04 and openSUSE 12.1).

Both initial installs caused this problem for my Windows XP boot and both had the issue recur at some point later (usually when I added another hard drive–internal or external).

I feel bad for anyone who immediately reinstalls either Windows or linux.

In my case (at least 4-6 times now), it has always been that linux points to the wrong drive for the windows boot. Why it does this I can’t tell you, but I have 2 SATA drives, 1 IDE drive, and 1 USB drive, so there is plenty around to confuse it. This last time I solved it by going into Yast, Bootloader, and then the Section Managment tab. I selected the windows boot from the list (after my Desktop-openSUSE and Failsafe-openSUSE boots. I clicked “edit” then under “Other System” selected “/dev/sda1” (somehow it had been changed to /dev/sdb1, which is wrong–that’s my openSUSE boot.

I also selected (checked) “Activate this Partition when selected for Boot” (and the other two opens were also checked, along with Block Offset for Chainloading at “1”).

Then I "OK"ed out of it and could boot into windows xp with no problem.

I hope that helps someone else. I’m not sure why so many people want to jump in and suggest a reinstall, but I think the person who mentioned that the “Hal.dll” error is a red herring (false lead) is correct (at least in my case). The MBR just doesn’t seem to be pointing to the correct drive, but nothing is corrupted or missing.