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

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

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”就可以。

image

图4-1 Vmware Workstation 虚拟机

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

image

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

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

image

 

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是由开发工具提供的,用户不应在其根目录建立新的文件夹。

image

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

image

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

image

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

image

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

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

image

• 步骤  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”按钮。

image

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

image

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

image

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

image

• 步骤  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,是大家常用的嵌入式特性之一。可以将用户“锁定”在自定义的应用程序。此处以命令提示符为例(默认就是命令提示符)。

image

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

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

image

• 步骤  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”

image
 
• 步骤  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”。

image
 
• 步骤  17: 展开“Answer File/Untitled/Product/Operating System/Foundation Core/Windows Embedded Edition/International-Core_X86”。
设置“Filter view by:”为“4 Specialize”。
设置“UILanguage”的“Value”为“zh-CN”。

image
 
• 步骤  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会等待当前命令执行完,才会执行下一条。

image

 
• 步骤  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”。

image
 
• 步骤  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阶段的新建立用户、设置无线网络等设置。

image
 
• 步骤  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”

image
 
• 步骤  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”。

image

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

image
 
• 步骤  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光盘镜像文件。

image• 步骤  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打开资源管理器(仍然不会出现“桌面”)

image

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值