您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 封装志 第五章(系统封装)
第五章、部署自动化控制(进阶篇)5.1封装工具自动化运行-g9S-O1w5|$L8U说到部署自动化的控制,我们要先聊一聊封装工具的自动化运行。这将有助于我们进一步了解封装工具的各参数设定,以进一步控制部署过程。5.1.1WindowsXP的自动化封装Z2ER-D:k4x9e7i._!h-J&g({~/h)j,Y2^2l:JWindowsXP的封装工具Sysprep2.0,除了具有图形界面外,同时还是一个可以在命令提示符环境下运行的命令行工具。本例中我们将Sysprep2.0放置于C:\Sysprep文件夹中,要了解Sysprep2.0的命令行参数,可以在输入命令“C:\Sysprep\Sysprep.exe/?”查看。2d8g:[)H.@;R(图5-1)!]%T%B#i!x8m2l7}~.m上图是对Sysprep2.0参数的一个基本解释说明,下面我来详细的说明一下各参数的具体用途。-activated一般WindowsXP未激活状态下会有30天的宽限期,必须于30天内激活。在运行sysprep.exe时使用-activated参数可以重置这个宽限期,但不要企图使用这个方法躲避正版WindowsXP的激活,因为宽限期只允许重置3次。-audit与工厂模式相关的命令,普通用户很少用到,详见Deploy帮助文档。-bmsd.p9~(b2?8H运行“C:\Sysprep\Sysprep.exe-bmsd”会自动根据C:\Windows\Inf下Machine.inf、Scsi.inf、Pnpscsi.inf和Mshdc.inf的相关内容在Sysprep.inf中创建磁盘控制器的“Plug_and_Play_ID=path_to_device_inf_file”列表,而在随后运行sysprep.exe进行封装时会根据这个列表将系统自带的磁盘控制器驱动集成如系统。这是另一种集成SRS驱动的方法,但由于操作复杂、默认只针对系统自带驱动、更新难度高等原因,逐步被我们在第三章中学习到的方法替代了。可以说,在学习了第三章后,这个参数我们可以不去学习和了解了。9]i&Q6t+u+G7B:\3z:[$H!V;R*@&G7M;Qt6P7],e*c1`-clean在使用-bmsd生成“Plug_and_Play_ID=path_to_device_inf_file”列表后,使用sysprep.exe完成封装会自动再sysprep.inf中生成一份磁盘控制器清理列表。那么在部署时运行“sysprep.exe-clean”就可以完成对磁盘控制器驱动的清理。而-bmsd参数对我们已经没有什么用处了,则-clean参数也对我们没什么贡献了。&P$zM;N-S4d/f,f*n5U%h-factory工厂模式,普通用户很少用到,详见Deploy帮助文档。$s0L$Y%n)I3J1E:l)q5g3Gw.u8t%g-forceshutdown0e-l,H&T%jMp在sysprep.exe运行完毕后自动关机。#m7|*n8|$r's*L,y,a5x-mini)A2\.a0q.]使用最小化模式完成系统部署。r5XD-M5r2{.{-noreboot封装完毕后不要重启。.R#x#q-k.m@2W$iE$\-G9E/k1n#z/r@-nosidgen3Y8a:?9OS9?(HE7?%a)O*?不生成新的安全标识符(SID),默认情况下,每台计算机有绝对不重复的SID。生成SID会占用额外的系统部署时间,但在安全性要求较高的网络中,如“域”,SID是必须的,而普通用户,不生成SID也罢。-pnp'c/_7nr#O)?在最小化系统部署时,启用完整的即插即用设备枚举和安装,有助于硬件设备驱动的搜索和安装,但会一定程度拖慢系统部署速度。;x,k+|,x5N1n,H-quiet运行sysprep.exe但不出现图形界面,自动化运行sysprep.exe时很有用,但注意,这样也会导致某些报错不会显示。-reboot+l*f0@:_#C0U+\)w封装完毕后自动重启。-reseal清楚事件查看器日志并准备交付客户使用,设置下次启动时进入系统部署状态。T,J(V*c4Q'a#n*d/b-^您可以根据Sysprep2.0的参数和您系统部署的范围选择适当的参数,参数的选择是灵活的,但也要注意搭配。例如VOL版WindowsXP常使用的封装命令:$J)O5i,g-I2FC:\Sysprep\Sysprep.exe-quiet-mini-nosidgen-activated-reseal-noreboot5.1.2Windows7的自动化封装0]/`2w+R#O:V3eWindows7的封装工具Sysprep3.14具有更强大的功能,拥有更简洁的图形界面,同时与Sysprep2.0一样也支持命令行模式的调用。要查看Sysprep3.14的都有哪些参数,可运行命令“C:\Windows\System32\Sysprep\sysprep.exe/?”2W,[8o*v6b!E%w*X)F;s-x/N;q6]/K#d-n?(图5-2)Sysprep3.14的默认帮助只解释了有哪些参数,并未解释这些参数的实际意义,下面我来讲一下Sysprep3.14各参数代表的含义。'y/R/M$h7n2T*e0[2e/audit9z!T;t1u%vP6Y!Z'S0?9x重新启动计算机进入审核模式。审核模式使您可以将其他驱动程序或应用程序添加到Windows。您还可以在将Windows安装发送给最终用户前对其进行测试。如果指定了无人参与Windows安装程序文件,则Windows安装程序的审核模式将运行auditSystem和auditUser配置阶段。:A,N*vL-r6x-T'u;T/generalize8b8o's(_0D准备要作为映像的Windows安装。如果指定此选项,所有唯一的系统信息将从Windows安装中删除。安全ID(SID)重置,所有系统还原点将被清除,事件日志也将被删除。下次计算机启动时,将运行specialize配置阶段。将创建新的安全ID(SID),如果用于Windows激活的时钟三次没有被重置,将其重置。2['C-g'd8z#E/oobe重新启动计算机进入“欢迎使用Windows”模式。“欢迎使用Windows”允许最终用户自定义其Windows操作系统、创建用户帐户、命名计算机和其他任务。在“欢迎使用Windows”启动前,将立即处理答案文件中oobeSystem配置阶段的所有设置。7Q+c-f*Z4L&i-{/reboot2u&_&S4r%D(p/x*x*B重新启动计算机。使用该选项审核计算机并确保首次运行体验正确工作。/shutdown在sysprep命令完成运行后关闭计算机。:j1G!f#W3U7y$}:q/quiet,},Q)W6GF运行Sysprep工具而不显示屏幕确认消息。如果自动运行Sysprep工具,则使用该选项。3M'BI0b1F&q/quit运行指定命令后,关闭Sysprep工具。/unattend:answerfile在无人参与安装期间,将答案文件中的设置应用到Windows。answerfile指定要使用的答案文件的路径和文件名。5.2系统部署过程进阶控制:]k2}&K8z,[回想一下WinXP和Win7的部署过程(参见图4-22~4-26,以及图4-45~4-59),我们发现无论是WinXP还是Win7,部署过程中时机最早的外部程序调用接口也要在系统部署即将结束时,且都在系统部署程序搜索与安装驱动后。这样会造成我们对一些程序的调用困难。:A;L6\%J7{d:~9]G7|一是驱动类。有时我们要为系统集成额外的驱动程序,这些驱动程序经过了压缩打包以节省系统映像体积。某些情况下,我们还要经由特殊的应用程序判断当前的硬件以解压匹配的驱动。驱动包解压后,还要根据解压的路径将驱动所在位置写入注册表,这样在系统部署过程中搜索与安装驱动时就会自动的搜索我们解压的这些增补驱动,从而简化我们手动为系统安装驱动的过程,提高工作效率。这一切必须在系统开始自动搜索与安装驱动前完成,但我们没有这样的外部程序调用接口。二是系统设置类。某些系统设置程序需要在系统部署结束后执行更加稳妥,例如设置IP地址、设置系统还原、设置系统休眠、清理磁盘控制器驱动残留、激活Administrator用户等。同样的,我们也没有此类接口,部署过程中最晚的一个接口也要早于系统部署结束。(R.Z7y-F9Xm[*bW三是某些特殊处理。如为了节省系统映像体积,压缩了ProgramFiles文件夹,压缩了杀毒软件的病毒库,压缩了某些Windows文件夹下的文件等。为了尽可能的减少对系统部署的影响,这些经过压缩的文件夹大多于系统部署开始前即要解压。这样就需要一个系统部署开始前的外部程序调用接口,这个接口与驱动程序解压(也就是刚才所说的第一类)所用的接口是一致的,均是于系统部署开始前,就像驱动类一样,我们没有这样的接口。如上三类应用程序的调用虽然不是我们必须的,但却是我们所需要的,此三类应用程序可以有效的减少系统映像体积、简化驱动安装过程、增强对系统各设置的自动化设定。好吧,既然我们需要,那我们就来想办法实现它们。简而言之,就是实现部署开始前和部署结束后的外部程序调用接口。下文中如无特别指出,则假设系统盘(%SystemDrive%)为C盘。+N+H4A*`.Kw:r6E+x+q5.2.1接管系统部署过程'w/L;j2?y,g/F&\7J.w-y系统封装是通过Sysprep程序来完成的(WinXP是Sysprep2.0,Win7是Sysprep3.14),那系统部署过程是由哪个程序完成了?Sysprep程序又是怎么告诉系统调用哪个程序来完成系统部署过程的呢?在系统封装完毕后,通过对注册表项目的观察,我们发现了一系列的注册比键值的变化,其中引起我们注意的是HKEY_LOCAL_MACHINE\SYSTEM\Setup键下Cmdline键值。一般情况下,WinXP封装结束后此键的数据为“setup.exe-newsetup-mini”,Win7封装结束后此键的数据为“oobe\windeploy.exe”。另外,通过对部署过程后台程序的观察,发现WinXP的部署过程是由C:\Windows\System32\setup.exe执行的,而Win7的部署过程是由C:\Windows\System32\Oobe\windeploy.exe执行的。整理一下这两项观察的结果,我们总结出如下结论:(1)无论是WinXP还是Win7,都是由HKEY_LOCAL_MACHINE\SYSTEM\Setup键下Cmdline键值规定使用哪个程序执行系统部署。(2)无论是WinXP还是Win7,HKEY_LOCAL_MACHINE\SYSTEM\Setup键下Cmdline键值是以C:\Windows\System32为相对目录的。即Cmdline键值所规定程序的上层目录为C:\Windows\System32。(3)WinXP一般情况下使用C:\Windows\System32\setup.exe以“-newsetup-mini”参数执行系统部署。Win7一般情况下使用C:\Windows\System32\Oobe\windeploy.exe执行系统部署。)M%J;Z-N8f2[2N那么我们可以自己写一个小程序,名为“Deploy.exe”,将Deploy.exe复制到C:\Windows\System32下。在封装结束后,改写Cmdline键值为“Deploy.exe”,这样部署过程就会调用我们的Deploy.exe来执行。Deploy.exe先调用部署前要调用的外部程序,再调用系统部署程序(WinXP的Setup.exe,Win7的windeploy.exe),最后调用部署后要调用的外部程序。这样就成功实现了系统部署前与系统部署后外部程序调用接口,且不影响系统部署过程!这样,算上之前在第四章实现的几个基本外部程序调用接口,我们共有
本文标题:封装志 第五章(系统封装)
链接地址:https://www.777doc.com/doc-3500736 .html