硬件无关性和软件重复安装的一些处理教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

硬件无关性和软件重复安装的一些处理教程驱动程序是沟通操作系统和硬件的重要桥梁,通过驱动程序可以让操作系统识别更多的硬件,并使硬件发挥更好的性能。然而封装系统时我们必须要处理一下源计算机的硬件驱动,毕竟你无法确定目标计算机是怎么样的硬件环境。Windows操作系统是即插即用的,也就是说当出现新硬件时会自动去识别,如果可能则会自动安装该设备的驱动。所以即使我们不处理源计算机操作系统的驱动程序,当系统部署到新计算机时也会自动的识别新硬件,这也可能是为什么微软没有强调封装部署必须处理驱动程序的原因之一。但现实情况事与愿违,某些硬件驱动由于硬件ID的问题本身就存在冲突,某些时候有些驱动程序的残留会造成不良影响等等,这虽然不是Windows的原因而是驱动制作者的问题,但这些情况实实在在的影响了系统封装与部署。我们要讲理论,可也要结合实践,实践才能出真知。所以做好硬件无关性只需要弄明白并处理好下面几个问题即可:A.硬件抽象层(HAL)的处理什么是HAL?硬件抽象层(HardwareAbstractionLayer,简称HAL),位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。简单说就是将硬件抽象化,以利于各种操作。HAL类型又被很多技术员称为“电源管理模式”或简称“电源”。WindowsXP的HAL有很多种,有“AdvancedConfigurationandPowerInterface(ACPI)PC”、“ACPIMultiprocessorPC”、“ACPIUniprocessorPC”、“MPSMultiprocessorPC”、“MPSUniprocessorPC”、“StandardPC”以及等等,种类很多,而且特殊的计算机硬件还会有特殊的HAL。Windows2000、WindowsServer2003这些与WindowsXP同属于Win5.x的操作系统亦是如此,HAL种类繁多。如果算上32位和64位系统的差别,那么HAL的种类至少还要乘2来计算。Windows7的HAL就简单多了,分为了32位和64位系统两种:“ACPIx86-basedPC”和“ACPIx64-basedPC”,中文版本可能翻译了其名称,“ACPI基于x86的电脑”和“ACPI基于x64的电脑”。WindowsVista、WindowsServer2008这些与Windows7同属于Win6.x的操作系统也是一样,HAL简单高效。某些特定机型还有个别专用的HAL,一般用户很少碰到。根据微软文档的要求,封装与部署不可用于不同HAL的计算机。不同的HAL之间是不完全通用的,如果非要把不适合此计算机的HAL用于此计算机,那么很容易出现各种错误。最常见的例子,如部署有WindowsXP某计算机在系统部署后无法正常关机和重启。说完了x86与x64的操作系统,我们再来回头看看Win7的HAL。在排除其他因素(如磁盘控制器驱动、兼容性问题等)的影响后:(1)如果我们封装了具有x86HAL的Win7操作系统,可以部署于所有拥有32位和64位CPU的计算机。但只支持3.25G内存,只支持32位软件。(2)如果我们封装了具有x64HAL的Win7操作系统,只可以部署于拥有64位CPU的计算机。支持更大的内存,同时支持32位和64位软件。这样看,只要我们避免将拥有x64HAL的Win7系统映像部署于32位的计算机中就可以了,不用像WinXP时那么麻烦了!B.硬件驱动程序的处理Windows具备即插即用(PNP)能力,即添加或更改一个硬件后会自动的尽可能的为其安装硬件。所以将系统映像部署到目标计算机,对于Windows来说不过是一次性更换了大量硬件而已。所以一定层面上讲,使卸载驱动成为必须要做的过程的并不是Windows本身,而是硬件厂商开发驱动的能力。各硬件厂商的实力不同,自然对驱动程序的开发能力也不相同,有时某些驱动本身就存在一定的BUG(如早年ATI和VIA的驱动),有时不同厂商之间的配合出现一定问题(如Realtek和ADI曾经存在硬件ID冲突问题),有时在源计算机中正常的驱动到了目标计算机上会因为硬件的不同而造成问题(如IntelPPM驱动,到AMDCPU的机器上会蓝屏),这一系列的问题让我们必须要对驱动程序做做文章了。一般的驱动卸载方法和注意事项:硬件驱动卸载方法我相信大家都会,打开“设备管理器”,展开所有项目逐一卸载就可以了,但是注意下述项目:(1)关于“IDEATA/ATAPI控制器”(2)曾经盛传需要将“IDEATA/ATAPI控制器”下凡是“某某控制器”一律改为“标准双通道PCIIDE控制器”,据说可以加强兼容性。但经过长时间的观察与实践,结合相关理论后,发现这个说法存在一定的谬误。即使都是“标准双通道PCIIDE控制器”,但是此“标准双通道PCIIDE控制器”非彼“标准双通道PCIIDE控制器”。需要为一个硬件安装什么驱动,是由硬件ID(HWID)来决定的。HWID类似人的身份证一样,理论上是一种硬件的唯一编号,而我们在设备管理器中所看到的硬件设备名,都是通过驱动INF中HWID与其名称对应关系来决定的。就像我们有同名但身份证号不同的人一样,存在着都叫做“标准双通道PCIIDE控制器”但HWID不同的硬件,且不在少数。所以即使源计算机中改为“标准双通道PCIIDE控制器”,但如果只是和目标计算机中的控制器同名不同HWID,那么就是一种徒劳,且这样会让我们残留“IDEATA/ATAPI控制器”的驱动,可能会对目标计算机的部署造成影响。那么我们对“IDEATA/ATAPI控制器”要做的是卸载,而不是修改!对“IDEATA/ATAPI控制器”执行卸载操作已经经过了实践验证,未发现问题。(3)关于“计算机”(HAL,或俗称“电源管理”、“电源”)(4)曾经盛传将HAL改为StandardPC可以提高兼容性,这是仅次于(1)的一个谬误。HAL改为StandardPC倒是还有一点根据,StandardPC是具有最高兼容性的HAL,就像一个人虽然做事做不好,但至少不会出错。使用StandardPC如若出现HAL不匹配问题至多是计算机无法正常关机,计算机电源管理能力下降而已。但是,在上文中我们已经学习了WinXP和Win7的HAL处理方式,现在我想您也可以看出这个说法的谬误。我们又使用了其他方法直接删除了源计算机的HAL,干净利索无残留。所以我们针对WinXP的HAL,至多做个卸载工作。对于Win7,文中已经详细说明,只要我们搞清楚我们封装的系统是x86还是x64,要部署的计算机的CPU是32位还是64位就可以了,根本无需专门处理HAL。当然,我们也不要卸载Win7的HAL,这是画蛇添足的行为。总结,根据我们对HAL的认识和已有的处理方法,对于WinXP,至多做个卸载工作);对于Win7,无需卸载HAL,不用管它。(3)哪些驱动不需要卸载?有些驱动经过长期实践发现是无需卸载的,如下:WinXP:PS2键盘、PS2鼠标、系统设备;Win7:PS2键盘、PS2鼠标、系统设备、HAL。(严格讲,还应包括“遗留设备(LegacyDriver)”,)(4)还有哪些需要特别注意?第一,某些驱动的卸载是有顺序的,建议按照设别管理器从下到上的顺序执行卸载,某些驱动的卸载可能触发其他驱动的安装。第二,Windows\Inf下的Oem*.inf是已安装驱动的INF文件,建议卸载驱动前删除它们,避免个别驱动在被触发搜寻驱动时使用Oem*.inf中的信息执行自动安装。系统部署安装驱动时会自动再生成,无需担心。第三,Windows\Inf下的*.pnf,是驱动INF的预编译文件,建议全部删除,系统部署时会自动再生成,无需担心。第四,注意清理一下HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network下的{4D36E972-E325-11CE-BFC1-08002BE10318}和{6BDD1FC5-810F-11D0-BEC7-08002BE2092F}键,即删除后重建,否则部署后可能出现“本地连接2”。第五,将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\intelppm键的Start键值改为3,即将此服务改为手动。IntelPPM驱动是用于IntelCPU的,如果使用IntelCPU的计算机作为源计算机,此服务即会启动,而将此系统封装后部署于AMDCPU的计算机就会造成蓝屏宕机问题。而如果使用AMDCPU的计算机作为源计算机,WinXP下将没有此服务,Win7下则自动设为手动,无需额外处理。第六,尽可能使用硬件较少的计算机作为源计算机,这样可以最大程度的减少被安装驱动的数量。如使用实机,建议在BIOS里关掉不必要的项目。理解并做好了上述工作,我们制作如图所示节点:给用户指派所需要的节点即可处理大量本该重复的工作了;如有软件是用户不需要的,我们做如下处理,过程可以举一反三,见图:教程完毕。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功