I was a lurker here, now I need help.
Suddenly, I got the dreaded "missing or corrupt hal.dll" error message. In reading everything I could find on the Net, I succeeded in fixing it, more or less: Computer again runs just fine, everything is apparently operating as it should. One thing, tho: in doing a peroidic image of my system drive to an external HDD, I noticed that my system drive C: was no longer on HDD 0 but now on HDD 1. What was previously HDD 1 is now HDD 0. The new HDD 0 (what was previously HDD 1)consists of 2 SATA Maxtor 300g in RAID 0, configured as D: and E:. HDD 1 (that is, old HDD 0) is a single SATA Maxtor 300g and is configured as C:, the system drive. These drive letters have not changed with regard to the partitions they identify. I must have done something to boot.ini, but I don't see it.
I think it would be a good idea (but tell me if you disagree) to go back to the original designations of HDD 0 as C: and HDD 1 as my RAID. I note that the computer seems to boot properly and run as it should in this current "swapped" configuration. Any help as to how to accomplish getting back to the original config would be much appreciated. My current boot.ini file is as follows:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\Windows
[Operating systems]
multi(0)disk(0)rdisk(0)partitions(1)\Windows="Windows XP Media Center" /noexecute=optin /fastdetect
Many thanks,
Lex

Dani AI

Generated

A short expert note on why disk indexes can flip after a repair, how to check the current mapping, and safe ways to restore the prior numbering if needed. This expands on ’s report and ties in the practical points raised by and .

Why it happens

  • Disk indexes (the Disk 0 / Disk 1 values that boot.ini/NTLDR and Windows see) are assigned from the BIOS/RAID/controller enumeration at boot time. Changes to BIOS boot order, which controller is initialized first, SATA port connections, or driver/controller state during a repair can change which physical device is presented as “Disk 0.” Drive letters (C:, D:, etc.) are assigned by Windows to partitions and can remain stable even when disk indexes change.

How to verify and a safe workflow to restore ordering

  1. Make a full image backup first. Do not experiment without a usable image.

  2. Confirm current mapping inside Windows: Computer Management -> Disk Management and note which disk shows the System/Boot flags. From an elevated command prompt the same numbering is visible via diskpart:

    diskpart
    list disk
    exit

    In XP Recovery Console the BIOS mapping can be listed with:

    map
  3. Prefer BIOS/RAID fixes over editing boot.ini. Reboot into BIOS or the RAID utility and set the desired physical/logical disk as the first boot device or change controller priority. If that is not possible, swap the SATA cable so the intended boot disk is on the motherboard port that the BIOS enumerates first. Consult the motherboard manual before moving cables.

  4. For RAID arrays: exercise extreme caution. Do not move RAID member disks to another controller or port that the RAID firmware does not expect; that can corrupt or destroy the array.

  5. Editing boot.ini (rdisk(n)) is a last resort. If attempted, have XP repair media/Recovery Console on hand to recover if the system will not boot.

Practical note
As said, if everything boots and backups work, leaving the current configuration is perfectly acceptable. If consistent disk numbering matters for imaging or scripts, follow the verification and BIOS/port steps above. Also, since asked, posting the exact hal.dll repair steps that worked for would help others and may clarify whether a controller/driver change during repair caused the switch.

I was a lurker here, now I need help.
Suddenly, I got the dreaded "missing or corrupt hal.dll" error message. In reading everything I could find on the Net, I succeeded in fixing it, more or less: Computer again runs just fine, everything is apparently operating as it should. One thing, tho: in doing a peroidic image of my system drive to an external HDD, I noticed that my system drive C: was no longer on HDD 0 but now on HDD 1. What was previously HDD 1 is now HDD 0. The new HDD 0 (what was previously HDD 1)consists of 2 SATA Maxtor 300g in RAID 0, configured as D: and E:. HDD 1 (that is, old HDD 0) is a single SATA Maxtor 300g and is configured as C:, the system drive. These drive letters have not changed with regard to the partitions they identify. I must have done something to boot.ini, but I don't see it.
I think it would be a good idea (but tell me if you disagree) to go back to the original designations of HDD 0 as C: and HDD 1 as my RAID. I note that the computer seems to boot properly and run as it should in this current "swapped" configuration. Any help as to how to accomplish getting back to the original config would be much appreciated. My current boot.ini file is as follows:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\Windows
[Operating systems]
multi(0)disk(0)rdisk(0)partitions(1)\Windows="Windows XP Media Center" /noexecute=optin /fastdetect
Many thanks,
Lex

Hi Lex,

Would you mind sharing how you succeeded in fixing the missing or corrupt hal.dll file issue?

I am also running MCE, except mine is on a single 250GB SATA drive. You can email me direct at .

I'm curious. Why do you want to change it? The boot.ini file is used simply for bootup options in 2000 and XP. I can't see how editing it is going to change the function of your system, unless you plan to make the raid drives bootable. If there is some problem with the boot.ini the way it is, then I can see editing it. But if your system is functioning fine, as you say it is, then just leave it be. If the numbers bother you that much, just don't look at them.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.