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. 重新启动计算机。

Android GPS HAL 硬件抽象层

  • 2015年06月19日 10:24
  • 376KB
  • 下载

Android硬件抽象层(HAL)

  • 2013年10月23日 10:02
  • 112KB
  • 下载

在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序

在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简要介绍了在Android系统为为硬件编写驱动程序的方法。简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的...

Android HAL(硬件抽象层)介绍以及调用

1 HAL简介 Android 的 HAL(Hardware Abstract Layer硬件抽象层)是Google因应厂商「希望不公开源码」的要求下,所推出的新观念,其架构如下图。虽然 HA...
  • myxmu
  • myxmu
  • 2013年01月01日 10:52
  • 771

老罗的ANDROID之旅---硬件抽象层学习笔记

下面是在学习老罗的ANDROID之旅hal过程中的笔记: 基本上都是从其COPY的 Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说...

Android硬件抽象层(HAL)深入剖析(一)

作为一个搞android驱动或者说搞底层的人,我觉得对于hal那是必须要掌握的,而且必须达到一定深度,于是我总结了一下,将整个自己的分析思路写下来。 主要是看android源代码,根据源代码得到的思...

Android架构分析之使用自定义硬件抽象层(HAL)模块

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz Android版本:2.3.7_r1 Linux内核版本:android-goldfish-2.6.29 ...

关于Android硬件抽象层

1.为什么需要硬件抽象层? 硬件抽象层是把部分的驱动的工作放到用户态,这样做是因为Linux遵循GUN License 发布的时候需要公开源代码,而Android是遵循Apache License,无...

ble学习笔记十-------------ble协义栈之硬件抽象层

------------------------硬件抽象层 硬件抽象层文件目录     HAL-Common 协议栈 mac和驱动中使用到的相关配置文件      Hal_drivers.c...

Android硬件抽象层(HAL)概要介绍和学习计划

转载自:http://blog.csdn.net/luoshengyang/article/details/6567257    Android的硬件抽象层,简单来说,就是对Linux内核驱...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows 硬件抽象层问题
举报原因:
原因补充:

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