2005-03-16

如何解决 Windows 2000 硬件抽象层问题

转自微软
如果想解决GHOST完系统后进不了系统、黑屏、重新启动等问题出现的问题,请看下面的内容。微软已经用windows2000这个具体的例子
给我们说的很清楚了.具体的修改请参阅Climbing的大作:《Windows
2000XP2003操作系统所支持的计算机类型(HAL)及相关内核文件的对应关系》,相关的windowsXP/2003的电源管理修改是和这个
2000差不多的。


概要
在 Windows 2000 中,出现与“硬件抽象层”(HAL)
相关的问题可能是因为检测错误、“高级配置和电源接口”(ACPI)“基本输入/输出系统”(BIOS)
过时或不兼容,或者错误安装或手动安装了某种计算机类型。有几种方法可以解决这些问题。本文介绍了一些方法,可用于解决与 HAL 相关的问题。

备注:在本文中,“计算机类型”和“HAL”这两个词的含义是相同的,可以互换。
更多信息
确定计算机类型
确定您使用的计算机类型:

1. 单击开始,指向设置,单击控制面板,然后双击系统。
2. 单击硬件选项卡,然后单击设备管理器,查看在计算机分支下列出的内容。下面是支持的计算机类型的列表。

“标准”计算机下 HAL 的值可能包括:

ACPI Multiprocessor PC
ACPI Uniprocessor PC
Advanced Configuration and Power Interface (ACPI) PC
MPS Multiprocessor PC
MPS Uniprocessor PC
Standard PC
“Compaq”下的 HAL 可能值包括:

Compaq SystemPro Multiprocessor or 100% Compatible
“SGI”下的 HAL 可能值包括:

Silicon Graphics Visual Workstation
查看或更改已安装的计算机类型
查看或更改已安装的计算机类型:


告:请注意,在任何情况下,都不应该尝试从 ACPI HAL 更改为标准 HAL,或从标准 HAL 更改为 ACPI
HAL。这样会导致计算机无法正常启动或根本无法启动。这是因为当前要加载的“即插即用”设备树是用于 ACPI 的,它不会重建或还原为标准的
HAL“即插即用”设备树。因此(设备树结构差异巨大),在计算机重新启动之后,系统无法知道硬件有变化,也就无法提供启动设备的位置。
Microsoft 不建议也不支持此过程,因为它会导致丢失数据。

1. 单击开始,指向设置,单击控制面板,然后双击系统。
2.
单击硬件选项卡,然后单击设备管理器,查看在计算机分支下列出的内容。例如,可能会列出“Standard PC”(检测到的 Windows
2000 在计算机上安装的计算机类型)或“Advanced Configuration Power Interface (ACPI)
PC”这样的项。
3. 要更改已安装的计算机类型,请单击驱动程序选项卡,然后单击更新驱动程序。

备注:只有在从“Standard PC”HAL 更改为“Standard Multiprocessor PC”HAL 时,才能从“设备管理器”的计算机类型下更改或更新 HAL,因为从 ACPI HAL 更改为标准 HAL 会导致无法启动计算机。
如果在安装 Windows 2000 之后安装了错误的计算机类型 (HAL),因而无法正常启动计算机,请进行紧急修复:

1. 使用 Windows 2000 安装软盘或 Windows 2000 CD-ROM(如果您的计算机支持从 CD-ROM 启动),启动计算机。
2. 在“欢迎使用安装程序”屏幕上,按 R 键来进行修复。
3. 在Windows 2000 修复选项屏幕上,按 R 键,以使用紧急修复过程进行修复。
4. 按 M 键可手动选择修复选项,并且一定要选中“验证 Windows 2000 系统文件”和“检查启动环境”功能,或者,按 F 键可运行所有修复选项。
5. 在完成之后,就应该恢复最初安装的 HAL 和关联文件。取出 CD-ROM 或软盘,然后重新启动计算机。

备注:在“设备管理器”中仍然可以看到错误安装的计算机类型。
6. 要确保在设备管理器中看到正确的计算机类型,请在重新启动计算机后,按 F8 键,选择已知的上一次成功配置,然后按 ENTER 键。
7. 单击相应的硬件配置文件(如果存在多个配置文件)。在硬件配置文件上,单击配置恢复,按 ENTER 键,然后 Windows 2000 就可以启动了。
从 ACPI HAL 更改为标准 HAL 的最佳方法是:以升级的形式重新安装 Windows 2000:

1. 以升级形式启动 Windows 2000 安装程序。
2. 要自动禁用 ACPI 支持,并允许 Windows 2000 自动检测(或手动更改和安装)计算机支持的正确(标准 HAL)计算机类型,请使用以下方法之一:



• 自动检测计算机类型:

在安装程序生成以下参考性消息时,按 F7 键:

Press F6 if you need to install a third party SCSI or RAID driver.
备注:按 F7 键时,您看不到指示正在执行自动检测的可视指示器;请继续按正常方式安装,直至完成。
• 手动选择计算机类型:

按 F5 键,然后通过使用以下列表手动选择正确的“标准”计算机类型:
i386 源文件 计算机类型
*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

注:要从“Standard PC”HAL 更新为“MPS Multiprocessor
PC”HAL,您不必使用重新安装的方法,而是可以使用“设备管理器”中的“更新驱动程序”功能来执行此操作。但是,要将使用标准计算机类型的计算机改为
使用 ACPI HAL 计算机类型,就必须重装 Windows 2000,这样 Windows 2000 才能自动检测到正确的计算机类型。
如果紧急修复过程找不到修复信息或者修复信息无效,请通过启动“故障恢复控制台”恢复 Windows 2000 安装:

1. 使用 Windows 2000 安装软盘或 Windows 2000 CD-ROM(如果计算机支持从 CD-ROM 启动),启动计算机。在“欢迎使用安装程序”屏幕上,按 R 键,以进行修复,然后按 C 键启动“故障恢复控制台”。

备注:有关使用故障恢复控制台的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

229716 Windows 2000 故障恢复控制台说明
2. 在登录到计算机之后,从原始 Windows 2000 安装的 %SystemRoot%System32 文件夹中,使用命令控制台复制并重命名以下列表中列出的文件。首先使用支持的计算机类型的以下列表确定您的计算机需要哪些 HAL 和内核文件:

备注:标记有星号字符的是标准计算机类型(非 ACPI)。

i386 源文件:i386driver.cabhalmacpi.dll
计算机类型:ACPI Multiprocessor PC
复制到此文件夹:winntSystem32
重命名为此文件名:hal.dll

i386 源文件:i386driver.cabhalaacpi.dll
计算机类型:ACPI Uniprocessor PC
复制到此文件夹:winntSystem32
重命名为此文件名:hal.dll

i386 源文件:i386driver.cabhalacpi.dll
计算机类型:Advanced Configuration and Power Interface (ACPI) PC
复制到此文件夹:winntSystem32
重命名为此文件名:hal.dll

i386 源文件:*i386driver.cabhalsp.dll
计算机类型:Compaq SystemPro Multiprocessor or 100% Compatible
复制到此文件夹:winntSystem32
重命名为此文件名:hal.dll

i386 源文件:*i386driver.cabhalapic.dll
计算机类型:MPS Uniprocessor PC
复制到此文件夹winntSystem32
重命名为此文件名:hal.dll

i386 源文件:*i386driver.cabhalmps.dll
计算机类型:MPS Multiprocessor PC
复制到此文件夹:winntSystem32
重命名为此文件名:hal.dll

i386 源文件:*i386driver.cabhal.dll
计算机类型:Standard PC
复制到此文件夹:winntSystem32
重命名为此文件名:hal.dll

i386 源文件:*i386driver.cabhalborg.dll
计算机类型:SGI mp
复制到此文件夹:winntSystem32
重命名为此文件名:hal.dll

3.
如下表所示,根据您的计算机支持的计算机类型,从 Windows 2000 CD-ROM (i386driver.cab) 或已安装的
Service Pack 中将您的系统(单处理器与多处理器)公用的所有相应内核文件和相应的 HAL 文件复制到下表中列出的原始 Windows
2000 安装下的对应文件夹,然后将它们分别重命名(如有必要)为 Ntoskrnl.exe 和 Hal.dll。



多处理器公共内核文件 复制到以下目录 重命名为以下文件名
i386driver.cab
tkrnlmp.exe winntSystem32 ntoskrnl.exe
i386driver.cab
tkrpamp.exe winntSystem32 ntkrnlpa.exe
i386driver.cabkernel32.dll winntSystem32 kernel32.dll
i386driver.cab
tdll.dll winntSystem32 ntdll.dll
i386driver.cabwin32k.sys winntSystem32drivers win32k.sys
i386driver.cabwinsrv.dll winntSystem32 winsrv.dll
单处理器公共内核文件 复制到以下目录 重命名为以下文件名
i386driver.cab
toskrnl.exe winntSystem32 ntoskrnl.exe
i386driver.cab
tkrnlpa.exe winntSystem32 ntkrnlpa.exe
i386driver.cabkernel32.dll winntSystem32 kernel32.dll
i386driver.cab
tdll.dll winntSystem32 ntdll.dll
i386driver.cabwin32k.sys winntSystem32 win32k.sys
i386driver.cabwinsrv.dll winntSystem32 winsrv.dll
4.
将原始 Windows 2000 CD-ROM (i386driver.cab) 或已安装的 Service Pack 中的文件
Ntdll.dll 展开,放到原始 Windows 2000 安装的 %SystemRoot%system32 文件夹中。

例如:

驱动器:i386driver.cab /f:ntdll.dll c:winntsystem32
其中,驱动器 是包含 Windows 2000 Server CD-ROM 的 CD-ROM 驱动器的驱动器盘符。
5.
将原始 Windows 2000 CD-ROM (i386driver.cab) 或已安装的 Service Pack 中的文件
Win32k.sys 展开,放到原始 Windows 2000 安装的 %SystemRoot%system32 文件夹中。
6. 将
Windows 2000 CD-ROM (i386driver.cab) 或已安装的 Service Pack 中的
Kernel32.dll 和 Winsrv.dll 展开,放到原始 Windows 2000 安装的
%SystemRoot%system32 文件夹中。例如,键入以下命令 expand drive:i386driver.cab
/F:kernel32.dll %systemroot%system32kernel32.dll

expand 驱动器:i386driver.cab /F:winsrv.dll %systemroot%system32winsrv.dll

其中,驱动器 是 CD-ROM 驱动器号。

7. 重新启动计算机。

没有评论:

发表评论