微软官方背景资料:
如何通过Sysprep准备磁盘复制所需的映像
Windows 如何确定 ACPI 兼容性
安装 Windows XP 或 Windows Server 2003 之后的 HAL 选项
众所周知,微软自带系统封装工具SYSPREP,可以方便快捷地进行企业产品部署,但是在WINDOWS LONGHORN之前,运用SYSPREP有一个限制,就是仅适用于用于封装的源计算机和目标计算机必须具有相同硬件抽象层 (HAL),因此,不同的网友均提出了不用的HAL检测解决方案,如ACPI封包、.的电源模式等等,这些解决方案不同程度存在几个缺点:
1、检测的兼容性无法达到100%;
2、检测需要额外的文件,并且可能需要重新启动计算机,耗费了时间;
有没有一个最完美的解决方案呢?答案其实就在微软未公开的技术。
笔者通过对于WINDOWS LONGHORN各内测版本进行分析,现在公开微软部分未公开的技术:
1、微软自WINDOWS LONGHORN后,改写了NTLDR的部分代码,提供了/detecthal 接口
2、BOOT.INI支持/detecthal参数,以实现与NTLDR的结合,并实现开机启动即自动检测HAL
3、/INF/dtecthal.inf是一个关键性文件,提供各种HAL类型检测的参数说明
以下为进行SYSPREP封装后的自动完美检测HAL具体实现方案:
1、从系统中提取相应的HAL文件包:(WIN2000在SP4.CAB/WINDOWS XP SP2在SP2.CAB/WINDOWS 2003在SP1.CAB)
halacpi.dll
halapic.dll
halmps.dll
halaacpi.dll
halmacpi.dll
hal.dll---->并更名为halstnd.dll
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe---->并更名为ntkrnlup.exe
2、将上述相应的HAL文件包拷贝到系统/WINDOWS/SYSTEM32/(WINDOWS 2000为/WINNT/SYSTEM32/)
3、将以下代码保存为dtecthal.inf并拷贝到/WINDOWS/INF/(WINDOWS 2000为/WINNT/INF/)
如果不可见,可在文件夹选项里在“显示所有的文件和文件夹”打上勾和“隐藏受保护的系统文件”去掉勾。
[Version]
signature="$Windows NT$"
DriverVer=07/01/2001,5.1.2600.2180
[hal]
acpipic_up = halacpi.dll
e_isa_up = halstnd.dll
mps_up = halapic.dll
mps_mp = halmps.dll
acpiapic_up = halaacpi.dll
acpiapic_mp = halmacpi.dll
;
;
;-------------------------------------------------------------------------
; Auto detecd Computer HAL with BIOS information
;-------------------------------------------------------------------------
; Copyright(R)1980-2005 Microsoft Crack Center MCC(1980-2005)
;
; tesk work by mstest@MCC 20050515
;
; mstested@hotmail.com
;-------------------------------------------------------------------------
;
;
; [ACPIOptions]
; This section lists options that affect the installation of ACPI on x86
;
; ACPIEnable
; 0 - ACPI will be disabled at install time regardless of the BIOS
; 1 - ACPI will be enabled at install time if an ACPI BIOS is present
; 2 - ACPI will be enabled based on the GoodACPIBios list, the NWACL
; and ACPIBiosDate
;
; ACPIBiosDate = mm,dd,yyyy
; Supplies the date that a BIOS must have to be considered good if it is
; not in the GoodACPIBios list. If a BIOS has a date greater than this and
; is not in the NWACL list, then it will be used unless ACPIEnable = 0
;
[ACPIOptions]
ACPIEnable = 2
ACPIBiosDate = 01,01,1999
4、修改BOOT.INI
在准备封装的系统后面加上 /DETECTHAL参数
如:
[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" /fastdetect /detecthal
5、将LONGHORN版本的NTLDR拷贝到从C:/,覆盖原有的NTLDR
longhorn电源判断封装恢复Ghost 制作教程
一、准备工作
=================================================================================
1、首先,当然是要准备一台能用的电脑了,推荐使用AMD平台,这样会大大减少不兼容的几率。
2、准备所需工具软件
相应的HAL文件:(WIN2000在SP4.CAB/WINDOWS XP SP2在SP2.CAB/WINDOWS 2003在SP1.CAB)
DEPLOY.CAB(在系统安装光盘:/SUPPORT/TOOLS目录下自带)
Ghost v8.0 .or. Ghost v8.2
Windows2K/XP/2003系统安装光盘(推荐使用免激活的版本)
DllCacheManager V1.0(.国专用版)Dllcache备份还原工具
3、安装操作系统
首先当然是分区格式化了,建议用FAT32格式,然后用format c:/s格式化C盘,这样的话,系统就带一个DOS,方便以后系统维护:)
然后按正常的步骤安装好操作系统,并打好系统补丁。
4、安装常用的应用软件
根据各自的需要,安装常用的工具,如:Office,WinRAR,RealPlayer,输入法等......
5、安装DllCacheManager_V1.0(.国专用版)Dllcache备份还原工具
解压DllCacheManager.rar文件,然后把DllCacheManager.exe、ZProgBar.ocx两文件拷贝到C:/。
二、系统减肥
=================================================================================
为了减少Ghost恢复镜像备份文件时所需时间,或在一张光盘上尽可能安装更多的软件,这就需要将Ghost备份文件制作得足够小,因此我们需要对系统进行一系列的减肥工作。当然如果你对Ghost备份文件的体积不介意的话,就没有必要对系统进行减肥。要想把镜像控制在700M以内,系统就有必要控制在1.35G左右。
1、关闭系统还原
2、关闭系统休眠
3、转移虚拟内存页面文件
注:以上三项在系统封装完以后,重进系统时会还原。而且如果系统是FAT32格式,且Ghost版本在8.0以上,进行克隆时会自动去掉系统休眠(hiberfil.sys)文件及虚拟内存(pagefile.sys)文件,至于系统还原还没试过,不很清楚,有知道的哪位DX可否告知一下。
4、清理磁盘,删除系统和IE临时文件
删除C:/WINDOWS/目录下$NtUnins***$的文件夹
删除C:/WINDOWS/SoftwareDistribution/Download下的所有文件夹
删除C:/WINDOWS/Installer下的$PatchCache$目录
5、移动我的文档至D:/我的文档
三、删除、更改系统硬件驱动
=================================================================================
1、更改IDE ATA/ATAPI控制器为“标准双通道 PCI IDE 控制器”
2、更改计算机电源管理模式 Advanced Configuration Power Interface(ACPI) 为 Standard PC
打开设备管理器,右键点击“计算机”下的“Advanced Configuration Power Interface(ACPI)”,选择“更改驱动程序”,在弹出的“硬件更新向导”对话框中选择“从列表或指定位置安装(高级)”,点击下一步,再选择“不要搜索,我要自己选择要安装的驱动程序”,再点击下一步,选中“Standard PC”,再点击下一步,硬件管理器会自动安装Standard PC的驱动,之后电脑会提示重新启动,则选择“否”不启动,完成OK。
3、卸载硬件驱动
(1)卸载网络适配器。
(2)卸载通用串行总线控制器。
(3)卸载声音、视频游戏控制器。
(4)卸载监视器。
(5)卸载显示卡。
注:卸载硬件驱动时如系统提示要重新启动,则选择“否”不启动。
四、拷贝所需的文件
=================================================================================
1、从系统中提取如下文件(WIN2000在SP4.CAB/WINDOWS XP SP2在SP2.CAB/WINDOWS 2003在SP1.CAB中):
halacpi.dll
halapic.dll
halmps.dll
halaacpi.dll
halmacpi.dll
hal.dll →并更名为halstnd.dll
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe →并更名为ntkrnlup.exe
2、将上述文件拷贝到系统/WINDOWS/SYSTEM32/(2000为/WINNT/SYSTEM32/)目录;
3、将以下代码保存为dtecthal.inf并拷贝到/WINDOWS/INF/(WINDOWS 2000为/WINNT/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
4、将原文件BOOT.INI重命名,如:BOOT1.INI,修改BOOT1.INI,在准备封装的系统后面加上 /DETECTHAL参数,另存为BOOT.INI
如:
[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"
注:如果你是采用的是FAT32格式且格式化时是用format c:/s,那么建议保留最后一行,这样启动时会有两个选项,一个是进系统,一个是进DOS。
5、将系统下的NTLDR文件重命名,如:NTLDR3,将LONGHORN版本的NTLDR拷贝到从C:/
6、解压DEPLOY.CAB到c:/ sysprep
7、创建批处理文件,作为封装完后运行的命令,
如:
@echo off
cd c:/
del ntldr
ren ntldr3 ntldr
attrib ntldr +h +s +r
attrib boot.ini -h -s -r
del boot.ini
ren boot1.ini boot.ini
attrib boot.ini +h +s +r
del ZProgBar.ocx
del c:/windows/run.bat
exit
另存为C:/WINDOWS/RUN.BAT
五、封装
=================================================================================
1、创建sysprep.inf自动应答文件
这里就不在复述,只是在“运行一次”里要记得加入run.bat命令
2、重新封装系统
运行Sysprep目录中的Sysprep.exe对系统直接进行封装,这里在需要选上前三项,即:不重置激活的宽限期、使用最小化安装、不重新产生安全标识符,关机模式选退出,选项设置好后点“重新封装”就可以了。封装过程大概30秒左右,完成后就会自动退出。
3、保存本用户的输入法设置
打开 控制面板-区域和语言选项-高级 将 “将所有设置应用于当前用户帐户和默认用户配置文件(D)” 选框选上,解决安装的输入法在系统还原后,系统托盘没显示的问题。
4、备份DllCache目录文件
运行C:/下的DllCacheManager.exe,选上“恢复时自动删除自己”,然后点备份即可。这一步可减少磁盘占用空间300M左右。
5、修改注册表
运行regedit,查找hal项,删除***HAL注册表项,删除时,在要删除的项上点右键,然后选择 权限 ,为一个用户添加完全权限即可。在完成以上步骤后,C盘中的系统已经是一个经过重新封装的干净系统了,至此整个封装系统的制作就算完成。接下来的工作就是用DOS启动计算机,将制作好的干净系统制作成Ghost镜像文件,以便装机时使用。
六、制作镜像
=================================================================================
用DOS启动计算机,运行ghost –z9,保存镜像文件。