加载中…
个人资料
肖正波
肖正波
  • 博客等级:
  • 博客积分:0
  • 博客访问:95,031
  • 关注人气:34
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2010-12-31 13:12:05)
标签:

虚拟机

windows

embedded

standard

7

开发流程

it

分类: WES7开发技术

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

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 Workstation 7虚拟机,这里不详细讲解。只要设置虚拟机的宿主操作系统为“Windows 7”就可以。

http://questor87.files.wordpress.com/2010/12/image_thumb.png?w=516&h=454

图4-1 Vmware Workstation 虚拟机

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

http://questor87.files.wordpress.com/2010/12/image_thumb1.png?w=535&h=400

• 步骤  3:准备一个格式化好的USB U盘,将USB U盘挂载进虚拟机。http://questor87.files.wordpress.com/2010/12/image_thumb2.png?w=190&h=63

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

http://questor87.files.wordpress.com/2010/12/image_thumb3.png?w=549&h=413

 

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

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

http://questor87.files.wordpress.com/2010/12/image_thumb4.png?w=551&h=394

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

http://questor87.files.wordpress.com/2010/12/image_thumb5.png?w=556&h=397

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

http://questor87.files.wordpress.com/2010/12/image_thumb6.png?w=552&h=392

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

http://questor87.files.wordpress.com/2010/12/image_thumb7.png?w=550&h=391

• 步骤  5: 取消选中“Windows Explorer Shell”,选中“Command Prompt Shell with Shell Support”和“Simplified(PRC) Chinese Language Pack ”。单击“OK”按钮。http://questor87.files.wordpress.com/2010/12/image_thumb8.png?w=399&h=353

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

http://questor87.files.wordpress.com/2010/12/image_thumb9.png?w=529&h=376

• 步骤  7:找到VMware Workstation的安装目录下的windows.iso,用winrar或者其他软件打开windows.iso,将里面的所有文件拷贝到DS库的“\$OEM$ Folders\$1\Program Files\vmtoolsetup”下,例如:C:\Program Files\Windows Embedded Standard 7\DS\$OEM$ Folders\$1\Program Files\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\VMware Tools\Drivers\”的“scsi”文件夹拷贝到DS库的“\Out-of-Box Drivers目录中,例如将“C:\Program Files\Windows Embedded Standard 7\DS\$OEM$ Folders\$1\Program Files\vmtoolsetup\Program Files\VMware\VMware Tools\Drivers”的“scsi”文件夹拷贝到“C:\Program Files\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\Windows Embedded Standard 7\DS”下的“$OEM$ Folders”文件夹,然后单击“Open”按钮。

http://questor87.files.wordpress.com/2010/12/image_thumb10.png?w=518&h=366

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

http://questor87.files.wordpress.com/2010/12/image_thumb11.png?w=515&h=364

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

http://questor87.files.wordpress.com/2010/12/image_thumb12.png?w=516&h=369

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

http://questor87.files.wordpress.com/2010/12/image_thumb13.png?w=518&h=372

• 步骤  13: 展开并选中“Answer File\Untitled\FeaturePack\User Interface\ Command Prompt Shell with Shell Support ”。
设置“Filter view by:”为“2 Offline Servicing”。
设置“CustomShell”的“Value”为“C:\windows\system32\cmd.exe”

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

http://questor87.files.wordpress.com/2010/12/image_thumb14.png?w=516&h=388

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

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

http://questor87.files.wordpress.com/2010/12/image_thumb15.png?w=516&h=367

• 步骤  15: 展开“Answer File\Untitled\Product\Operating System\Foundation Core\Windows Embedded Edition\Setup_X86\UserData”
设置“Filter view by:”为“1 WindowsPE”
设置“AceptEULA”的“Value”为“True”。
展开并设置“ProductKEYKEY\”的“Value”为产品的序列号。如果没有请留空,不要使用00000-00000-00000-00000-00000。
设置“WillShowUI”的“Value”为“OnError”

http://questor87.files.wordpress.com/2010/12/image_thumb16.png?w=518&h=368
 
• 步骤  16: 展开“Answer File\Untitled\Product\Operating System\Foundation Core\Windows Embedded Edition\International-Core-WinPE_X86”。
设置“Filter view by:”为“1 WindowsPE”。
设置“UILanguage”的“Value”为“zh-CN”。

http://questor87.files.wordpress.com/2010/12/image_thumb17.png?w=527&h=377
 
• 步骤  17: 展开“Answer File\Untitled\Product\Operating System\Foundation Core\Windows Embedded Edition\International-Core_X86”。
设置“Filter view by:”为“4 Specialize”。
设置“UILanguage”的“Value”为“zh-CN”。

http://questor87.files.wordpress.com/2010/12/image_thumb18.png?w=524&h=374
 
• 步骤  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 windows PE…”,在弹出的窗口中键入(仅键入粗体部分的字符):

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

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

http://questor87.files.wordpress.com/2010/12/image_thumb19.png?w=502&h=359

 
• 步骤  19: 展开“Answer File\Untitled\Product\Operating System\Foundation Core\Windows Embedded Edition\Setup_X86\ImageInstall”。
设置“Filter view by:”为“1 WindowsPE”。
设置“InstallToAvailablePartition” 的“Value”为“True”。

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

http://questor87.files.wordpress.com/2010/12/image_thumb20.png?w=499&h=357
 
• 步骤  20: 展开“Answer File\Untitled\Product\Operating System\Foundation Core\Windows Embedded 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阶段的新建立用户、设置无线网络等设置。

http://questor87.files.wordpress.com/2010/12/image_thumb21.png?w=500&h=357
 
• 步骤  21: 展开并选中“Answer File\Untitled\Product\Operating System\Foundation Core\Windows Embedded Edition\Shell-Setup_X86\U
serAccounts\LocalAccount”。鼠标右键单击,在弹出的菜单中选择“Insert New LocalAccount”。
将“Name”设置为“CYBR”
将“DisplayName”设置为“CYBR”
展开“Password”,将“Value”设置为“CYBR”
将下面的“Group”设置为“Administrators”

http://questor87.files.wordpress.com/2010/12/image_thumb22.png?w=487&h=346
 
• 步骤  22: 展开“Answer File\Untitled\Product\Operating System\Fou
ndation Core\Windows Embedded Edition\Shell-Setup_X86\AutoLogon”
设置“Filter view by:”为“4 Specialize”。
设置 “Username” 的“Value”为“CYBR”。
设置 “Enabled” 的“Value”为“True”。
设置 “Password”的“Value”为“CYBR”。

http://questor87.files.wordpress.com/2010/12/image_thumb23.png?w=510&h=362

 
• 步骤  23: 菜单“Validate>Add Required Packages”。
按“Ctrl+S”快捷键,保存应答文件到桌面,使用默认的文件名即可。
菜单“Tools”->“Create Media”-> “Create IBW Image From Answer file”
在弹出的窗口中单击“…”按钮选择“C:\OSIMAGE”文件夹,单击“OK”按钮开始生成系统镜像。

http://questor87.files.wordpress.com/2010/12/image_thumb24.png?w=508&h=363
 
• 步骤  24: 打开“开始”菜单,在“附件”中,找到命令提示符并用鼠标右键单击,在弹出的菜单中选择“以管理员的身份运行”。
依次输入下列命令:

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

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

http://questor87.files.wordpress.com/2010/12/image_thumb25.png?w=513&h=365• 步骤  25:  将刚才构建的ISO镜像再如到虚拟机然后启动虚拟机,如果上面步骤没有做错。等待40分钟系统的构建将顺利完成,在这期间不需要手动干预。
 
4.4 用Image Configuration 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”>
            <assemblyIdentity name=”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>
        <component name=”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”>
        <component name=”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”>
        <component name=”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:\Program Files\Windows Embedded Standard 7\DS” footprint=”576716800″ ecoreFootprint=”576716800″ />
</unattend>

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

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

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

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

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

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

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

http://questor87.files.wordpress.com/2010/12/image_thumb26.png?w=503&h=378

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

删除“C:\Windows\Setup\SCRIPTS”下的所有文件。
回到CMD下执行下面的命令:
sysprep /shutdown /generalize /oobe /unattend:C:\Windows\System32\sysprep\testsysprep.xml

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

最后祝大家元旦快乐!\( ^▽^ )/

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有