手动封装系统

来源:互联网 发布:房地产经济评价软件 编辑:程序博客网 时间:2024/04/29 07:28

解决问题
  手工封装其实只要解决两个问题,现有的工具无非也是解决这两个问题。这两个问题就是电源判断即突 
系统盘
破HAL限制,(这个是必要的,因为母机和客户机的配置通常不一样)以及SRS驱动相关(因为目前的机器配置更新越来越快,所以这个是必要的。这样能提高恢复光盘可用性)。工具的好处就是不要人工操作(程序都写好了),另外就是方便扩展性(例如你可以添加任何适合运行何种程序,或者隐藏P处理的黑框)。下面是这两个方面是如何突破的并达到手工封装系统。
电源判断的实现
  电源判断的实现有多种方法,方法: 
  Copy code 突破HAL限制 Longhorn的启示 Windows Server 2003之前,Sysprep受到“必须源计算机与目标计算机有着相同的HAL”的限制,在HAL不相同的时候,不能正确判断计算机电源管理模式。
  从2003年Windows Server 2003发布到2006年底Windows Vista的发布中的3年中,微软在研发Vista的时候,发布了以内部研发编号命名的Windows Longhorn测试版。 Windows Longhorn与以往的Windows在启动时有着一定的区别。
  第一,NTLDR 有一定区别,提供了“/detecthal” 接口;
  第二,BOOT.INI也支持“/detecthal”参数,以实现与NTLDR的结合;
  第三,INF文件夹中有了“dtecthal.inf”, 提供各种HAL类型检测的参数说明。
  有了这三个文件,可以让计算机在开机启动时即自动检测 HAL,从而可以自动判断电源管理选项。 移植Longhorn的HAL判断
  现今大多数人还是以使用Windows 2000/XP为主,所以,即使Longhorn的HAL判断再怎么强悍,不能移植到2000/XP中,也就不能使用。
  以下是在2000/XP总移植并使用Longhorn的HAL判断的具体方法:
  1>从系统中提取相应的HAL文件包:(WIN2000在SP4.CAB、WINDOWS XP SP2在SP2.CAB中) halacpi.dll halapic.dll halmps.dll halaacpi.dll halmacpi.dll hal.dll ntkrnlmp.exe ntkrnlpa.exe ntkrpamp.exe ntoskrnl.exe 提取完毕后将hal.dll更名为halstnd.dll,ntoskrnl.exe更名为ntkrnlup.exe;
  2>将上述相应的HAL文件包拷贝到准备封装的系统的%Windir%/SYSTEM32/下;
  3>将Longhorn的“dtecthal.inf”拷贝到准备封装的系统的%Windir%/INF/下;
  4>修改C:/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;
  6>删除准备封装的系统的HAL信息,删除注册表中以下键值,如果提示权限不足不能删除,则可用setacl.exe来修改权限再删除。 HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Enum/ACPI_HAL HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Enum/Root/ACPI_HAL HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Enum/ACPI_HAL HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Enum/Root/ACPI_HAL HKEY_LOCAL_MACHINE/SYSTEM/ControlSet003/Enum/ACPI_HAL HKEY_LOCAL_MACHINE/SYSTEM/ControlSet003/Enum/Root/ACPI_HAL HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/ACPI_HAL HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/Root/ACPI_HAL
  至此,突破了HAL限制的系统就已经准备完毕。由于这个技术本身就出自微软,所以对电源管理的判断几乎是100%。
  突破HAL限制的系统可以部署在任何HAL环境的计算机上,不再有“源计算机和目标计算机需有相同的HAL”的限制。
  Copy code
  突破S&R&S实例
  1>收集需要的srs驱动,方便期间,直接下载DPS提供的massstorage 驱动:
  2>解压驱动到c:/drivers 。
  3>编辑sysprep.ini 加入以下内容
  InstallFilesPath=C:/sysprep/i386
  然后在[SysprepMassStorage]段中添加需要的串口磁盘驱动,根据DPS驱动包的说明书,一般只集成Intel、nVIDIA、Uli、VIA、SiS、AMD的串口磁盘驱动即可,在对应的驱动包中的inf文件中,可以获得硬件的即插即用ID。
  例如:
  [SysprepMassStorage]
  PCI/VEN_1022&DEV_7469=c:/drivers/m/am/AMDEIDE.inf
  PCI/VEN_1002&DEV_4349=c:/drivers/m/at/atiide.inf
  PCI/VEN_10B9&DEV_5215=c:/drivers/m/au/1/ALIIDE.INF
  PCI/VEN_10B9&DEV_5219=c:/drivers/m/au/1/ALIIDE.INF
  PCI/VEN_10B9&DEV_5229=c:/drivers/m/au/1/ALIIDE.INF
  PCI/VEN_10B9&DEV_5228=c:/drivers/m/au/2/m5228.INF
  PCI/VEN_10B9&DEV_5281=c:/drivers/m/au/2/m5281.inf
  PCI/VEN_10B9&DEV_5287=c:/drivers/m/au/3/ulisata.inf
  PCI/VEN_10B9&DEV_5288=c:/drivers/m/au/4/ULISATA.INF
  PCI/VEN_10B9&DEV_5289=c:/drivers/m/au/5/ULISATA.INF
  PCI/VEN_8086&DEV_2652&CC_0104=c:/drivers/m/in/1/iastor.inf
  PCI/VEN_8086&DEV_27C3&CC_0104=c:/drivers/m/in/1/iastor.inf
  PCI/VEN_8086&DEV_2682&CC_0104=c:/drivers/m/in/1/iastor.inf
  PCI/VEN_8086&DEV_27C6&CC_0104=c:/drivers/m/in/1/iastor.inf
  PCI/VEN_8086&DEV_2822&CC_0104=c:/drivers/m/in/1/iastor.inf
  PCI/VEN_8086&DEV_2652&CC_0106=c:/drivers/m/in/1/iaahci.inf
  PCI/VEN_8086&DEV_2653&CC_0106=c:/drivers/m/in/1/iaahci.inf
  PCI/VEN_8086&DEV_27C1&CC_0106=c:/drivers/m/in/1/iaahci.inf
  PCI/VEN_8086&DEV_27C5&CC_0106=c:/drivers/m/in/1/iaahci.inf
  PCI/VEN_8086&DEV_2681&CC_0106=c:/drivers/m/in/1/iaahci.inf
  PCI/VEN_8086&DEV_2821&CC_0106=c:/drivers/m/in/1/iaahci.inf
  PCI/VEN_8086&DEV_24DF&CC_0104=c:/drivers/m/in/1/O/iastor.inf
  PCI/VEN_8086&DEV_25B0&CC_0104=c:/drivers/m/in/1/O/iastor.inf
  PCI/VEN_10DE&DEV_008E=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_00D5=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_00EE=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_00E3=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_0036=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_003E=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_0054=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_0055=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_0266=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_0267=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_036F=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_037E=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_037F=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_03F6=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_03F7=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_10DE&DEV_03E7=c:/drivers/m/N/TM/nvatabus.inf
  PCI/VEN_1039&DEV_0181=c:/drivers/M/SI/1/SISRaid1.INF
  PCI/VEN_1039&DEV_0180=c:/drivers/M/SI/2/SISRaid.INF
  PCI/VEN_1039&DEV_0182=c:/drivers/M/SI/3/SISRaid2.INF
  PCI/VEN_1106&DEV_3349&CC_0104=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_6287&CC_0106=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_0591&CC_0104=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_3249&CC_0104=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_3149&CC_0104=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_3164&CC_0104=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_0581&CC_0104=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_7372&CC_0104=c:/drivers/M/V/1/VIAMRAID.INF
  PCI/VEN_1106&DEV_4149=c:/drivers/M/V/2/viapide.inf
  PCI/VEN_1106&DEV_3149&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_1106&DEV_0591&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_1106&DEV_5337&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_1106&DEV_3349&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_1106&DEV_5287&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_1106&DEV_3164&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_1106&DEV_0581&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_1106&DEV_5324&CC_0101=c:/drivers/M/V/3/vminiide.inf
  PCI/VEN_104B&DEV_1040=c:/drivers/M/VM/vmscsi.inf
  4>在c:/sysprep 目录下建立 i386/$oem$目录 ,在c:/sysprep/i386/$oem$ 中建立cmdlines.txt 文件,在文件中加入
  [Commands]
  "c:/sysprep/sysprep -clean"
  这样就会在最小化安装的过程中禁用所有因为在目标计算机上不存在而未安装的大量存储控制器。
  至此,一个突破了S&R&S限制的系统映像准备完毕。
  执行sysprep进行封装,在封装的过程中,系统会自动安装 srs驱动。在最小化安装的时候会删除多余的驱动。
  上述的方法你掌握了,你即突破了关键性技术问题!下面老事重谈,罗嗦一遍做个总结!
  Copy code
  1、安装WindowsXP
  2、安装软件(可选)
  推荐安装OFFICE 2003中的ACCESS、EXCEL、WORD三组件的最小安装,智能ABC 5.22破解,WINRAR、WINDOWS优化大师、FLASHGET、BITCOMIT、暴风影音、ACDSEE
  3、保存本用户的输入法设置
  打开 控制面板-区域和语言选项-高级 将 “将所有设置应用于当前用户帐户和默认用户配置文件(D)” 选框选上,解决安装的输入法在系统还原后,系统托盘没显示的问题。
  4、保存文件到系统目录(这里提到的DD我会提供给大家的!)
  解压缩AutoHAL.rar
  复制里面的halacpi.dll、halapic.dll、halmps.dll、halaacpi.dll、halmacpi.dll、halstnd.dll、ntkrnlmp.exe、ntkrnlpa.exe、ntkrpamp.exe、ntkrnlup.exe十个文件到/WINDOWS/SYSTEM32/
  复制dtecthal.inf到/WINDOWS/INF/
  复制run.bat到/WINDOWS/
  复制boot.ini、bootXP.ini、ntldr、ntldrXP到系统根目录
  解压缩sysprep.rar到根目录/sysprep/
  重新执行setupmgr.exe按照提示制作sysprep.inf文件(也可以沿用里面包含的sysprep.inf)
  5、系统减肥计划
  1、关闭系统还原
  2、关闭系统休眠
  3、转移虚拟内存页面文件
  4、清理磁盘,删除系统和IE临时文件
  在“Internet选项”中删除Internet临时文件和脱机内容,删除Cookies,清除历史记录。
  删除 C:/Documents and Settings/Administrator/Local Settings/Temp/ 下所有文件。
  删除 C:/Program Files/UPDATE/*.*
  删除 C:/Program Files/InstallShield Installation Information/*.*
  删除 C:/Program Files/WindowsUpdate/*.*
  删除 C:/WINDOWS/Temp 下所有文件
  删除 C:/WINDOWS 下所有以“$NtUninstall*$”为命名格式的隐藏目录
  删除 C:/WINDOWS 下所有以KB8打头的和Q打头的.log文件
  删除 C:/WINDOWS/SoftwareDistribution/Download/*.*
  删除 C:/WINDOWS/Installer/*.*
  删除 C:/WINDOWS/Downloaded Installations/*.*
  5、移动我的文档至 D:/My Documents(可选)
  6、删除、更改系统硬件驱动
  做封装所用的计算机中所使用的驱动程序,在被部署的计算机上大多数不再有用(除非都被部署在相同硬件配置的计算机上)。所以,要一一删除源计算机中的这些驱动,以免残留的驱动造成部署的不正常。
  卸载驱动,在“设备管理器”(我的电脑,属性,硬件,设备管理器)中列出所有设备,然后一一卸载。
  在设备管理器中,可以看到当前正在使用的所有硬件设备。
  【1、更改“IDE ATA/ATAPI控制器”为“标准双通道 PCI IDE 控制器”
  2、更改计算机电源管理模式“Advanced Configuration Power Interface(ACPI)”为 “Standard PC”
  【1和2不懂看这里:
  、更改IDE ATA/ATAPI控制器
  点击“更新驱动程序”-“从列表或指定位置安装”-“不要搜索,要选择自己的驱动”改成“标准的双通道PCI IDE控制器”
  2、再把“计算机”里的内容改为“Standard PC”
  点击“更新驱动程序”-“从列表或指定位置安装”-“不要搜索,要选择自己的驱动”改成“Standard PC”】
  3、卸载网络适配器
  4、卸载通用串行总线控制器
  5、卸载声音、视频游戏控制器
  6、卸载监视器
  7、卸载显示卡(注意先后顺序!)
  7、清理信息
  1、清理“事件查看器”内信息
  2、清理“菜单”访问记录
  3、清理IE缓存信息
  8、运行/sysprep/DllCacheManager.exe备份DLL文件
  9、运行“磁盘碎片整理程序”
  10、执行sysprep.exe封装系统
  11、运行regedit,查找hal项,删除***_HAL注册表项。删除时,在要删除的项上点右键,然后选择“权限” ,为当前用户添加“完全控制”权限即可
  不懂看这里:删除HAL文件一项具体操作过程:
  1、点“开始” - “运行” - 输入“regedit”
  2、选中“HKEY_LOCAL_MACHINE”
  3、选择“编辑” - “查找” - “查看”选项选择上“项”就可以 - “全字匹配”钩去掉 - 选“查找”
  4、不断的查找,一直找到含有 “***_HAL”字样的地方,一般在“HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/Root”和“HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/”中都有,大概有四个。
  5、项上点右键,然后选择“权限” ,为当前用户添加“完全控制”权限。
  6、删除有“***_HAL”字样的项,几个都删除才可以。
  12、关闭系统,制作GHOST

原创粉丝点击