windows 硬件抽象层问题

原创 2005年05月15日 00:45:00
转自微软
如果想解决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 源文件:i386/driver.cab/halmacpi.dll
计算机类型:ACPI Multiprocessor PC
复制到此文件夹:winnt/System32
重命名为此文件名:hal.dll

i386 源文件:i386/driver.cab/halaacpi.dll
计算机类型:ACPI Uniprocessor PC
复制到此文件夹:winnt/System32
重命名为此文件名:hal.dll

i386 源文件:i386/driver.cab/halacpi.dll
计算机类型:Advanced Configuration and Power Interface (ACPI) PC
复制到此文件夹:winnt/System32
重命名为此文件名:hal.dll

i386 源文件:*i386/driver.cab/halsp.dll
计算机类型:Compaq SystemPro Multiprocessor or 100% Compatible
复制到此文件夹:winnt/System32
重命名为此文件名:hal.dll

i386 源文件:*i386/driver.cab/halapic.dll
计算机类型:MPS Uniprocessor PC
复制到此文件夹winnt/System32
重命名为此文件名:hal.dll

i386 源文件:*i386/driver.cab/halmps.dll
计算机类型:MPS Multiprocessor PC
复制到此文件夹:winnt/System32
重命名为此文件名:hal.dll

i386 源文件:*i386/driver.cab/hal.dll
计算机类型:Standard PC
复制到此文件夹:winnt/System32
重命名为此文件名:hal.dll

i386 源文件:*i386/driver.cab/halborg.dll
计算机类型:SGI mp
复制到此文件夹:winnt/System32
重命名为此文件名:hal.dll

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



多处理器公共内核文件 复制到以下目录 重命名为以下文件名
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
单处理器公共内核文件 复制到以下目录 重命名为以下文件名
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. 将原始 Windows 2000 CD-ROM (i386/driver.cab) 或已安装的 Service Pack 中的文件 Ntdll.dll 展开,放到原始 Windows 2000 安装的 %SystemRoot%/system32 文件夹中。

例如:

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

expand 驱动器:/i386/driver.cab /F:winsrv.dll %systemroot%/system32/winsrv.dll

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

7. 重新启动计算机。

进行SYSPREP后计算机硬件抽象层HAL(电源模式)的完美解决

-- 作者: 微软破解中心-- 发布时间: 2005/07/29 05:37pm [这个贴子最后由微软破解中心在 2005/07/29 05:53pm 第 4 次编辑]未经许可,谢绝转载。如需转载请联...
  • ncdawen
  • ncdawen
  • 2005年12月31日 12:50
  • 5655

硬件抽象层(HAL)

 Windows设计的关键要素之一是,它能被移植到各种不同的硬件平台上。硬件抽象层是使得这种移植性成为可能的一个关键部分。HAL是一个可加载的、内核模式的模块,它提供了针对Windows当前运行所在的...
  • yezi211
  • yezi211
  • 2007年08月18日 17:02
  • 603

硬件抽象层HAL (Hardware Abstraction Layer )

硬件抽象层HAL (Hardware Abstraction Layer ) 硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统...
  • autumn20080101
  • autumn20080101
  • 2013年03月20日 17:01
  • 995

windows系统的启动过程

下面来说说windows系统是怎么启动的 1. 预引导阶段,就是从引导设备中读取MBR主引导记录 2. 引导阶段 a) 初始化引导载入程序,程序ntldr会寻找系统自带的一个微型文件系统驱动,用...
  • ShaoqunLiu
  • ShaoqunLiu
  • 2016年08月15日 00:59
  • 244

Windows(多)操作系统启动过程

一.WinPE启动原理 移动硬盘PE启动原理 WinPE文件组成: 引导文件:NTLDR和NTDETECT.COM 系统文件:WinNT.XPE(WinPE.XPE)和WinPE.IS_(...
  • antdz
  • antdz
  • 2015年10月09日 14:20
  • 1644

嵌入式操作系统 硬件抽象层 HAL

  引言   为了便于操作系统在不同硬件结构上进行移植,美国微软公司首先提出了将操作系统底层与硬件相关的部分单独设计成硬件抽象层HAL(Hardware AbstractionLayer)的思想。硬件...
  • wolfcmd1231
  • wolfcmd1231
  • 2010年01月08日 16:57
  • 1858

Android应用开发 led 驱动层 hal硬件抽象层 应用层 详细教程记录(含源码)

本篇文章是为了能够更好的搜索到介绍驱动到应用的详细介绍文章。 关于驱动层 hal硬件抽象层 应用层请参考s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录系...
  • u010406724
  • u010406724
  • 2015年03月26日 16:28
  • 1835

windows系统启动过程原理全面分析

现在个人用的最多的就是windows XP,要正确使用Windows XP,一定要熟练掌握Windows XP的启动原理。Windows XP的启动过程所执行的操作可以看成是一个操作系统整体环境的快照...
  • trypsin
  • trypsin
  • 2009年08月20日 14:40
  • 3189

Windows(多)操作系统启动过程

 一.WinPE启动原理移动硬盘PE启动原理WinPE文件组成:引导文件:NTLDR和NTDETECT.COM系统文件:WinNT.XPE(WinPE.XPE)和WinPE.IS_(或WinPE.IM...
  • cz_water
  • cz_water
  • 2009年08月23日 22:01
  • 3799

理解和使用Linux的硬件抽象层HAL

理解和使用Linux的硬件抽象层HAL 作者:刘旭晖 Raymond转载请注明出处Email:colorant@163.com BLOG:http://blog.csdn.net/colorant/主...
  • colorant
  • colorant
  • 2008年07月04日 14:47
  • 15444
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows 硬件抽象层问题
举报原因:
原因补充:

(最多只允许输入30个字)