Troubleshooting the Windows 2000 Hardware Abstraction Layer (HAL)

The following information applies to:

There are several ways to troubleshoot issues related to the Hardware Abstraction Layer (HAL) that may occur as a result of misdetection, an outdated or non-compliant Advanced Configuration and Power Interface (ACPI) Basic Input/Output System (BIOS), or an incorrectly or manually installed computer type. This article describes some of the methods you can use to troubleshoot issues related to the HAL.

NOTE: Term "computer type" and "HAL" have the same meaning.

Begin at the beginning, by determining your computer type:

  1. Click Start, point to Settings, click Control Panel, and then double-click System.
  2. Click the Hardware tab, and then click Device Manager to view what is listed under the Computer branch. The following is the list of supported computer types.

The possible values for the HAL under Standard computers include:

Possible values for the HAL under Compaq include:

Possible values for the HAL under SGI include:

Viewing or Changing Installed Computer Type:

To view or change the installed computer type:

WARNING: Note that you should not attempt to change from an ACPI HAL to a standard HAL or from a standard HAL to a ACPI HAL under any circumstances. Doing so will result in your computer not starting properly or at all. This occurs because the Plug and Play device tree that would be currently loaded is for ACPI, and it does not get reconstructed or revert to a standard HAL Plug and Play device tree. Because of this (the device tree structures being drastically different), the system is unaware of any hardware changes after the computer restarts to include the location of the boot device. Microsoft does not recommend or support this procedure as it will result in data loss.

1. Click Start, point to Settings, click Control Panel, and then double-click

2. Click the Hardware tab, and then click Device Manager to view what is listed under the Computer branch. As an example, "Standard PC", the detected computer type Windows 2000 installed on your computer, or an entry such as "Advanced Configuration Power Interface (ACPI) PC" may be listed.

3. To change the installed computer type, click the Driver tab, and then click Update Drivers.

NOTE: You can only change or update your HAL from Device Manager under Computer Type when changing from a Standard PC HAL to a Standard Multiprocessor PC HAL, because changing from an ACPI HAL to a Standard HAL can result in your not being able to start your computer.

If you are unable to start your computer properly as a result of the wrong computer type (HAL) being installed after Windows 2000 Setup, start the Emergency Repair process:

1. Start your computer by using the Windows 2000 Setup floppy disks, or with the Windows 2000 CD-ROM if your computer supports starting from a CD-ROM.

2. At the "Welcome to Setup" screen, press R to repair.

3. At the Windows 2000 Repair Options screen, press R to repair using the emergency repair process.

4. Press M to manually select repair options and ensure that "Verify Windows 2000 system files" and "Inspect startup environment" features are selected, or press F to run all repair options.

5. Once complete, the originally installed HAL and associated files should be restored. Remove the CD-ROM or floppy disk and then restart your computer.

NOTE: The incorrectly installed computer type is still visible in Device Manager.

6. To ensure the correct computer type is visible in Device Manager, when you restart your computer, press F8, choose Last Known Good Configuration, and then press ENTER.

7. Click the appropriate hardware profile (if more than one profile exists). On the hardware profile, click Configuration Recovery, press ENTER, and then permit Windows 2000 to start.

The optimum method to change from an ACPI HAL to a Standard HAL is to re-install Windows 2000 as an upgrade:

1. Start Windows 2000 Setup as an upgrade.

2. To automatically disable ACPI support and allow Windows 2000 to detect and install the correct (Standard HAL) computer type that your computer supports, use either of the following methods:

Press F7 when Setup generates the following informational message:

"Press F6 if you need to install a third party SCSI or RAID driver."

Now Press F5, and then manually choose the correct Standard computer type by using the following list:

i386 source File

Computer Type

*hal.dll Compaq SystemPro Multiprocessor or 100% Compatible
*halapic.dll MPS Uniprocessor PC
*halapic.dll MPS Multiprocessor PC
*hal.dll Standard PC
*halborg.dll SGI mp

NOTE: You do not have to use the reinstallation method to update from a Standard PC HAL to a MPS Multiprocessor PC HAL, you can use the Update Drivers feature in Device Manager for this. However, you must reinstall Windows 2000 when going to an ACPI HAL computer type on a computer that was using the Standard computer type, and then permit Windows 2000 to automatically detect the correct computer type.

If the Emergency Repair process cannot locate your repair information or if the repair information is invalid, recover your Windows 2000 installation by starting the Recovery Console:

1. Start your computer with the Windows 2000 Setup floppy disks, or with the Windows 2000 CD-ROM if your computer supports starting from CD-ROM. At the "Welcome to Setup" screen, press R to repair, and then press C to start the Recovery Console.

NOTE: For information about using the Recovery Console, please click the article number below to view the article in the Microsoft Knowledge Base:

Q229716 Description of the Windows 2000 Recovery Console

2. After you log on to your computer, from the %SystemRoot%\System32 folder of your original Windows 2000 installation, use the command console to copy and rename the following files as noted in the following lists. First determine which HAL and kernel files your computer requires by using the following list of supported computer types:

NOTE: Those marked with an asterisk character are Standard computer types (non-ACPI).

i386 source file: i386\driver.cab\halmacpi.dll
Computer type: ACPI Multiprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: i386\driver.cab\halaacpi.dll
Computer type: ACPI Uniprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: i386\driver.cab\halacpi.dll
Computer type: Advanced Configuration and Power Interface (ACPI) PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: *i386\driver.cab\halsp.dll
Computer type: Compaq SystemPro Multiprocessor or 100% Compatible
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: *i386\driver.cab\halapic.dll
Computer type: MPS Uniprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: *i386\driver.cab\halmps.dll
Computer type: MPS Multiprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: *i386\driver.cab\hal.dll
Computer type: Standard PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: *i386\driver.cab\halborg.dll
Computer type: SGI mp
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

3. As indicated in the following table, copy all the appropriate kernel files common for your system (Uniprocessor vs. Multiprocessor) and the appropriate HAL file based on your computer supported computer type from the Windows 2000 CD-ROM (i386\driver.cab) or installed service pack to the corresponding folder listed in the table under your original Windows 2000 installation, and then rename them (if required) to Ntoskrnl.exe and Hal.dll, respectively.

 
Common Multiprocessor kernel files Copy to the following directory Rename to the following filename
i386\driver.cab\ntkrnlmp.exe winnt\System32 ntoskrnl.exe
i386\driver.cab\ntkrpamp.exe winnt\System32 ntkrnlpa.exe
i386\driver.cab\kernel32.dll winnt\System32 kernel32.dll
i386\driver.cab\ntdll.dll winnt\System32 ntdll.dll
i386\driver.cab\win32k.sys winnt\System32\drivers win32k.sys
i386\driver.cab\winsrv.dll winnt\System32 winsrv.dll
     
Common Uniprocessor kernel files Copy to the following directory Rename to the following filename
i386\driver.cab\ntoskrnl.exe winnt\System32 ntoskrnl.exe
i386\driver.cab\ntkrnlpa.exe winnt\System32 ntkrnlpa.exe
i386\driver.cab\kernel32.dll winnt\System32 kernel32.dll
i386\driver.cab\ntdll.dll winnt\System32 ntdll.dll
i386\driver.cab\win32k.sys winnt\System32 win32k.sys
i386\driver.cab\winsrv.dll winnt\System32 winsrv.dll

4. Expand the Ntdll.dll file from the original Windows 2000 CD-ROM (i386\driver.cab) or installed service pack to the %SystemRoot%\system32 folder of your original Windows 2000 installation.

5. Expand the Win32k.sys file from the original Windows 2000 CD-ROM (i386\driver.cab) or installed service pack to the %SystemRoot%\system32 folder of your original Windows 2000 installation.

6. Expand the Kernel32.dll and Winsrv.dll from the Windows 2000 CD-ROM (i386\driver.cab) or installed service pack to the %SystemRoot%\system32 folder of your original Windows 2000 installation.

For example, type the following commands:

7. Restart your computer.

Note: For more related information, you may want to review the following article in the Microsoft Knowledge Base:

Q234558 - How to Add Support for Multiple Processors in Windows 2000

Q259889 - Standby Option Not Available in Multiple-Processor Configuration

WARNING: Windows 2000 displays the list of compatible computer types that can be installed when you use Device Manager to manually update. Doing anything beyond what is listed as compatible is likely to result in not being able to start your computer correctly or at all. If you do have "Advanced Configuration Power Interface (ACPI) PC" listed as your computer type or after updating to the latest ACPI BIOS, then you cannot update to the "ACPI Multiprocessor PC" through Device Manager and may result in not being able to start your computer correctly or at all. In the case of an ACPI HAL, for Windows 2000 to support or recognize both CPUs using an ACPI HAL, you must first update to the latest ACPI BIOS which is fully compliant, then re-install Windows 2000 as an upgrade so it can automatically detect and install ACPI Multiprocessor PC; if it does not, your BIOS in not fully compliant yet.

Copyright ©1999-2000 DEW Associates Corporation. All rights reserved.