ximage.exe
Setide.exe 用来更改IDE和电源模式
SYSPREP.EXE 封装程序
devcon.exe 用来删除驱动
一、制作PE引导映像
1. 提取原始Install.wim的1和2映像解压到空分区(或虚拟分区,用命令:subst x: d:/boot subst y: d:/drive)
① 将 install.wim 中的内容张开到驱动器x:和y:
设 ximage 所在的目录在 D:/ximage;进入该目录,键入
ximage /apply d:/install.wim x: 1
ximage /apply d:/install.wim y: 2
② 将 x: 和 Y: 由的文件生成新的 WIM 文件:
ximage /flags 1 /boot x: e:/Install.wim "WinPE Boot Image"
ximage /flags 2 /append y: e:/Install.wim "WinPE Drive Image"
现在生成的Install.wim镜像已经含有PE必需的启动信息和驱动信息. (此文件可做个备份方便以后调用)
注意:如果你已经有带PE引导的*.wim文件,可不做此步骤
二、安装全新的Windows XP 和其它软件
三、删除修改驱动程序
运行 Setide.exe
四、优化系统
1、关闭“电源管理”下的的休眠功能。右击桌面空白处,选择“属性 →屏幕保护程序→电源→休眠”,取消“启用休眠”前的钩即可。
2、关闭系统还原
3、如果你安装了一些通过Windows Installer安装的软件,并且以后不打算删除或者修复这些软件,还可以有选择的把C:/WINDOWS/Installer下的一些.msi文件删除。
4、解压XP安装盘/SUPPORT/TOOLS/DEPLOY.CAB中的SYSPREP.EXE、setupcl.exe、setupmgr.exe到C:/sysprep目录
五、运行封装程序
1、运行C:/sysprep/setupmgr.exe 制作SYSPREP.INF文件
2、执行C:/sysprep/devcon.exe remove * 删除驱动
3、运行C:/sysprep/SYSPREP.EXE -mini -noreboot 封装系统
4、进行SYSPREP后计算机硬件抽象层HAL(电源模式)的完美解决 见下方的 进行SYSPREP后计算机硬件抽象层HAL(电源模式)的完美解决
5、重启电脑后用PE系统盘引导进入PE系统
六、在PE系统中制作映像文件
1、替换C:/WINDOWS/SYSTEM32/SETUP.BMP (安装背景图片、可不做)
2、追加自己封装的系统分区:
先删除pagefile.sys
del C:/pagefile.sys
ximage.exe /flags 0 /append C: D:/Install.wim "Windows XP VOL SP2 "
C: 表示系统所在盘符
4、用UltraISO将做好的install.wim替换iso中的install.wim
七、刻盘安装!
可制作2K,2003,XP的WIM安装盘
此制作方法还用2个问题
1、C:/ntldr文件需手动恢复
2、制作2K系统时在恢复系统时需修改Boot.ini文件(将WINDOWS改为WINNT)
(我自己写了个程序在恢复系统时自动恢复ntldr文件和修改Boot.ini文件)
ISO包含文件:
BOOT/
BOOTFIX.BIN
FS_EXT.SYS
SETUPLDR.BIN
SOURCES/
eula.txt
PIDGEN.DLL
setup.exe
SETUPP.INI
setup.exe.local
spflvrnt.dll
spwizeng.dll
wdscore.dll
wdsutil.dll
win32ui.dll
win32uitheme.dll
winsetup.dll
xmlrw.dll
网上的另一个方法:
WIM 封装的 Windows XP SP2 制作过程全记录
具体步骤如下:
1、安装 Windows XP SP2 最新版本,打好各种补丁,调整好各种设置。
2、用 Ghost 做好备份。
3、删除可以删除的各种垃圾,以减小体积,这一步一定要小心。
3、用 Setupmgr.exe 生成自动封装脚本 sysprep.inf 文件。
4、用 Sysprep.exe 执行封装操作。
5、用深山红叶启动光盘启动电脑,进行 Windows PE。用 Ximage.exe 执行 lzx 压缩。
① 下载 Longhorn 光盘,从中提取出 install.wim 文件放在 E:install.wim;
② 执行命令 ximage /info E:install.wim,观察看到的信息:
------------------------
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<WIM>
<IMAGE INDEX="0">
<DIRCOUNT>33</DIRCOUNT>
<FILECOUNT>979</FILECOUNT>
<TOTALBYTES>152267917</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x1C58977</HIGHPART>
<LOWPART>0x96FB6AE0</LOWPART>
</CREATIONTIME>
<DESCRIPTION>WINPE BOOT IMAGE</DESCRIPTION>
<FLAGS>1</FLAGS>
</IMAGE>
<IMAGE INDEX="1">
<DIRCOUNT>32</DIRCOUNT>
<FILECOUNT>976</FILECOUNT>
<TOTALBYTES>152267730</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x1C58977</HIGHPART>
<LOWPART>0xB38CF480</LOWPART>
</CREATIONTIME>
<DESCRIPTION>WINPE DRIVE IMAGE</DESCRIPTION>
<FLAGS>2</FLAGS>
</IMAGE>
<IMAGE INDEX="2">
<DIRCOUNT>1882</DIRCOUNT>
<FILECOUNT>22874</FILECOUNT>
<TOTALBYTES>3965721128</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x1C58C3D</HIGHPART>
<LOWPART>0x9A7EE2A0</LOWPART>
</CREATIONTIME>
<DESCRIPTION>ALL IN 1 IMAGE</DESCRIPTION>
<FLAGS>0</FLAGS>
</IMAGE>
</WIM>
可以看到 flag 1 和 flags 2 包含了Windows PE 的启动信息和驱动部分。
③ 生成两个虚拟驱动器:
md D:/boot
md d:/drive
subst x: d:/boot
subst y: d:/drive
设 ximage 所在的目录在 D:/ximage;进入该目录,键入
ximage /apply e:/install.wim x: 1
ximage /apply e:/install.wim y: 2
⑤ 将 x: 和 Y: 由的文件生成新的 WIM 文件:
ximage /flags 1 /boot x: e:/install0.wim "BOOT IMAGE"
ximage /flags 2 /append y: e:/install0.wim "DRIVE IMAGE"
新生成的 install0.wim 文件比 install.wim 文件小很多。
⑥ 覆盖了原来的 install.wim 文件:
copy e:/install0.wim e:/install.wim
⑦ 将启动盘的所有内容压制到新 install.wim 文件中:
xiamge /flags 0 /append c: e:/install.wim "WINXP SP2 IMAGE"
这一步的时间很长,图拉丁1.2G 时执行 Ghost 只需要 4 分钟,用 ximage lzx 压缩需要 21 分钟。
6、用 Ghost 恢复系统。
7、将 insall.wim 文件放入下载的 iso 文件( www...net/bbs 有.提供的 iso 下载)中,重新生成 iso 镜像,刻盘,测试。
至此,整个封装过程结束。
由于 封装的 iso 内有大量的新驱动,在 vm 中测试可能会蓝屏,但在主机上安装不会有问题
制作基于longhorn安装方法的封装系统盘的方法 说明: 用Sysprep打造高质量的系统映像 安装Windows漫长、无聊的等待让许多人忍无可忍,于是除了标准的安装方法之外,许多别出心裁的安装方式出现了,利用磁盘映象部署就是其中的一种。为了更好地使用磁盘映像,微软提供了一个Sysprep工具。 Sysprep是一个“系统准备”工具,主要功能是在创建磁盘映像之前删除当前操作系统的所有唯一性信息,便于Ghost之类的工具复制磁盘映像。不过除此之外,Sysprep还有其他许多功能,充分利用这些功能将大大提高映像的质量。 一、延长映像的生存期 建筑需要坚固的基础才能经受住时间的考验,同样地,构造系统映像也需要优质的原材料和高超的技巧。为了构造出高质量的系统映像,不能让根本没用的驱动程序、注册键、应用程序混入映像文件,所以用来创建映像的源机器一定要全新安装。 在准备创建映像的过程中,Sysprep会断开源机器与域的联系——所以只要有可能,应该尽量避免将源机器加入到任何域,可以用本地的Administrator帐户安装应用程序、Service Pack和实施各种定制操作。为了尽可能地延长映像文件的使用时间,这个阶段的定制操作应当慎重。如果要改变某些设置,尽可能用cmdlines.txt脚本(后面将有详细讨论)。 在Windows中,每一个用户帐户有它自己的一套配置数据,如每个用户有不同的桌面设置、“我的文档”等,这类配置数据统称为配置文件。Windows会自动为每个新建的用户帐户设置默认的配置文件,但默认配置文件往往不能满足需要,必须经过定制才适合使用。对于大多数小型网络环境(或独立的机器),由于没有域服务器,不能通过组策略发布和管理用户的配置文件。那么,是否可以将定制的配置文件作为默认的配置文件加入到映像文件,也就是说,以后新建用户帐户时,让Windows自动将定制的配置文件作为默认配置文件呢?答案是肯定的,具体实现步骤是: ⑴ 建立一个临时的本地帐户,登录该帐户,定制桌面、开始菜单以及其他想要定制的与用户配置文件有关的设置,完成后,注销该帐户,然后用Administrator帐户登录。 ⑵ 为便于后继步骤的操作,配置资源管理器,使其显示隐藏的文件和文件夹。 ⑶ 右击“我的电脑”,选择“属性”,然后点击“高级”选项卡。在“用户配置文件”下面点击“设置”,选择为临时用户创建的配置文件,然后点击“复制到”,转到%SystemDrive%/Documents and Settings,选择Default User文件夹,点击“确定”。 ⑷ 在“允许使用”下面点击“更改”,输入everyone,如图一;点击“确定”、“确定”。 ⑸ 当系统询问是否要覆盖现有的默认用户配置文件时,回答“是”。
经过这番设置之后,第一次登录该系统(或用该映像创建的系统)的用户将采用上面设定的默认用户配置文件。 大多数较新的机器都需要操作系统安装盘本身没有提供的驱动程序。那么,如何让这类驱动程序也能自动安装呢?你必须把它们复制到硬盘上的某个位置,然后修改sysprep.inf指定这些位置(参见附录“自动创建Sysprep.inf文件”)。具体的操作步骤是: ㈠ 在系统驱动器的根目录下创建一个Sysprep目录,用来保存运行Sysprep必需的执行文件和sysprep.inf文件。 ㈡ 在系统驱动器的根目录或Sysprep目录下创建一个Drivers目录——如果你要让目标机器运行好最小安装后能够使用这些驱动程序,则在根目录下创建Drivers文件夹;如果将驱动程序保存在Sysprep目录下的文件夹,最小安装过程将清除它们(最小安装是Windows常规安装过程的简化版,它只询问尚未在sysprep.inf中回答的问题)。 ㈢ 在Drivers文件夹下,为不同的硬件设备创建相应的子目录保存驱动程序,将所有第三方驱动程序复制到相应的子目录。 ㈣ 接下来还要设置一下sysprep.inf文件,以便最小安装过程能够找到驱动程序,如下面的例子所示。注意安装程序不会搜索OemPnPDriverPath路径的子目录,所以每一个目录都必须分别指定:
二、挖掘sysprep.inf的潜力 要让同一个映像适用于不同类型的硬件系统,最关键的是要设置好sysprep.inf文件的SysprepMassStorage小节。你可以手工在这个小节中加入大容量存储设备的驱动程序,使得具有不同磁盘控制器的系统能够共享映像;或者干脆一点,你可以让Sysprep自动填写该小节,加入操作系统带有的所有大容量存储设备。 第二种办法的优点是一个映像文件可以支持大量的硬件设备——即使是创建映像时你还不可能想到的那些设备;其缺点是,在Sysprep处理期间引入所有的驱动程序需要额外耗费10到15分钟的时间,而且必须在目标系统上用-clean参数运行Sysprep。 让Sysprep自动加入大容量存储设备的操作步骤是: ⑴ 首先确保sysprep.inf同时提供Sysprep和SysprepMassStorage小节。 ⑵ 在Sysprep小节下面创建如下指令:BuildMassStorageSection=Yes。 ⑶ 打开一个命令窗口,转到sysprep.exe所在的目录,执行命令sysprep -bmsd。Sysprep将构造出SysprepMassStorage小节的内容并结束。 ⑷ 接着执行Sysprep -mini,完成最后的Sysprep操作。 除了SysprepMassStorage小节之外,sysprep.inf还有其他许多配置项目值得好好利用。例如,UserData小节用来定义安装期间典型问题的答案,凡是最小安装期间希望手工输入的内容,保留空白即可。如果你想让映像既能够用于多处理器的系统,也能够用于单处理器的系统,可以在Unattended小节中设定UpdateHAL或UpdateUPHAL。Identification小节的作用是自动加入域或者工作组。 最后,你可以用GuiUnattended小节的OEMDuplicatorString设置来辅助管理映像文件的修订,这个设置选项将把指定的字符串值加入到所有由该映像构造的系统;以后,当你要检查一下某台机器的操作系统是由哪一个映像构造时,可以检查注册键HKEY_LOCAL_MACHINE/SYSTEM/Setup/OemDuplicatorString确定原来的映像。 三、自动执行操作 为了提高安装过程的灵活性,你可以在安装期间或之后自动运行一些命令。如果要在最小安装结束后安装软件或运行程序、批命令文件、脚本,只要将相应的指令写入cmdlines.txt文件;如果要在目标系统重新启动后安装程序或运行命令,则必须将指令写入sysprep.inf文件的GuiRunOnce小节。 ■ cmdlines.txt 这个文件位于%SystemDrive%/Sysprep/i386/$oem$目录。下面是一个例子,它以-clean参数运行Sysprep,另外还执行Script1批命令、Program2程序:
cmdlines.txt文件的格式很简单,不过要注意以下几点: ⑴ sysprep.inf文件Unattended小节必须声明InstallFilesPath,并且使其指向$oem$文件夹所在的位置。 ⑵ 必须将所有要用到的文件复制到本地硬盘上。 ⑶ 如果cmdlines.txt包含的命令修改或创建了注册表设置,这部分设置将作为默认用户的设置写入,对所有新建的用户帐户都有效。 ⑷ 不能用cmdlines.txt安装那些使用Windows Installer的软件(.msi软件包)。 ■ GuiRunOnce 如果要在目标系统重新启动后再运行命令、批命令文件或脚本,可以在sysprep.inf文件的GuiRunOnce小节设置。该小节中设置的命令将在用户第一次登录时运行,要注意的几点是: ⑴ 必须启用了Autologon才能让GuiRunOnce设置的命令生效,即必须在GuiUnattended小节设置AutoLogon=Yes。 用引号括起每一个命令。 ⑵ GuiRunOnce小节里面的命令在当前登录用户的安全上下文下运行,注意用户权限是否允许运行当前的命令。 ⑶ 为保证所有的命令都被执行,必须禁止重新启动。如果某个用GuiRunOnce启动的程序提供了重新启动系统的选项(许多支持无人值守安装的软件都这样),你必须关闭重新启动。如果系统重新启动,GuiRunOnce里面后继的命令将不再被执行。 ⑷ 如果要安装多个应用软件,用start命令和/wait参数启动安装程序,避免各个程序之间相互影响。 四、附录:自动创建sysprep.inf文件 创建sysprep.inf文件最方便的途径是使用微软的Setup Manager(安装管理器)程序。对于Windows XP,你可以在XP CD-ROM的/Support/Tools目录的deploy.cab文件里找到它。 将安装管理器的执行文件setupmgr.exe复制到硬盘,双击执行,向导将询问是否要创建一个新的应答文件,还是修改现有的应答文件。选择“创建新文件”,指定这将是一个用于Sysprep的文件(图二),选择将用新建的应答文件部署的平台(图三)。
大多数较新的机器都需要操作系统安装盘本身没有提供的驱动程序。那么,如何让这类驱动程序也能自动安装呢?你必须把它们复制到硬盘上的某个位置,然后修改sysprep.inf指定这些位置(参见附录“自动创建Sysprep.inf文件”)。具体的操作步骤是: ㈠ 在系统驱动器的根目录下创建一个Sysprep目录,用来保存运行Sysprep必需的执行文件和sysprep.inf文件。 ㈡ 在系统驱动器的根目录或Sysprep目录下创建一个Drivers目录——如果你要让目标机器运行好最小安装后能够使用这些驱动程序,则在根目录下创建Drivers文件夹;如果将驱动程序保存在Sysprep目录下的文件夹,最小安装过程将清除它们(最小安装是Windows常规安装过程的简化版,它只询问尚未在sysprep.inf中回答的问题)。 ㈢ 在Drivers文件夹下,为不同的硬件设备创建相应的子目录保存驱动程序,将所有第三方驱动程序复制到相应的子目录。 ㈣ 接下来还要设置一下sysprep.inf文件,以便最小安装过程能够找到驱动程序,如下面的例子所示。注意安装程序不会搜索OemPnPDriverPath路径的子目录,所以每一个目录都必须分别指定:
二、挖掘sysprep.inf的潜力 要让同一个映像适用于不同类型的硬件系统,最关键的是要设置好sysprep.inf文件的SysprepMassStorage小节。你可以手工在这个小节中加入大容量存储设备的驱动程序,使得具有不同磁盘控制器的系统能够共享映像;或者干脆一点,你可以让Sysprep自动填写该小节,加入操作系统带有的所有大容量存储设备。 第二种办法的优点是一个映像文件可以支持大量的硬件设备——即使是创建映像时你还不可能想到的那些设备;其缺点是,在Sysprep处理期间引入所有的驱动程序需要额外耗费10到15分钟的时间,而且必须在目标系统上用-clean参数运行Sysprep。 让Sysprep自动加入大容量存储设备的操作步骤是: ⑴ 首先确保sysprep.inf同时提供Sysprep和SysprepMassStorage小节。 ⑵ 在Sysprep小节下面创建如下指令:BuildMassStorageSection=Yes。 ⑶ 打开一个命令窗口,转到sysprep.exe所在的目录,执行命令sysprep -bmsd。Sysprep将构造出SysprepMassStorage小节的内容并结束。 ⑷ 接着执行Sysprep -mini,完成最后的Sysprep操作。 除了SysprepMassStorage小节之外,sysprep.inf还有其他许多配置项目值得好好利用。例如,UserData小节用来定义安装期间典型问题的答案,凡是最小安装期间希望手工输入的内容,保留空白即可。如果你想让映像既能够用于多处理器的系统,也能够用于单处理器的系统,可以在Unattended小节中设定UpdateHAL或UpdateUPHAL。Identification小节的作用是自动加入域或者工作组。 最后,你可以用GuiUnattended小节的OEMDuplicatorString设置来辅助管理映像文件的修订,这个设置选项将把指定的字符串值加入到所有由该映像构造的系统;以后,当你要检查一下某台机器的操作系统是由哪一个映像构造时,可以检查注册键HKEY_LOCAL_MACHINE/SYSTEM/Setup/OemDuplicatorString确定原来的映像。 三、自动执行操作 为了提高安装过程的灵活性,你可以在安装期间或之后自动运行一些命令。如果要在最小安装结束后安装软件或运行程序、批命令文件、脚本,只要将相应的指令写入cmdlines.txt文件;如果要在目标系统重新启动后安装程序或运行命令,则必须将指令写入sysprep.inf文件的GuiRunOnce小节。 ■ cmdlines.txt 这个文件位于%SystemDrive%/Sysprep/i386/$oem$目录。下面是一个例子,它以-clean参数运行Sysprep,另外还执行Script1批命令、Program2程序:
cmdlines.txt文件的格式很简单,不过要注意以下几点: ⑴ sysprep.inf文件Unattended小节必须声明InstallFilesPath,并且使其指向$oem$文件夹所在的位置。 ⑵ 必须将所有要用到的文件复制到本地硬盘上。 ⑶ 如果cmdlines.txt包含的命令修改或创建了注册表设置,这部分设置将作为默认用户的设置写入,对所有新建的用户帐户都有效。 ⑷ 不能用cmdlines.txt安装那些使用Windows Installer的软件(.msi软件包)。 ■ GuiRunOnce 如果要在目标系统重新启动后再运行命令、批命令文件或脚本,可以在sysprep.inf文件的GuiRunOnce小节设置。该小节中设置的命令将在用户第一次登录时运行,要注意的几点是: ⑴ 必须启用了Autologon才能让GuiRunOnce设置的命令生效,即必须在GuiUnattended小节设置AutoLogon=Yes。 用引号括起每一个命令。 ⑵ GuiRunOnce小节里面的命令在当前登录用户的安全上下文下运行,注意用户权限是否允许运行当前的命令。 ⑶ 为保证所有的命令都被执行,必须禁止重新启动。如果某个用GuiRunOnce启动的程序提供了重新启动系统的选项(许多支持无人值守安装的软件都这样),你必须关闭重新启动。如果系统重新启动,GuiRunOnce里面后继的命令将不再被执行。 ⑷ 如果要安装多个应用软件,用start命令和/wait参数启动安装程序,避免各个程序之间相互影响。 四、附录:自动创建sysprep.inf文件 创建sysprep.inf文件最方便的途径是使用微软的Setup Manager(安装管理器)程序。对于Windows XP,你可以在XP CD-ROM的/Support/Tools目录的deploy.cab文件里找到它。 将安装管理器的执行文件setupmgr.exe复制到硬盘,双击执行,向导将询问是否要创建一个新的应答文件,还是修改现有的应答文件。选择“创建新文件”,指定这将是一个用于Sysprep的文件(图二),选择将用新建的应答文件部署的平台(图三)。
大多数较新的机器都需要操作系统安装盘本身没有提供的驱动程序。那么,如何让这类驱动程序也能自动安装呢?你必须把它们复制到硬盘上的某个位置,然后修改sysprep.inf指定这些位置(参见附录“自动创建Sysprep.inf文件”)。具体的操作步骤是: ㈠ 在系统驱动器的根目录下创建一个Sysprep目录,用来保存运行Sysprep必需的执行文件和sysprep.inf文件。 ㈡ 在系统驱动器的根目录或Sysprep目录下创建一个Drivers目录——如果你要让目标机器运行好最小安装后能够使用这些驱动程序,则在根目录下创建Drivers文件夹;如果将驱动程序保存在Sysprep目录下的文件夹,最小安装过程将清除它们(最小安装是Windows常规安装过程的简化版,它只询问尚未在sysprep.inf中回答的问题)。 ㈢ 在Drivers文件夹下,为不同的硬件设备创建相应的子目录保存驱动程序,将所有第三方驱动程序复制到相应的子目录。 ㈣ 接下来还要设置一下sysprep.inf文件,以便最小安装过程能够找到驱动程序,如下面的例子所示。注意安装程序不会搜索OemPnPDriverPath路径的子目录,所以每一个目录都必须分别指定:
二、挖掘sysprep.inf的潜力 要让同一个映像适用于不同类型的硬件系统,最关键的是要设置好sysprep.inf文件的SysprepMassStorage小节。你可以手工在这个小节中加入大容量存储设备的驱动程序,使得具有不同磁盘控制器的系统能够共享映像;或者干脆一点,你可以让Sysprep自动填写该小节,加入操作系统带有的所有大容量存储设备。 第二种办法的优点是一个映像文件可以支持大量的硬件设备——即使是创建映像时你还不可能想到的那些设备;其缺点是,在Sysprep处理期间引入所有的驱动程序需要额外耗费10到15分钟的时间,而且必须在目标系统上用-clean参数运行Sysprep。 让Sysprep自动加入大容量存储设备的操作步骤是: ⑴ 首先确保sysprep.inf同时提供Sysprep和SysprepMassStorage小节。 ⑵ 在Sysprep小节下面创建如下指令:BuildMassStorageSection=Yes。 ⑶ 打开一个命令窗口,转到sysprep.exe所在的目录,执行命令sysprep -bmsd。Sysprep将构造出SysprepMassStorage小节的内容并结束。 ⑷ 接着执行Sysprep -mini,完成最后的Sysprep操作。 除了SysprepMassStorage小节之外,sysprep.inf还有其他许多配置项目值得好好利用。例如,UserData小节用来定义安装期间典型问题的答案,凡是最小安装期间希望手工输入的内容,保留空白即可。如果你想让映像既能够用于多处理器的系统,也能够用于单处理器的系统,可以在Unattended小节中设定UpdateHAL或UpdateUPHAL。Identification小节的作用是自动加入域或者工作组。 最后,你可以用GuiUnattended小节的OEMDuplicatorString设置来辅助管理映像文件的修订,这个设置选项将把指定的字符串值加入到所有由该映像构造的系统;以后,当你要检查一下某台机器的操作系统是由哪一个映像构造时,可以检查注册键HKEY_LOCAL_MACHINE/SYSTEM/Setup/OemDuplicatorString确定原来的映像。 三、自动执行操作 为了提高安装过程的灵活性,你可以在安装期间或之后自动运行一些命令。如果要在最小安装结束后安装软件或运行程序、批命令文件、脚本,只要将相应的指令写入cmdlines.txt文件;如果要在目标系统重新启动后安装程序或运行命令,则必须将指令写入sysprep.inf文件的GuiRunOnce小节。 ■ cmdlines.txt 这个文件位于%SystemDrive%/Sysprep/i386/$oem$目录。下面是一个例子,它以-clean参数运行Sysprep,另外还执行Script1批命令、Program2程序:
cmdlines.txt文件的格式很简单,不过要注意以下几点: ⑴ sysprep.inf文件Unattended小节必须声明InstallFilesPath,并且使其指向$oem$文件夹所在的位置。 ⑵ 必须将所有要用到的文件复制到本地硬盘上。 ⑶ 如果cmdlines.txt包含的命令修改或创建了注册表设置,这部分设置将作为默认用户的设置写入,对所有新建的用户帐户都有效。 ⑷ 不能用cmdlines.txt安装那些使用Windows Installer的软件(.msi软件包)。 ■ GuiRunOnce 如果要在目标系统重新启动后再运行命令、批命令文件或脚本,可以在sysprep.inf文件的GuiRunOnce小节设置。该小节中设置的命令将在用户第一次登录时运行,要注意的几点是: ⑴ 必须启用了Autologon才能让GuiRunOnce设置的命令生效,即必须在GuiUnattended小节设置AutoLogon=Yes。 用引号括起每一个命令。 ⑵ GuiRunOnce小节里面的命令在当前登录用户的安全上下文下运行,注意用户权限是否允许运行当前的命令。 ⑶ 为保证所有的命令都被执行,必须禁止重新启动。如果某个用GuiRunOnce启动的程序提供了重新启动系统的选项(许多支持无人值守安装的软件都这样),你必须关闭重新启动。如果系统重新启动,GuiRunOnce里面后继的命令将不再被执行。 ⑷ 如果要安装多个应用软件,用start命令和/wait参数启动安装程序,避免各个程序之间相互影响。 四、附录:自动创建sysprep.inf文件 创建sysprep.inf文件最方便的途径是使用微软的Setup Manager(安装管理器)程序。对于Windows XP,你可以在XP CD-ROM的/Support/Tools目录的deploy.cab文件里找到它。 将安装管理器的执行文件setupmgr.exe复制到硬盘,双击执行,向导将询问是否要创建一个新的应答文件,还是修改现有的应答文件。选择“创建新文件”,指定这将是一个用于Sysprep的文件(图二),选择将用新建的应答文件部署的平台(图三)。
大多数较新的机器都需要操作系统安装盘本身没有提供的驱动程序。那么,如何让这类驱动程序也能自动安装呢?你必须把它们复制到硬盘上的某个位置,然后修改sysprep.inf指定这些位置(参见附录“自动创建Sysprep.inf文件”)。具体的操作步骤是: ㈠ 在系统驱动器的根目录下创建一个Sysprep目录,用来保存运行Sysprep必需的执行文件和sysprep.inf文件。 ㈡ 在系统驱动器的根目录或Sysprep目录下创建一个Drivers目录——如果你要让目标机器运行好最小安装后能够使用这些驱动程序,则在根目录下创建Drivers文件夹;如果将驱动程序保存在Sysprep目录下的文件夹,最小安装过程将清除它们(最小安装是Windows常规安装过程的简化版,它只询问尚未在sysprep.inf中回答的问题)。 ㈢ 在Drivers文件夹下,为不同的硬件设备创建相应的子目录保存驱动程序,将所有第三方驱动程序复制到相应的子目录。 ㈣ 接下来还要设置一下sysprep.inf文件,以便最小安装过程能够找到驱动程序,如下面的例子所示。注意安装程序不会搜索OemPnPDriverPath路径的子目录,所以每一个目录都必须分别指定:
二、挖掘sysprep.inf的潜力 要让同一个映像适用于不同类型的硬件系统,最关键的是要设置好sysprep.inf文件的SysprepMassStorage小节。你可以手工在这个小节中加入大容量存储设备的驱动程序,使得具有不同磁盘控制器的系统能够共享映像;或者干脆一点,你可以让Sysprep自动填写该小节,加入操作系统带有的所有大容量存储设备。 第二种办法的优点是一个映像文件可以支持大量的硬件设备——即使是创建映像时你还不可能想到的那些设备;其缺点是,在Sysprep处理期间引入所有的驱动程序需要额外耗费10到15分钟的时间,而且必须在目标系统上用-clean参数运行Sysprep。 让Sysprep自动加入大容量存储设备的操作步骤是: ⑴ 首先确保sysprep.inf同时提供Sysprep和SysprepMassStorage小节。 ⑵ 在Sysprep小节下面创建如下指令:BuildMassStorageSection=Yes。 ⑶ 打开一个命令窗口,转到sysprep.exe所在的目录,执行命令sysprep -bmsd。Sysprep将构造出SysprepMassStorage小节的内容并结束。 ⑷ 接着执行Sysprep -mini,完成最后的Sysprep操作。 除了SysprepMassStorage小节之外,sysprep.inf还有其他许多配置项目值得好好利用。例如,UserData小节用来定义安装期间典型问题的答案,凡是最小安装期间希望手工输入的内容,保留空白即可。如果你想让映像既能够用于多处理器的系统,也能够用于单处理器的系统,可以在Unattended小节中设定UpdateHAL或UpdateUPHAL。Identification小节的作用是自动加入域或者工作组。 最后,你可以用GuiUnattended小节的OEMDuplicatorString设置来辅助管理映像文件的修订,这个设置选项将把指定的字符串值加入到所有由该映像构造的系统;以后,当你要检查一下某台机器的操作系统是由哪一个映像构造时,可以检查注册键HKEY_LOCAL_MACHINE/SYSTEM/Setup/OemDuplicatorString确定原来的映像。 三、自动执行操作 为了提高安装过程的灵活性,你可以在安装期间或之后自动运行一些命令。如果要在最小安装结束后安装软件或运行程序、批命令文件、脚本,只要将相应的指令写入cmdlines.txt文件;如果要在目标系统重新启动后安装程序或运行命令,则必须将指令写入sysprep.inf文件的GuiRunOnce小节。 ■ cmdlines.txt 这个文件位于%SystemDrive%/Sysprep/i386/$oem$目录。下面是一个例子,它以-clean参数运行Sysprep,另外还执行Script1批命令、Program2程序:
cmdlines.txt文件的格式很简单,不过要注意以下几点: ⑴ sysprep.inf文件Unattended小节必须声明InstallFilesPath,并且使其指向$oem$文件夹所在的位置。 ⑵ 必须将所有要用到的文件复制到本地硬盘上。 ⑶ 如果cmdlines.txt包含的命令修改或创建了注册表设置,这部分设置将作为默认用户的设置写入,对所有新建的用户帐户都有效。 ⑷ 不能用cmdlines.txt安装那些使用Windows Installer的软件(.msi软件包)。 ■ GuiRunOnce 如果要在目标系统重新启动后再运行命令、批命令文件或脚本,可以在sysprep.inf文件的GuiRunOnce小节设置。该小节中设置的命令将在用户第一次登录时运行,要注意的几点是: ⑴ 必须启用了Autologon才能让GuiRunOnce设置的命令生效,即必须在GuiUnattended小节设置AutoLogon=Yes。 用引号括起每一个命令。 ⑵ GuiRunOnce小节里面的命令在当前登录用户的安全上下文下运行,注意用户权限是否允许运行当前的命令。 ⑶ 为保证所有的命令都被执行,必须禁止重新启动。如果某个用GuiRunOnce启动的程序提供了重新启动系统的选项(许多支持无人值守安装的软件都这样),你必须关闭重新启动。如果系统重新启动,GuiRunOnce里面后继的命令将不再被执行。 ⑷ 如果要安装多个应用软件,用start命令和/wait参数启动安装程序,避免各个程序之间相互影响。 四、附录:自动创建sysprep.inf文件 创建sysprep.inf文件最方便的途径是使用微软的Setup Manager(安装管理器)程序。对于Windows XP,你可以在XP CD-ROM的/Support/Tools目录的deploy.cab文件里找到它。 将安装管理器的执行文件setupmgr.exe复制到硬盘,双击执行,向导将询问是否要创建一个新的应答文件,还是修改现有的应答文件。选择“创建新文件”,指定这将是一个用于Sysprep的文件(图二),选择将用新建的应答文件部署的平台(图三)。
大多数较新的机器都需要操作系统安装盘本身没有提供的驱动程序。那么,如何让这类驱动程序也能自动安装呢?你必须把它们复制到硬盘上的某个位置,然后修改sysprep.inf指定这些位置(参见附录“自动创建Sysprep.inf文件”)。具体的操作步骤是: ㈠ 在系统驱动器的根目录下创建一个Sysprep目录,用来保存运行Sysprep必需的执行文件和sysprep.inf文件。 ㈡ 在系统驱动器的根目录或Sysprep目录下创建一个Drivers目录——如果你要让目标机器运行好最小安装后能够使用这些驱动程序,则在根目录下创建Drivers文件夹;如果将驱动程序保存在Sysprep目录下的文件夹,最小安装过程将清除它们(最小安装是Windows常规安装过程的简化版,它只询问尚未在sysprep.inf中回答的问题)。 ㈢ 在Drivers文件夹下,为不同的硬件设备创建相应的子目录保存驱动程序,将所有第三方驱动程序复制到相应的子目录。 ㈣ 接下来还要设置一下sysprep.inf文件,以便最小安装过程能够找到驱动程序,如下面的例子所示。注意安装程序不会搜索OemPnPDriverPath路径的子目录,所以每一个目录都必须分别指定:
|
如何通过Sysprep准备磁盘复制所需的映像
Windows 如何确定 ACPI 兼容性
安装 Windows XP 或 Windows Server 2003 之后的 HAL 选项
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
各位也可以参考上传附件中的mstest.rar文件包(包含NTLDR、DTECTHAL.INF、BOOT.INI示例)
DevCon 命令行实用工具 设备管理器的替换选项 您可以将 DevCon 用于 Windows 2000 和 Windows XP。不能将 Devcon 用于 Microsoft Windows 95、Windows 98、或 Windows Millennium Edition。
立即下载 DevCon 软件包。 发布日期:2003 年 1 月 29 日 有关如何下载 Microsoft 支持文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: DevCon.exe 文件包含以下文件: 注意:DevCon 的源代码也可以从 Windows XP DDK(位于 http://www.microsoft.com/ddk/)中得到,路径是 DDK 根目录/Src/Setup/Devcon,此位置还提供了文档。 示例 DevCon 命令 列出计算机 test 上的所有已知 PCI 设备。(通过使用 -m,您可以指定一个目标计算机。您必须使用“进程间通信”(IPC) 访问此计算机。) devcon -r install Windows directory/Inf/Netloop.inf *MSLOOP 安装一个新的 Microsoft 环回适配器实例。这将创建一个新的根枚举设备节点,使用此节点您可以安装“虚拟设备”,如环回适配器。如果需要重新启动计算机,此命令还将以安静模式重启计算机。 devcon classes 列出所有已知的安装类别。输出结果包含短的未本地化的名称(例如,“USB”)和描述性名称(例如,“通用串行总线控制器”)。 devcon classfilter upper !filter1 !filter2 删除这两个指定的筛选程序。 devcon classfilter lower !badfilter +goodfilter 用“goodfilter”替换“badfilter”。 devcon driverfiles =ports 列出与端口安装类别中的每一个设备关联的文件。 devcon disable *MSLOOP 禁用硬件 ID 以“MSLOOP”结尾(包括“*MSLOOP”)的所有设备。 devcon drivernodes @ROOT/PCI_HAL/PNP0A03 列出设备“ROOT/PCI_HAL/PNP0A03”的所有兼容驱动程序。这可以用来确定为什么选择原配的设备信息 (.inf) 文件而不选第三方 .inf 文件。 devcon enable '*MSLOOP 启用硬件 ID 为“*MSLOOP”的所有设备。单引号指示必须严格按字面解释硬件 ID(换句话说,星号 [“*”] 真的是 一个星号,而不是通配符)。 devcon find * 列出本地计算机上存在的所有设备的设备实例。 devcon find pci/* 列出本地计算机上所有已知的“外围组件互连”(PCI) 设备(如果一个设备的硬件 ID 以“PCI/”为前缀,此命令就认为该设备是 PCI 设备)。 devcon find =ports *pnp* 列出存在的作为 ports 安装类别的成员而且硬件 ID 中包含“PNP”的设备。 devcon find =ports @root/* 列出存在的作为 ports 安装类别的成员而且在枚举树的“root”分支中的设备(实例 ID 以“root/”为前缀)。请注意,有关实例 ID 的格式化方式,不应作任何编程假定。要确定根设备,可以检查设备状态位。此功能包括在 DevCon 中是为了帮助进行调试。 devcon findall =ports 列出 ports 类别的“不存在”的设备和存在的设备。这包括已经被删除的设备、从一个插槽移到另一个插槽的设备,以及在某些情况下由于 BIOS 改变而被不同地枚举的设备。 devcon listclass usb 1394 列出命令中所列的每个类别(本例中是 USB 和 1394)的所有存在的设备。 devcon remove @usb/* 删除所有 USB 设备。被删除的设备列出时将显示其删除状态。 devcon rescan 重新扫描以发现新的“即插即用”设备。 devcon resources =ports 列出由 ports 安装类别中的所有设备使用的资源。 devcon restart =net @'ROOT/*MSLOOP/0000 重新启动环回适配器“ROOT/*MSLOOP/0000”。命令中的单引号指示必须按字面解释实例 ID。 devcon sethwid @ROOT/LEGACY_BEEP/0000 := beep 将硬件 ID beep 赋予旧式蜂鸣设备。 devcon stack =ports 列出设备预期的驱动程序堆栈。包括设备和类别高层/低层筛选程序,以及控制服务。 devcon status @pci/* 列出实例 ID 以“pci/”开头的每一个存在设备的状态。 devcon status @ACPI/PNP0501/1 列出特定设备实例的状态,在本例中是一个高级配置和电源界面 (ACPI) - 枚举的串行端口。 devcon status @root/rdp_mou/0000 列出 Microsoft 终端服务器或终端服务鼠标驱动程序的状态。 devcon status *PNP05* 列出所有 COM 端口的状态。 devcon update mydev.inf *pnp0501 更新与硬件 ID *pnp0501 严格匹配的所有设备,让它们使用 Mydev.inf 中与硬件 ID *pnp0501 关联的最好的驱动程序。 注意:即使系统上已经存在更好的匹配项,这一更新也将强制所有设备使用 Mydev.inf 中的驱动程序。如果在获得签名之前,您想要在开发过程中安装驱动程序的新版本,则这是很有用的。此更新仅影响与指定的硬件 ID 匹配的设备,不会影响到其子设备。如果指定的 .inf 文件未经签名,则 Windows 可能会显示一个对话框,提示您确认是否应安装此驱动程序。如果需要重新启动计算机,将报告这一情况并且 DevCon 返回一个级别 1 错误。如果指定 -r,在需要重新启动计算机时就会自动重启。 注意: |
删除所有具体的使用方法是运行:devcon.exe remove *
删除所有设备
小提示:
修改WIM安装时这里的文字
修改WIN32UI.DLL这个文件就可以了
用ResHacker
编辑
|
|
|
|
|
提示:如何使用系统准备工具 (Sysprep) 来自动实现WindowsXP的成功部署 本文分步描述了如何使用系统准备工具 (Sysprep) 来自动实现 Microsoft Windows XP 的成功部署。Sysprep 是一个为系统管理员、原始设备制造商 (OEM) 以及其他必须在多台计算机上自动渴?Windows XP 操作系统的人士设计的工具。在一台计算机上执行初始安装步骤后,可以运行 Sysprep 工具来准备用于克隆的示范计算机。
更多信息 回到顶端 准备一台参考计算机以用于 Sysprep 部署 注意:为确保使用的是 Service Pack 的正确版本的 Deploy.cab 文件,请使用随此 Service Pack 分发的 Deploy.cab 文件。请访问下面的 Microsoft 网站以下载正确版本的 Service Pack: 注意:如果使用 Sysprep.inf 文件,还应将该文件复制到 Sysprep 文件夹中。为了使 Sysprep 工具正常运行,Sysprep.exe 文件、Setupcl.exe 文件和 Sysprep.inf 文件都必须在同一个文件夹下。 如果从 %systemdrive%/Sysprep 文件夹运行 Sysprep.exe 文件,则 Sysprep.exe 文件会在运行结束后删除整个文件夹及其内容。 创建 Sysprep.inf 应答文件
[Unattended] [GuiUnattended] [UserData] 回到顶端 使用安装管理器工具创建 Sysprep.inf 应答文件 键入所需的安装管理器文件夹名称,然后按 Enter 键。例如,键入“setup manager”,然后按 Enter 键。 Sysprep 参数 重要说明:用来激活 Windows 安装的产品密钥必须与贴在特定计算机上的 COA 不干胶标签上的产品密钥相匹配。 在以“工厂”模式完成所有任务之后,使用 -reseal 参数运行 Sysprep.exe 文件,以使计算机做好最终用户交货准备。 注意:此参数用于使用 ACPI BIOS 的计算机,这些计算机在 Sysprep.exe 文件表现默认行为时不能正常关机。 请注意,如果您打算使用 Sysprep.inf 文件自动进行最小化安装,则必须使用 -mini 开关运行 Sysprep 工具,或者在 GUI 界面中单击以选中“最小化安装”复选框。如果不选择运行“最小化安装”,则默认情况下 Windows XP Professional 将运行“欢迎使用 Windows”。 仅当在必须检测和安装旧式非即插即用设备时,才使用 -pnp 命令行参数。不要在仅使用即插即用设备的计算机上使用 sysprep -pnp 命令行参数。否则,将增加首次运行经验所需的时间,而对用户没有任何好处。 注意:如果必须使用未签名的驱动程序,则使用 UpdateInstalledDrivers=yes 参数连同 OemPnPDriversPath= 和 DriverSigningPolicy=ignore 而非 -pnp 命令行参数以提供更加无缝的安装。 |
|