您的位置:首页 > 其它

Windows Embedded Standard 7 快速入门指南 4 of 4

2016-03-11 09:26 597 查看
作者:肖正波

转自:http://blog.sina.com.cn/s/blog_6e94205b0100njpj.html

如果转载,请明确标明作者和转载文章原始网址:

http://blog.sina.com.cn/s/blog_6e94205b0100njpj.html

谢谢

肖正波(happymy)

此文章存在技术问题,请阅读以下修正内容:

http://blog.sina.com.cn/s/blog_6e94205b0100o3po.html

第四章实战开发

4.1我们要做什么?

OK,我想当大家看过前三章后,对WES7的就开发应该有了一个初步的了解。在本章将讲解以在Vmware虚拟机为硬件平台。在Vmware虚拟机上开发出一个WES 7的嵌入式系统镜像。借此演示一个标准使用ICE编写应答文件和自定义开发工具的开发流程。这个开发流程包含一些嵌入式特性的使用。以及覆盖了如何配置应答文件实现无人值守安装、如何集成驱动、在镜像的安装过程中如何执行自定义命令和脚、如何封装系统镜像以便进行大规模部署等大家常会接触到的问题。

4.2建立虚拟机和采集硬件信息

• 步骤 1:对于如何建立Vmware Workstation7虚拟机,这里不详细讲解。只要设置虚拟机的宿主操作系统为“Windows 7”就可以。





图4-1 Vmware Workstation 虚拟机

• 步骤 2:将Standard_7_32bit.iso载入虚拟机的光驱,然后启动虚拟机,并从光盘引导。单击“LaunchWinPE Command Prompt”





• 步骤 3:准备一个格式化好的USB U盘,将USBU盘挂载进虚拟机。



• 步骤 4:键入“Tap /oc:\demo.pmq”。c:为U盘的盘符(将生成的PMQ文件保存到U盘当中)





4.3用Image ConfigurationEditor(ICE)编写应答文件(用与构建母板镜像)

• 步骤 1:打开Image ConfigurationEditor(ICE), 菜单“File”>“Select Distribution Share”选择DistributionShare文件夹的位置。默认位置是“C:\Program
Files\Windows Embedded Standard7\DS”如果是64bit的Distribution Share,文件夹的名称应为DS64。DistributionShare是由开发工具提供的,用户不应在其根目录建立新的文件夹。





• 步骤 2:单击“New…”按钮,新建一个应答文件。双击“Distribution Share/Templates/IBW”下的“ThinClient.xml”





• 步骤 3:菜单“File>Import>importPMQ”,选择在上一节中生成的PMQ文件,并导入。





• 步骤 4: 菜单“Validate>AddRequired Packages”。双击下方的错误信息。





• 步骤 5: 取消选中“Windows ExplorerShell”,选中“Command Prompt Shell with Shell Support”和“Simplified(PRC)Chinese Language Pack ”。单击“OK”按钮。



• 步骤 6:菜单“Validate>Add Required Packages”。展开“DistributionShare\Packages\Feature Pack\Embedded Enabling Features”双击Hide BootScreens。





• 步骤 7:找到VMwareWorkstation的安装目录下的windows.iso,用winrar或者其他软件打开windows.iso,将里面的所有文件拷贝到DS库的“\$OEM$Folders\$1\Program Files\vmtoolsetup”下,例如:C:\Program Files\WindowsEmbedded Standard 7\DS\$OEM$ Folders\$1\ProgramFiles\vmtoolsetup”文件夹。

之后在“\DS\$OEM$Folders\$1\Windows\Setup\Scripts”文件夹下建立一个名称为“SetupComplete.cmd”脚本文件。编辑该文件加入下列命令:

“C:\Program Files\vmtoolsetup\setup.exe” /v/qn

C:\Windows\system32\calc.exe


这样做会在第7个阶段(OOBE)执行上面2条命令,但是此种执行命令或脚本的方法并不会检查被执行命令的返回值,另外如上所示,第一条命令执行后会重新启动计算机,这有可能造成第二条命令未被执行或没有被完整的执行。这点在开发过程中要注意!

• 步骤 8:将DS库的“\$OEM$Folders\$1\Program Files\vmtoolsetup\Program Files\VMware\VMwareTools\Drivers\”的“scsi”文件夹拷贝到DS库的“\Out-of-BoxDrivers目录中,例如将“C:\Program Files\Windows Embedded Standard7\DS\$OEM$ Folders\$1\Program Files\vmtoolsetup\ProgramFiles\VMware\VMware
Tools\Drivers”的“scsi”文件夹拷贝到“C:\ProgramFiles\Windows Embedded Standard 7\DS\Out-of-Box Drivers”文件夹下。

$1文件夹下的所有文件将会被IBE自动拷贝到目标系统盘中。其他类似“$1”的“变量”可以从帮助文档中查询。除了此种集成文件的方法:使用imageX修改IBW光盘\DS目录下的install.wim文件。在这里就不详细介绍了。

• 步骤 9:菜单“insert> OEM Folders Path…”选中 “C:\Program Files\WindowsEmbedded Standard 7\DS”下的“$OEM$ Folders”文件夹,然后单击“Open”按钮。





• 步骤 10:按快捷键“Ctrl+F”,输入“Home”,单击“Find”按钮。双击下方的“Answerfile”的“IE-InternetExplorer_x86/Home_Page”。





• 步骤 11:将“Home_Page”的“Value”设置成“www.cyent.com.cn”。





• 步骤 12:将同页上方的“DisableFirstRunWizard”和“DisableWelcomePage”的“Value”设置成“True”。





• 步骤 13: 展开并选中“AnswerFile\Untitled\FeaturePack\User Interface\ Command Prompt Shell withShell Support ”。

设置“Filter view by:”为“2 Offline Servicing”。

设置“CustomShell”的“Value”为“C:\windows\system32\cmd.exe”

此处称之为自定义Shell,是大家常用的嵌入式特性之一。可以将用户“锁定”在自定义的应用程序。此处以命令提示符为例(默认就是命令提示符)。





• 步骤 14:在做完第8步之后,展开选中“Distribution Share/Out-of-BoxDrivers/mydevices”,鼠标右键“Insert Drive Path to Pass 1 WindowsPE”

此处称之为集成驱动,此方法只能集成INF格式的驱动程序!磁盘控制器的驱动(这类驱动称之为系统启动必须加载的驱动程序)要在第一阶段被加载否则将找不到可用的磁盘。





• 步骤 15: 展开“AnswerFile\Untitled\Product\Operating System\Foundation Core\WindowsEmbedded Edition\Setup_X86\UserData”

设置“Filter view by:”为“1 WindowsPE”

设置“AceptEULA”的“Value”为“True”。

展开并设置“ProductKEYKEY\”的“Value”为产品的序列号。如果没有请留空,不要使用00000-00000-00000-00000-00000。

设置“WillShowUI”的“Value”为“OnError”





• 步骤 16: 展开“AnswerFile\Untitled\Product\Operating System\Foundation Core\WindowsEmbedded Edition\International-Core-WinPE_X86”。

设置“Filter view by:”为“1 WindowsPE”。

设置“UILanguage”的“Value”为“zh-CN”。





• 步骤 17: 展开“AnswerFile\Untitled\Product\Operating System\Foundation Core\WindowsEmbedded Edition\International-Core_X86”。

设置“Filter view by:”为“4 Specialize”。

设置“UILanguage”的“Value”为“zh-CN”。





• 步骤 18:在DS\$OEM$Folders文件夹下建立一个名称为disksp.txt的文本文档。

select disk 0

create partition primary

select partition 1

format FS=NTFS quick

active

exit


将上面的脚本复制到该文本文档中,并保存。

菜单“Insert\Synchronous Command\Pass 1 windowsPE…”,在弹出的窗口中键入(仅键入粗体部分的字符):

“diskpart /s “D:\AutoUnattend_Files\windowsPE\$OEM$Folders\disksp.txt”。然后单击“OK”按钮。

我们直接在第一阶段调用dskpart进行分区,并配置分区。RunSynchronous和RunAsynchronous可以在指定的阶段执行命令。Runsynchronous与RunAsynchronous不同地方是Runsynchronous会等待当前命令执行完,才会执行下一条。





• 步骤 19: 展开“AnswerFile\Untitled\Product\Operating System\Foundation Core\WindowsEmbedded Edition\Setup_X86\ImageInstall”。

设置“Filter view by:”为“1 WindowsPE”。

设置“InstallToAvailablePartition” 的“Value”为“True”。

这样设置会使得系统镜像安装到第一个标记到活动的分区中。如果要指定安装分区可以展开“InstallTo”。设置PartitionID的“Value”和“DiskID”的“Value”。





• 步骤 20: 展开“AnswerFile\Untitled\Product\Operating System\Foundation Core\WindowsEmbedded Edition\Shell-Setup_X86\OOBE”

设置“Filter view by:”为“7 OOBE System”

设置“NetworkLocation” 的“Value”为“Work”。

设置“SkipUserOOBE” 的“Value”为“True”。

设置“SkipMachineOOBE” 的“Value”为“True”。

设置“HideWirelessSetupInOOBE” 的“Value”为“True”。

设置“ProtectYourPC” 的“Value”为“1”。

设置“HideEULAPage” 的“Value”为“True”。

此处的这些设置可以跳过OOBE阶段的新建立用户、设置无线网络等设置。





• 步骤 21: 展开并选中“AnswerFile\Untitled\Product\Operating System\Foundation Core\WindowsEmbedded Edition\Shell-Setup_X86\U

serAccounts\LocalAccount”。鼠标右键单击,在弹出的菜单中选择“Insert NewLocalAccount”。

将“Name”设置为“CYBR”

将“DisplayName”设置为“CYBR”

展开“Password”,将“Value”设置为“CYBR”

将下面的“Group”设置为“Administrators”





• 步骤 22: 展开“AnswerFile\Untitled\Product\Operating System\Fou

ndation Core\Windows EmbeddedEdition\Shell-Setup_X86\AutoLogon”

设置“Filter view by:”为“4 Specialize”。

设置 “Username” 的“Value”为“CYBR”。

设置 “Enabled” 的“Value”为“True”。

设置 “Password”的“Value”为“CYBR”。



• 步骤 23:菜单“Validate>Add Required Packages”。

按“Ctrl+S”快捷键,保存应答文件到桌面,使用默认的文件名即可。

菜单“Tools”->“Create Media”-> “CreateIBW Image From Answer file”

在弹出的窗口中单击“…”按钮选择“C:\OSIMAGE”文件夹,单击“OK”按钮开始生成系统镜像。





• 步骤 24:打开“开始”菜单,在“附件”中,找到命令提示符并用鼠标右键单击,在弹出的菜单中选择“以管理员的身份运行”。

依次输入下列命令:

CD C:\Program Files\Windows Embedded Standard7\Tools\x86

oscdimg -n -m -b”C:\Program Files\Windows Embedded Standard7\Tools\IBW\x86\BOOT\etfsboot.com” C:\OSimageC:\OSimage\OSimage.iso


这样就把系统镜像的安装源打包成一个ISO光盘镜像文件。




步骤 25: 将刚才构建的ISO镜像再如到虚拟机然后启动虚拟机,如果上面步骤没有做错。等待40分钟系统的构建将顺利完成,在这期间不需要手动干预。


4.4 用ImageConfiguration Editor(ICE)编写应答文件(用于SYSPREP封装系统)

首先说明一下,在这里给出的是一个比较”通用”的应答文件(testsysprep.xml),应答文件的部分内容仍然需要修改后才能使用!以下是应答文件的内容:

<?xml version=”1.0″encoding=”utf-8″?>

<unattend xmlns=”urn:schemas-microsoft-com:unattend”xmlns:wcm=”http://schemas.microsoft.com/WMIConfig/2002/State”xmlns:ew=”urn:schemas-microsoft-com:embedded.unattend.internal.v1″>

<servicing>

<package action=”configure”>

<assemblyIdentityname=”Microsoft-Windows-EmbeddedEdition” version=”6.1.7600.16385″processorArchitecture=”x86″ publicKeyToken=”31bf3856ad364e35″language=”neutral” versionScope=”nonSxS” />

<ew:packageInfo releaseType=”Product”customInfoVersion=”1.0″ />

</package>

</servicing>

<settings pass=”generalize”>

<component name=”Microsoft-Windows-PnpSysprep”processorArchitecture=”x86″ publicKeyToken=”31bf3856ad364e35″language=”neutral” versionScope=”nonSxS” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>

</component>

<componentname=”Microsoft-Windows-Security-Licensing-SLC”processorArchitecture=”x86″ publicKeyToken=”31bf3856ad364e35″language=”neutral” versionScope=”nonSxS” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

<SkipRearm>0</SkipRearm>

</component>

</settings>

<settings pass=”specialize”>

<componentname=”Microsoft-Windows-International-Core”processorArchitecture=”x86″ publicKeyToken=”31bf3856ad364e35″language=”neutral” versionScope=”nonSxS” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

<UILanguage>zh-CN</UILanguage>

</component>

<component name=”Microsoft-Windows-Shell-Setup”processorArchitecture=”x86″ publicKeyToken=”31bf3856ad364e35″language=”neutral” versionScope=”nonSxS” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

<ProductKey>00000-00000-00000-00000-00000</ProductKey>

</component>

</settings>

<settings pass=”oobeSystem”>

<component name=”Microsoft-Windows-Shell-Setup”processorArchitecture=”x86″ publicKeyToken=”31bf3856ad364e35″language=”neutral” versionScope=”nonSxS” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

<AutoLogon>

<Password>

<Value>CYBR</Value>

<PlainText>true</PlainText>

</Password>

<Username>CYBR</Username>

<Enabled>true</Enabled>

</AutoLogon>

<OOBE>

<NetworkLocation>Work</NetworkLocation>

<SkipUserOOBE>true</SkipUserOOBE>

<SkipMachineOOBE>true</SkipMachineOOBE>

<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>

<ProtectYourPC>1</ProtectYourPC>

<HideEULAPage>true</HideEULAPage>

</OOBE>

</component>

</settings>

<settings pass=”windowsPE”>

<componentname=”Microsoft-Windows-International-Core-WinPE”processorArchitecture=”x86″ publicKeyToken=”31bf3856ad364e35″language=”neutral” versionScope=”nonSxS” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

<UILanguage>zh-CN</UILanguage>

</component>

</settings>

<ew:answerFileInfo distributionSharePath=”C:\ProgramFiles\Windows Embedded Standard 7\DS” footprint=”576716800″ecoreFootprint=”576716800″ />

</unattend>

你可以用ICE打开这个应答文件,看看都改了那些配置。特别说明一下,ICE保存这个应答文件会报错。这是很正常的因为这个应答文件没有添加任何“组件包”,它是不能用来构建系统镜像的。所以直接忽略这些错误。毕竟用ICE写一个应答文件要比用记事本写方便的多。上面的应答文件一共配置了:

1. 设定好OOBE过程中的设置(这样就实现了无人值守的部署)

2. 跳过硬件检测(减少部署的时间,不会删除已经配置好的驱动。)

3. 自动登录(这个需要根据自己的需要更改。)

4. 设置了CDKEY(ProductKey必须根据实际情况修改,试用版留空。)

5. 重置了激活计数器(WES7需要进行产品激活,最多可以重置3次。所以在最后一次执行syssprep命令,才可以将SkipRearm设置为0)

• 步骤 1启动好虚拟机,等待CMD打开后,输入explorer打开资源管理器(仍然不会出现“桌面”)





• 步骤 2 将刚才的应答文件(大家自己修改过的)拷贝到“C:\Windows\System32\sysprep”下(直接复制粘贴过去,VMTool刚才已经安装好了)。

删除“C:\Windows\Setup\SCRIPTS”下的所有文件。

回到CMD下执行下面的命令:

sysprep /shutdown /generalize /oobe/unattend:C:\Windows\System32\sysprep\testsysprep.xml

等关机后,就可以使用Ghost或者ImageX进行系统镜像的批量部署,当然你也可以再次启动虚拟机看结果。

最后祝大家元旦快乐!\( ^▽^ )/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: