不封装制作ghost不是很稳定,对非同类芯片支持效果不好,所以这里的方法仅供学习研究
1.准备工作。选用免激活版本XP2。准备好NTLDR和HAL等相关文件。
方便的话可以拆下网卡,省得去处理“本地连接2”的问题。
2.安装系统,优化。如添加输入法,请应用于所有用户。建议关闭系统还原。
运行组策略,调整驱动签名等设置。
3.更改IDE ATA/ATAPI控制器为“标准双通道 PCI IDE 控制器”。
4.运行msconfig.exe选中“诊断启动”项后,再重启。重启后重新运行msconfig.exe并选中“正常启动”项。
附:这一步很重要的,恢复时有利用到“LastKnownGoodRecovery”也就是所谓的“最后一次正确配置”。这和微软的封
装方式刚好相反。
5.利用WINDOWS LONGHORN版本NTLDR提供的/detecthal 接口来自动检测HAL
halacpi.dll
halapic.dll
halmps.dll
halaacpi.dll
halmacpi.dll
hal.dll →并更名为halstnd.dll
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe →并更名为ntkrnlup.exe
将上述文件拷贝到系统\WINDOWS\SYSTEM32\
将dtecthal.inf拷贝到\WINDOWS\INF\
将系统下的NTLDR文件重命名,如:NTLDR_,将LONGHORN版本的NTLDR拷贝到从C:\
6.处理BOOT.INI,在准备封装的系统后面加上 /DETECTHAL
[boot loader]
timeout=3
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
C:\ = "Microsoft Windows"
将原文件BOOT.INI重命名,如:BOOT_.INI
7.处理驱动和服务相关的注册表项目,可以用批处理来完成,也可以手工完成。
主要是处理“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum”这个项下。
附1:只要保留这2项,其它的都可以删除:
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root”--这个子项主要是包含一些服务和软件创建的一些
设备。其中也包含“ACPI Uniprocessor PC”和“Composite Battery”,这两个是可删除的。
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HTREE”,这个是根目录树,具体作用不清楚。
附2:“HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices”这一项也可放心删除。
附3:微软的最小安装可以让驱动安静安装。但这种没封装的克隆,恢复时有的驱动可以安静安装,有的却不行(如声卡,显卡)。其实秘密
就在注册表中的驱动类别。具体的位置在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class”。
8.要完美地删除驱动要做到和用“设备入理器”卸载驱动一样。驱动在注册表中一般和这3个位置有关:
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class”
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum”
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services”
删除“Enum”里的一个硬件信息,同时也要处理另外的2个地方。
9.编辑恢复登录时要运行的脚本。一般为优化系统服务的脚本。
创建批处理文件,作为封装完后运行的命令,
如:
@echo off
cd c:\
attrib ntldr -h -s -r
attrib ntldr_ -h -s -r
copy /y ntldr_ ntldr
attrib ntldr +h +s +r
attrib boot_.ini -h -s -r
attrib boot.ini -h -s -r
copy /y boot_.ini boot.ini
attrib boot.ini +h +s +r
exit
10.最后安装加载串口,阵列,SCSI驱动。
11.重启克隆。
为什么要替换LONGHORN的NTLDR呢?
众所周知,微软自带系统封装工具SYSPREP,可以方便快捷地进行企业产品部署,但是在WINDOWS LONGHORN之前,运用SYSPREP有一个限制,就是仅适用于用于封装的源计算机和目标计算机必须具有相同硬件抽象层 (HAL),因此,不同的网友均提出了不用的HAL检测解决方案,如ACPI封包、死性不改的电源模式等等,这些解决方案不同程度存在几个缺点:
1、检测的兼容性无法达到100%;
2、检测需要额外的文件,并且可能需要重新启动计算机,耗费了时间;
有没有一个最完美的解决方案呢?答案其实就在微软未公开的技术。
1、微软自WINDOWS LONGHORN后,改写了NTLDR的部分代码,提供了/detecthal 接口
2、BOOT.INI支持/detecthal参数,以实现与NTLDR的结合,并实现开机启动即自动检测HAL
3、\INF\dtecthal.inf是一个关键性文件,提供各种HAL类型检测的参数说明。
以上内容,5、6、9是关键,7、8和后面的脚本都是删除硬件驱动的,并不是固定的模式,可以自己灵活运用,手动删除后再运行批处理是更把握的。
更改注册表的批处理:
::通用串行总线控制器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}" /v SilentInstall /d 1 /f
::IEEE 1394 和 SCSI 打印机
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4658EE7E-F050-11D1-B6BD-00C04FA372A7}" /v SilentInstall /d 1 /f
::IEEE 1284.4 设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{48721B56-6795-11D2-B1A8-0080C72E74A2}" /v SilentInstall /d 1 /f
::IEEE 1284.4 兼容打印机
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{49CE6AC8-6F86-11D2-B1E5-0080C72E74A2}" /v SilentInstall /d 1 /f
::计算机
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E966-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::显示卡
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::软盘控制器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E969-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::IDE控制器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::键盘
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::声卡
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::调制解调器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::监视器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96E-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::鼠标
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::内存控制器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E970-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::多功能卡
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E971-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::网卡
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}" /v SilentInstall /d 1 /f
::网络客户
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E973-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::网络报务
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E974-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::网络协议
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E975-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::PCMCIA卡
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E977-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::串口并口
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E978-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::打印机
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E979-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::SCSI和RAID控制器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::系统设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E97D-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::其它设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E97E-E325-11CE-BFC1-08002BE10318}" /v SilentInstall /d 1 /f
::CPU
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{50127DC3-0F36-415E-A6CC-4CB3BE910B65}" /v SilentInstall /d 1 /f
::多串口卡
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{50906CB8-BA12-11D1-BF5D-0000F805F530}" /v SilentInstall /d 1 /f
::智能卡阅读器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{50DD5230-BA8A-11D1-BF5D-0000F805F530}" /v SilentInstall /d 1 /f
::IEEE 1394总线主控制器
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC1-810F-11D0-BEC7-08002BE2092F}" /v SilentInstall /d 1 /f
::红外线设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC5-810F-11D0-BEC7-08002BE2092F}" /v SilentInstall /d 1 /f
::图像处理设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}" /v SilentInstall /d 1 /f
::电池
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{72631E54-78A4-11D0-BCF7-00AA00B7B32A}" /v SilentInstall /d 1 /f
::人体学输入设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}" /v SilentInstall /d 1 /f
::
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{A0A588A4-C46F-4B37-B7EA-C82FE89870C6}" /v SilentInstall /d 1 /f
::AVC设备
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{C06FF265-AE09-48F0-812C-16753D7CBA83}" /v SilentInstall /d 1 /f
清除幽灵驱动.bat
=======================
@echo off
:: CPU
devcon remove ACPI\Processor
::GAME Port
devcon remove PCI\CC_09*
::网卡
devcon remove PCI\CC_02*
::声卡
devcon remove PCI\CC_04*
:: USB HOST and SMBus
devcon remove PCI\CC_0C*
:: 监视器
devcon remove DISPLAY\*
:: 显卡
devcon remove PCI\CC_03*
:: 芯片组
devcon remove PCI\CC_0604*
:: 磁盘卷
devcon remove @STORAGE\*
:: USB存储卷
devcon remove @USBSTOR\*
:: USB设备
devcon remove @USB\*
:: 人机接口设备
devcon remove @HID\*
:: IDE设备
devcon remove @ide\*
:: IDE Channel
devcon remove @PCIIDE\*
\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