完成ADS部署XP

[ 2005/11/04 18:11 | by gOxiA ]

经过几天的反复测试,终于完成了ADS部署XP的试验。看来不经过反复的失败、试验是无法从胜利中得到技术和知识积累的。

ADS原则上是不支持桌面操作系统的,因为ADS控制客户端必须依靠ADS代理,而进入ADS代理环境有两种方式,第一种是在Windows 2000服务器版和Windows Server 2003上安装代理程序,而此程序只支持有限的系统版本;另一种是使用PXE引导至ADS的代理环境。从以上所述可以看出要想真正的实现全自动化部署,ADS代理占着至关重要的地位。

经过多次的试验,XP的全自动化部署还是可行的。重点在于选择正确的部署顺序,并修改执行任务脚本。在这次的试验中,我的方法如下:

1、安装XP原型机,做系统准备工作,生成全自动化mini安装应答文件,并修改相应的变量,最后手工执行sysprep及其必须的参数;

2、在ADS服务器中添加此设备,修改默认任务为boot-to-da,添加此设备对应的变量并授予控制;

3、开启原型机,检查其是否顺利进入代理环境并进入预备状态;

4、创建新的Capture-Image任务脚本,其任务顺序是:捕获系统映像(或其他分区映像)—> 修改原型机的sysprep.inf(因为原型机上的sysprep.inf包含ADS变量,当重新启动后会无法正确执行自动化mini安装,所以要将变量修改为实际值)—> 将原型机默认任务修改为boot-to-hd —> reboot ;

注:此步骤虽然按照自动化理念执行,但是当原型机重新进入系统后,ADS的控制便会出现错误,首先表现在任务执行最后一步reboot无反馈,导致任务一直在执行状态,这时候你需要手工停止任务。原因很简单原型机上未安装ADS代理,曾经尝试在任务脚本最后添加adsdevice /rc ,但是发现在代理环境下不允许执行此命令,所以最终还是要手工将其释放控制。不过,我感觉最后的reboot可以更换为shutdown,这样原型机关闭电源后,ADS设备中就可以正常释放控制,否则你会发现原型机重新启动后,ADS设备管理中你无法释放控制。

5、在ADS设备中添加要部署的客户端设备,修改默认任务为boot-to-da,添加此设备对应的变量并授予控制;

6、开启此客户端,检查其是否顺利进入代理环境并进入预备状态;

7、创建新的Deploy-Image任务脚本,其任务顺序是:对客户分区(如果存在多个分区,你可以添加多条分区指令)—> 部署映像(如果要部署多分区映像,可添加多条指令) —> 修改目标客户端上的sysprep.inf —> 将原型机默认任务修改为boot-to-hd —> reboot ;

至此ADS部署XP就算完成,如果客户端支持网卡远程启动,那么就实现了真正意义上的全自动化。多么希望ADS代理支持XP或者2000PRO,曾试着解包代理程序去掉系统版本验证,可惜对这些确实不精通无奈放弃,希望其他朋友能有能力修改代理程序使其支持桌面版系统。

在此次的试验中我大概算了一下时间,捕获和部署映像的耗时差不多,在PIV2.4G/128M的虚拟机中,各需10多分钟,而这个时间还只是捕获纯系统映像,如果系统安装有应用软件,或包含其他分区映像捕获需要的时候可能更长。而ghost单机克隆时,只需要3分多钟,但是ADS的优势还是显而易见的。

接下来我将找一个实际的环境进行大规模部署测试,希望能拿到一个实际数据来对比ghost网播。

因为准备做ADS部署XP的试验,所以首先要把XP用的sysprep应答文件搞定。如果单纯的使用动态分配服务,那么应答文件的制作是非常简单的,但是如果客户端都需要手工配置网络属性并要添加IP/IPX协议,那么就麻烦了许多,当使用setupmgr.exe制作应答文件时,你会发现根本无法添加配置网络。所以我手工写了一个全自动安装应答文件,留作后用!

sysprep.inf

;SetupMgrTag
[Unattended]
    OemSkipEula=Yes
    InstallFilesPath=C:\sysprep\i386

[GuiUnattended]
    AdminPassword=*
    EncryptedAdminPassword=NO
    OEMSkipRegional=1
    TimeZone=210
    OemSkipWelcome=1

[UserData]
    ProductKey=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
    FullName="gOxiA"
    OrgName="MAYTIDE"
    ComputerName=WXPSP2

[TapiLocation]
    CountryCode=86
    Dialing=Tone

[RegionalSettings]
    LanguageGroup=10
    SystemLocale=00000804
    UserLocale=00000804
    InputLocale=0804:00000804

[SetupMgr]
    DistFolder=C:\sysprep\i386
    DistShare=windist

[Identification]
    JoinWorkgroup=WORKGROUP

[Networking]
    InstallDefaultComponents=No

[NetAdapters]
    Adapter1=params.Adapter1

[params.Adapter1]
    INFID=*

[NetClients]
    MS_MSClient=params.MS_MSClient

[NetServices]
    MS_SERVER=params.MS_SERVER

[NetProtocols]
    MS_TCPIP=params.MS_TCPIP
    MS_NWIPX=params.MS_NWIPX

[params.MS_TCPIP]
    DNS=No
    UseDomainNameDevolution=No
    EnableLMHosts=Yes
    AdapterSections=params.MS_TCPIP.Adapter1

[params.MS_TCPIP.Adapter1]
    SpecificTo=Adapter1
    DHCP=No
    IPAddress=192.168.0.10
    SubnetMask=255.255.255.0
    DefaultGateway=192.168.0.1
    DNSServerSearchOrder=192.168.0.252,192.168.0.253
    WINS=No
    NetBIOSOptions=0

[params.MS_NWIPX]
    VirtualNetworkNumber=00000000
    AdapterSections=params.MS_NWIPX.Adapter1

[params.MS_NWIPX.Adapter1]
    SpecificTo=Adapter1
    PktType=0x2

添加设备

格式:

adsdevice [/scontrollername [/uusername/wpassword]] /adddevicename [/description "text"] [ /ipipaddress] [/adminmacmacaddress] [/guidsmbiosguid] [/assettagassettag] [/jobtemplatetemplatename] [/?]


举例:
Adsdevice /add MACHINENAME /description THIS IS NODE  /ip 192.168.0.1 /adminmac 0003FF78543 /guid 239d1df6-1dd6-11b2-f0e7-0003FF78 /jobtemplate reboot-to-da

添加映像到ADS数据库

格式:

adsimage [/scontrollername [/uusername/wpassword]] /addimagename/pathimagepath [/description]

将映像影射为本地驱动器

格式:

imgmount /mount /w {imagefilename} /d: driveletter

将变量添加到控制器中的设备数据库

格式:

Adsdevice /edit device-name /setvar variable-name "value"


举例:
Adsdevice /edit MACHINENAME /setvar DNSServerSearchOrder "192.168.0.252,192.168.0.253"

Automated Deployment Services ADS)系列学习

—— 部署 Windows Server 2003 实录

·实录背景

·ADS 简要概述

·ADS 产品特性

·实验环境介绍

·部署 ADS 服务器

·准备原型机

·创建原型机系统映像

·为客户端部署映像

·实录感想

·相关链接

Communication ports used by ADS

[ 2005/10/28 13:52 | by gOxiA ]

Automated Deployment Services (ADS) uses a variety of ports when communicating among the ADS services and between the DHCP server and devices in the network. The following table lists the ports required to establish communication between the various components of ADS.

      2005年10月26日,在临下班前对此对25日的关于sysprep的blog作了又一次的测试并记录一个备注就匆匆下班,没想到今天却让我因此在测试ADS时又遇到了困阻,本以为今天的ADS测试会很顺利,没想到!

       在测试中发现虽然在ADS执行修改Sysprep.inf文件时可以写入数据,但是当系统重新启动后,应答文件却无法被应用,本以为很简单的问题(况且打开虚拟机后宿主计算机速度特别慢)就没有去查找相应的KB,结果可想而知。自己多次测试sysprep,启动了无数次系统发现都无法应用应答文件。无奈查找KB,发现官方要求必须在sysprep目录下,那为什么我在做其它试验时更名目录后,仍然可以自动应用应答文件呢?

      到最后将目光集中到了i386和i386目录下的$oem$目录,记得当使用setupmgrc创建sysprep应答文件后在sysprep目录下会自动生成一个i386目录及其$oem$子目录,难道会跟这个目录有关?微软的一片KB中提到为了能够应用应答文件,需要将commline.txt文件拷贝至此,难道会是因为这个?显示所有文件察看此目录发现并没有txt文件,奇怪了。

      之前的测试中也尝试过将Deploy.cab中其它文件复制过来,但是都是失败告终。再测试,使用setupmgrc创建应答文件,保存后察看目录变化,发现自动建立i386目录及其$oem$子目录,好就这样执行sysprep。重新启动系统后发现应答文件被应用了。哈哈竟然成功了!

      做最后一次测试,在系统所在磁盘根下手工建立sysprep目录,将deploy.cab中的sysprep.exe、setupcl.exe拷贝到此目录下。之后将建立后的完全自动安装类型的sysprep.inf应答文件(要实现应用应答文件必须命名为sysprep.inf)拷贝至此,因为sysprep应用应答文件,其目录中必须有i386目录及其$oem$子目录,为此手工在sysprep根目录下建立了i386目录并建立其$oem$子目录。执行sysprep.exe,等待!OK,这次成功了!在系统执行应答文件后(此过程不需要任何人工干预)重新启动系统后发现sysprep目录及其下文件目录都被自动删除。也就是说,如果将目录命名为sysprep,那么在执行sysprep后系统会自动删除这个目录,反之将会保留!

      总算彻底解决了问题。准备重新再作一次ADS部署试验。

Sysprep.exe的两种使用方式

[ 2005/10/25 13:25 | by gOxiA ]

Sysprep.exe是微软系统安装盘附带的一个工具,用来做系统部属使用。这个工具可以为我们提供一个系统初始化环境,我用他纯粹为了方便我在虚拟机下做实验。因为每个系统都有唯一的SID,所以我需要通过Sysprep复位重新生成一个系统SID。

早先作的系统母盘,我都是在系统所在分区的根目录下建立一个Deplay的目录,然后将Sysprep及其涉及的文件都拷贝到这个目录下,然后使用setupmgr.exe创建一个针对Sysprep模式的应答文件,最后执行sysprep.exe并自动关闭计算机。这样我的虚拟机系统母盘就做好了,然后建立一个新的虚拟机并使用这个母盘。首次启动系统会开始执行系统复位并创建一个新的SID,由于我之前创建了应答文件,所以安装过程非常简单,省略了我输入序列号和选择时区等步骤,唯一需要填写的就是计算机名。

最近因为Virtual Server 2005深深的打击了我,所以将部分实验都转到了VMwareGSX 3.2下,并制作了WinXPProSP2和WinSrv2003SP1的中英文版的母盘,当时没有过多考虑便在系统所在分区根目录下建立了Sysprep的目录并将Sysprep的文件都拷贝进来,后来创建应答文件并执行sysprep.exe,重新启动后发现系统竟然提示我输入序列号,让我感到意外。直到制作最后一个WinSrv2003SP1英文版时我才发现原来是目录名在作怪。

如果将Sysprep工具的目录命名为Sysprep,那么在重新启动系统后你会发现这个目录会被自动删除,而复位系统时会提示你输入序列号,这个方式下使用Sysprep比较适合做系统部署或者是发布OEM。

如果将目录命名为其它名称,那么它会有效执行应答文件,在复位系统后会发现此目录依然存在。

自己感觉挺奇怪的,因为没有时间看关于Sysprep的KB,所以最终的答案还要依据微软的说明。

      在Windows Server 2003中,Microsoft对平台进行了扩展,管理员可以通过它容易地构建和管理超大型的可伸缩Windows服务器部署。自动部署服务(Automated Deployment Services,ADS)包括一组Microsoft开发的新映像工具,以及一个可以用来在裸机服务器上快速部署Windows 2000 Server和Windows Server 2003的、更安全且具有远程操作能力的基础结构。此外,ADS提供了一个更加安全、可靠的脚本执行,允许管理员像管理一台服务器那样简单地在1000台服务器上执行基于脚本的管理工作。

      ADS是一个免费的软件,但是它是基于Windows Server 2003基础架构的,所以它只能被安装在WinSrv2003系统之上,另外ADS和RIS之间相比较的优越之处在于它不需要AD环境,并且支持多播模式。

      自从我知道ADS这个软件后就特别关注,早先也作过测试不过是在VPC下TEST的,不知道为什么始终都不成功,用VMware也测试同样的结果,具体错误是总提示找不到RAMDISK。后来又重复做了多次测试,那段时间整个人都要崩溃了,死活捉摸不透为什么会失败。后来也看了多遍Webcast并请教了几个朋友,但都没有什么帮助,郁闷到极点!!!后来就暂停测试了,休息一段时间并等等看看有现成的中文资料没。

      ADS1.1版发布后,决定再次测试。虽然中文资料还是非常贫乏,但是感觉错误不应该出在自己的配置过程上,但是又很难去说明,抱着试试的态度开始做测试前的准备。一个朋友告诉我他在Virtual Server 2005环境下测试成功了,为了保证我能减少故障发生率于是也部署了Virtual Server 2005环境,并安装了一台ADS服务器,和一台模板服务器,操作系统都是Windows Server 2003 ENT With SP1 VOL CHS,其中ADS服务器我单独又安装了SQL Server 2000 With SP4,其他没有什么特别。

      开始安装ADS1.1,将下载的文件解压缩后就可以直接安装,界面很直观,其中一步是要拷贝WinSrv2003的源文件,接下来是拷贝WinPE的,这里我放入WinPE光盘竟然提示我找不到,后来也就没有再去测试,直接拷贝了WinSrv2003。整个安装过程还是比较简单的。

      在ADS1.1安装后,需要执行"C:\Program Files\Microsoft ADS\samples\Sequences\create-templates.bat",这样便将ADS自带的一些脚本导入ADS控制台中,便于我们部署系统使用,也就不用再让我们自己编写了。

     

      添加设备,使计算机可管理,填写一个名称,并正确填入网卡MAC地址之后task control,就可以管理了!如果是在已安装系统的计算机上则需要安装ADS代理才能够加入到ADS被控中。

      捕获系统镜像,在C盘根目录建立一个sysprep文件夹,

windows Server 2003光盘的管理工具sysprep.exesetupcl.exe复制到c:\sysprep,ADS服务器的c:\program files\microsoft ads\samples\sysprep relevant.inf文件复制到作为图像的计算机的c:\sysprep,并将其更名为sysprep.inf,最后执行脚本capture-image.xml,系统便开始执行。这次我终于见到了久违的捕获界面,总算是测试成功了。

分页: 13/13 第一页 上页 8 9 10 11 12 13 最后页 [ 显示模式: 摘要 | 列表 ]