制作基于longhorn安装方法的封装系统盘的方法
1.请安装要封装的系统到空分区。 (注:即从头安装一遍,这个系统就是封装的wim镜象所包含的系统) 2.拷贝安装盘的i386(和amd64、IA64如果有的话)到系统的根目录。注意要在系统内操作! 3.安装TweakUI,修改安装源指向%SystemRoot%\I386(或者AMD64/IA64) 4.卸载TweakUI。 (注:这是为了解决电源管理,既ghost镜像里的硬盘抽象层,可用.的工具代替) 5.拷贝Longhorn 4074 or 5048的SYSPREP目录(或者是wim中提取) (注:提取最新版的系统封装程序部署包) 6.在系统中运行SYSPREP\uncabsrc.cmd 7.运行SYSPREP程序进行封装。 8.分别将wim的1和2映像分区解到空分区(或虚拟分区)上。 注:这是winpe部分,可参照以下方法制作 10.提取第一部分:WinPE Boot Image到指定的空分区(盘符设为J:),然后执行命令:ximage /apply D:\install.wim J: 1 (“1”不能少,用来指定提取第一部分启动信息) 11.用ximage /boot 来生成带启动信息的WIM镜像,具体命令如下: ximage /boot /capture /lzx /flags 1 J: e:\install.wim "WinPE Boot Image" /capture表示生成镜像,/flags 1 表示用户自定义的标记。这里仍然遵循原镜像的约定。 /lzx 是压缩参数,经过测试,这是最大的压缩参数。 引号里的参数是自定义的描述性信息 12.删除D分区所有文件,从原install.wim里释放第二部分到D分区,命令如下 ximage /apply D:\install.wim J: 2 (“2”不能少,用来指定提取第二部分驱动信息) step 4将D分区里的驱动信息追加到step 2中生成已经带启动信息的install.wim中,命令如下: ximage /append /lzx /scroll /flags 2 D: e:\install.wim "WinPE Drive Image" (/append表示追加,/scroll表示以滚屏方式显示进度,/flags 2表示作的标记,仍然遵循原镜像的约定) 现在生成的wim镜像已经含有PE必需的启动信息和驱动信息. 13.然后追加自己封装的系统分区: ximage.exe /flags 0 /append D: install.wim "Windows Longhorn pro" 14.将wim改名为install.wim. 15.用ximage /info 察看映像的indexes,如果是0、1、2,请改为1、2、3(用16进制编辑器)。 (笔者注:没明白为什么要改,老外有人先做个空映像的方法代替) 16.用UltraISO将做好的wim替换4074的iso中的wim. 17.然后刻盘安装!
说明:
用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.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.inf指定这些位置(参见附录“自动创建Sysprep.inf文件”)。具体的操作步骤是:
㈠ 在系统驱动器的根目录下创建一个Sysprep目录,用来保存运行Sysprep必需的执行文件和sysprep.inf文件。
㈡ 在系统驱动器的根目录或Sysprep目录下创建一个Drivers目录——如果你要让目标机器运行好最小安装后能够使用这些驱动程序,则在根目录下创建Drivers文件夹;如果将驱动程序保存在Sysprep目录下的文件夹,最小安装过程将清除它们(最小安装是Windows常规安装过程的简化版,它只询问尚未在sysprep.inf中回答的问题)。
㈢ 在Drivers文件夹下,为不同的硬件设备创建相应的子目录保存驱动程序,将所有第三方驱动程序复制到相应的子目录。
㈣ 接下来还要设置一下sysprep.inf文件,以便最小安装过程能够找到驱动程序,如下面的例子所示。注意安装程序不会搜索OemPnPDriverPath路径的子目录,所以每一个目录都必须分别指定:
进行SYSPREP后计算机硬件抽象层HAL(电源模式)的完美解决 (微软破解中心)微软官方背景资料:
如何通过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\) 如果不可见,可在文件夹选项里在“显示所有的文件和文件夹”打上勾和“隐藏受保护的系统文件”去掉勾。 引用:
4、修改BOOT.INI 在准备封装的系统后面加上 /DETECTHAL参数 如: 引用:
5、将LONGHORN版本的NTLDR拷贝到从C:\,覆盖原有的NTLDR 各位也可以参考上传附件中的mstest.rar文件包(包含NTLDR、DTECTHAL.INF、BOOT.INI示例)DevCon 命令行设备管理器【真正的设备批量删除工具】
删除所有具体的使用方法是运行:devcon.exe remove *
删除所有设备
小提示:
修改WIM安装时这里的文字
修改WIN32UI.DLL这个文件就可以了
用ResHacker
编辑
|