|« Normal service...||Better now »|
Sat, Jun 13, 2009
A couple weeks ago, I got an email from my parents. Their desktop PC had broken: When they tried to boot it, it gave them an error about Windows could not start because the following file is missing or corrupt: <windows root>\system32\hal.dll</windows>
Not an unheard of problem. I made a couple of suggestions, then sent a link to a helpful website that gave the exhaustive list of ways to fix the problem.
Item 4 on that site, booting off the install disk and using the repair console to re-create the boot.ini file, was the one that fixed it: Without the boot.ini, Windows can't find the hal.dll and so the error appears.
So they re-created boot.ini and up came Windows, good as new. All well.
Or so it seemed, until the NEXT time they rebooted. Same error. Same fix. So long as they used the CD to re-create boot.ini every time they booted, the PC worked fine.
But it's far from ideal and I couldn't do much from another country, so they left it for me to look at when I came over.
I just finished.
No matter what I did, I couldn't access the boot.ini file from within windows. This, as it turned out, was because it wasn't there. It should be in C:\boot.ini but wasn't.
So after booting into the CD's rescue and re-making boot.ini yet again, I used the more command to view the file contents and make a backup.
Then booted into Windows. No sign of boot.ini OR the backup. Very odd: boot.ini MUST exist or it couldn't boot. But it clearly wasn't there.
So, in case it was some weird Windows filesystem error, I booted off my FSF membership card, which is a USB flash drive with gNewSense on it, and re-created the file using vim, and placed a copy of it on the desktop.
Booted into windows again, no boot.ini where it should be, but the copy was still on the desktop.
So long as that desktop copy was copied to C:\ every time I rebooted, the computer worked fine. The problem, therefore, had to be that Windows was, for some reason, deleting boot.ini during the boot process.
It might seem like I took a long time reaching that conclusion, but I just couldn't believe that Windows would actually delete one of its own critical boot files on startup. Why would it??
I had no idea, but the evidence was incontrovertible, so I started googling it and finally tracked down the problem.
It was Internet Explorer.
For some reason, god knows why, this bug has affected a number of other users around the world. So if your problem is that boot.ini gets deleted every time you reboot Windows, the problem is the recent upgrade to IE8 and the solution is to go into "Add or remove programs" in the Control Panel and remove IE8 - this will revert you back to IE7 so you'll still have a working browser if you use IE.
As soon as this was done on my parents' machine, the boot.ini file was left completely alone and it's booted fine ever since.
So well done, Microsoft! You've released a browser that deletes a system file it shouldn't even LOOK at! That's true creativity, that is. Who wouldn't think that a piece of software designed for looking at web pages might be deleting boot files even before it's told to load and run? (My parents use Firefox but you don't need to *run* IE to suffer from this, just let Windows Update install it)
This has got to be the most obscure error I've ever had to track down, bar none. Congratulations on that score, I guess, MS.
Hopefully any other poor so-and-so's with this problem will find this blog post and so find the solution, because I've only found ONE place on the 'Net that even mentions it. This post means there are now two, so hopefully that doubles the chances of people being able to fix it.
I still can't quite believe this tho... a browser update that renders an OS un-bootable..
*** Update: A number of people with this problem have reported that it was the Ask.com toolbar that was triggering it. If you have both IE8 and Ask.com, try uninstalling the latter first. If that doesn't fix it, go on to removing IE8. If that STILL doesn't fix it, I'm afraid you're on your own!
I smell bullshit.
|<< <||> >>|