|
电源自动识别包及其原理
注意:本文作为MXP的开源部分文章,电源自动识别功能已经包含在MXP里。现在开源了.所以单独做了一个包给大家(MXP很早已经集成了)。
[源!]SP2电源自动识别(2180).exe
[源!]SP3电源自动识别(5508).exe
在FTP上能找到。
这一先说一下电源自动识别包的使用方法:
打开\windows文件夹。
使用windows的搜索功能查找。
关键字:ntkrnl*.exe;ntkrp*.exe;nto*.exe;hal*.dll
注意:在“更多高级选项”中选上“搜索系统文件夹”、“搜索隐藏的文件夹”、“搜索子文件夹”。将查找的文件删除。
解压缩到MXP的安装目录即可。
注意:一定要选择是适合的版本,注意查看文件版本号。
继续之前先介绍一下电源模式:
因为硬件的原因(取决于主板类型)有多种电源。
例如CPU有单双核心、单、多路(多个物理CPU)。
就是在单核心单CPU时代还有standard PC、ACPI Uniprocessor PC等之分。
在这几种电源模式中standard PC的兼容性最好,但是有缺点,只支持单核心、单路CPU。另外不能软关机。
不能使用standard PC,虽然兼容性最好。因此就要使用电源的识别技术。
我尝试过几种。最后采用/DETECTHAL参数 让ntldr识别电源。
大家都知道VISTA 现在是基于镜像恢复安装,因为这种安装速度快。
最后采用/DETECTHAL参数 让ntldr识别电源。来源于微软是VISTA BETA中所带的,因为镜像恢复安装也需要判断电源类型。所以微软在ntldr中加入了识别电源的功能。但是后来删除了。
下面说一下制作方法:
这个电源基于用/DETECTHAL参数 让ntldr自动识别电源
在BOOT.ini中添加 /DETECTHAL参数。
一个修改好\BOOT.ini的例子:- [boot loader]
- timeout=0
- default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
- [operating systems]
- multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /DETECTHAL
复制代码
ntldr 是通过\windows\INF\dtecthal.inf来配置的。在系统启动的过程中自动加载正确的电源模式。-
- [Version]
- signature="$Windows NT$"
- DriverVer=07/01/2001
- [hal]
- MPS_MP = halmps.dll
- MPS_UP = halapic.dll
- E_ISA_UP = halstnd.dll
- ACPIPIC_UP = halacpi.dll
- ACPIAPIC_UP = halaacpi.dll
- ACPIAPIC_MP = halmacpi.dll
- [ACPIOptions]
- ACPIEnable = 2
- ACPIBiosDate = 01,01,1999
复制代码 接下来可以从XPE的数据库安装文件夹里提取下列文件:- hal.dll
- halaacpi.dll
- halacpi.dll
- halapic.dll
- halmacpi.dll
- halmps.dll
- halsp.dll
- ntkrnlmp.exe
- ntkrnlpa.exe
- ntkrpamp.exe
- ntoskrnl.exe
复制代码 注意:XPE的数据库会有几个版本不同的文件。要用相同的文件版本替换。
将这些文件放到\windows\i386下
将这些文件放到\windows\system32下
注意:\windows\system32的文件要重命名。
hal.dll->halstnd.dll
ntoskrnl.exe->ntkrnlup.exe
所需要的文件我都放在电源自动识别包里了。只要直接就行了。
不过这里注意一点:ntldr识别电源并不会修改注册表,也就是说加载电源模式但不会安装电源模式,因此要在i386下放好安装电源模式要用的文件。
[ 本帖最后由 happymy 于 2008-11-14 16:17 编辑 ] |
|