通过ICE轻松部署WES7镜像
作者:雷志刚
转自:http://lzg-ad.blog.sohu.com/156323256.html
注:该文转自Happymy,感谢他的技术提供和分享。
本文适合的软件版本:CTP,RC
如果大家看过前面一篇文章:通过IBW构建你的第一个WES7镜像,应该对Windows Embedded Standard 7有个初步的了解。如果我们要给1000台设备安装WES 7 可就不能用那篇IBW的文章方法进行安装了,因为你不想重复1000次同样的操作吧。通过这篇文章,大家能掌握ICE的使用(不是冰块……)和使用ICE编写一个无人应答文件来进行无人值守安装、集成驱动、定制一个WES 7镜像。
ICE的全称是Image Configuration Editor,一个类似AIK的工具。
ICE的界面和AIK的Windows System Image Manager(SIM)很像,但是操作上有很大的不同(包的名称和位置都不同。)先用一张截图来看一下ICE的界面:
好了,让我们开始ICE之旅。
先准备一下:
WES7 Toolkit 和 WES7 32Bit 或者 64Bit Runtime
准备好要集成的驱动程序(INF文件)
使用tap.exe生成pmq文件
一、安装Windows Embedded Standard 7 Toolkit
插入 WES7 Toolkit 的安装盘,执行光盘根目录的setup.exe,这里只是简要说明一下安装过程。
1. 选择自定义安装。
2. 选择不安装DistributionShares下的所有组件。如果我们选择安装DistributionShares,那么将意味着把WES7所有的功能包都安装到本地,这样我们可以通过ICE生成一张IBW的光盘。但是,通常我们构建出来的镜像只是一个XML文件格式的Anwser File,所以,为了节省空间,我们可以选择不安装DistributionShares。
如下图:
注意:
1. 建议在Vista和Win7中安装
2. 不会和AIK发生冲突。
3. 可以不安装DistributionShares这样可以节省磁盘空间,但是您必须要有runtime的光盘。
如果安装“AMDX64 Distribution Shares” 请准备好X64的runtime光盘,安装过程中会要求您插入X64的runtime光盘。
等安装完成之后。将WES7 Toolkit 和 32Bit\64Bit Runtime光盘中的"DS”文件夹拷贝本地的硬盘上。
如果你已经安装了Distribution Share,请跳过这一步。
二、初始化ICE
1. 从“开始”菜单->“所有程序”->“Windows Embedded Standard 7”->“Image Configuration Editor”启动ICE
2. 选择"File"->"select Distribution Share..."
3. 选择刚才拷贝过去的"DS”文件夹。
4. 如果你已经安装了Distribution Share,您可以在“Windows Embedded Standard Quebec”的安装目录中找到DS文件夹。默认是“C:\Program Files\Windows Embedded Standard Quebec\DS”。X64的Distribution Share的文件夹名称是“DS64”。
现在开始导入 PMQ文件:
导入之前要先建立应答文件"File"->"New Answer File"
1. 选择菜单“File”->“Import”->“Import PMQ”
导入过程可能需要一些时间,但是我们会发现,由于WES7采用了文件管理功能包的方式,而不是数据库的方式,所以导入PMQ的速度要比XPE下快很多。
2. log 部分带有警告标志的信息,表明该驱动没有在开发工具的包中,需要自己提取驱动然后集成。
小建议:
删除不用的驱动,可以减少镜像的体积,例如:如果不用声卡,删除声卡驱动的同时,同时删除支持声卡工作的系统组件。
三、开始集成驱动
注意:
1. 您可以仅仅集成需要的驱动,但是如果系统的包中没有一个或多个系统启动需要的驱动,那么您必须集成这些驱动,否则系统启动时蓝屏(大多数停机码是0X7B)。
2. 如果集成一个错误的驱动,则有可能造成一个硬件加载了错误的驱动,严重的话会造成系统蓝屏(大多数是停机码是0X7E),如下图:
“MyDriver”是我存放要集成驱动的文件夹(已经将驱动文件提取出来)。里面有很多子文件夹,每个子文件夹都存在一个INF文件(一个设备的驱动)。
注意:这里介绍集成驱动的方法,只适合这种INF文件形式的驱动(必须存在INF文件),如果您的驱动程序是exe程序来进行安装(一个安装程序),请不要用这种方法集成驱动。
1. 选择菜单Tool->Explore Distribution Share,会打开一个文件夹。将“MyDriver”文件夹复制到“Out-of-Box Drivers”内。关闭刚才打开的文件夹。
2. 选择“MyDriver”右键选择菜单的第一项(其他子项目不用再选)。
提示:
第一项:安装程序在“WinPE”阶段(第一次启动的时候,加载setup的软件界面之前)”加载集成的驱动。
第二项:“在offiine serviceing”(已经加载了setup的软件界面,并且进行第一次重启后)阶段加载集成的驱动。
第三项:在“audit system”(使用sysprep封装镜像)阶段加载集成的驱动。
注意:
如果您的驱动包括系统必须加载能完成安装的驱动,则在该驱动的项目上必须选择第一项。(例如:硬盘控制器的驱动,必须选择“WinPE阶段”加载驱动,否则会因为找不到硬盘导致安装失败。)如果你不确定集成的驱动是否有系统必须加载能完成安装的驱动,则选择第一项。如果您的使用sysprep部署系统镜像,请选择第三项。
引用:
如何提取驱动的INF文件和相关的文件?
如果你的驱动是exe或者msi这类的安装程序,你就需要提取驱动文件。(当然你也可以部署系统镜像时执行这些驱动的安装程序进行安装。)
在这里简单写一下:
一共有2类方法。
1. 在嵌入式设备上安装一个Windows7或者Vista(当然你也可以安装一个WES 2010,不过你要确保已经存在系统启动必须的驱动),之后使用驱动精灵一类的程序进行备份驱动。这样可以达到提取驱动文件的目的。
2. 把驱动的安装程序解包(exe、msi等)
使用Universal Extractor 这类的软件对驱动的安装程序进行解包,得到驱动文件。
注意:我推荐使用第一种方法,虽然他比较“麻烦”,但是不容易出错。适合没有经验的人使用。
无论你是用哪种方法,一定要确认提取的INF文件是可以使用的,相关的文件都提取全了(尤其是第二种方法),您可能要修改INF文件才能使驱动正常安装。(例如:一个驱动的INF文件省略了Install节的copyfile,它使用安装程序来完成拷贝文件的操作,对于这样的INF,您就需要手动修改inf文件。)
四、添加系统组件
还记得Target Designer么?Target Designer在WES 7中已经消失了,哈哈。ICE可以被看成Target Designer。现在我们要开始构建一个系统镜像了。
选择菜单“Validate”->“Validate Only”(进行关联性检查)。你会看到一条错误信息:
双击这个错误信息。出现下面这个窗口:
exactly表示只能选择一个,least one表示至少选一个(可选多个)。
上面粗体的内容表示那个组件提出的请求。
粗体显示的组件表明,该组件已经被添加。
按照图进行选择。
正确完成后错误信息会出现一条删除线,表示错误已经解决了。
引用:
这里解释一下:
- Windows Boot Environment(标准的bootmgr)
- Embedded Windows Boot Environment(一个embedded定制的引导环境)
- Unbaranded Startup Screens(选择后系统的登录界面没有Windows Embedded Standard的标志)
- Windows Embedded Startup Screens(选择后系统的登录界面Windows Embedded Standard的标志)
- Command Prompt Shell with Custom Shell Support(登录后CMD作为shell启动,CMD的界面关闭后系统不会关机)
- Windows Explorer Shell(登陆后启动标准的shell,就是大家平常看到的桌面)
- 剩下的是语言包,这里我们使用简体中文。
选择菜单“Validate”->“Add Required Packages”(自动添加需要的组件,这样可以获得最小的镜像)
如果选择菜单“Validate”->“Add Required And Optional Packages”会添加一些额外的组件,会提高软件兼容性,但是会增大体积。
建议用“Add Required Packages”然后根据自己需要添加组件。
进行关联性检查有可能还会出现下图的情况,all代表必须都选择,下面的Optional dependencies,表示可选的组件。
另外还有一类错误信息:
这类错误信息是要求你修改包(组建的)属性。
双击,错误信息会自动定位到要修改的属性上,如果您发现无法修改,请修改“Fliter view ”选择适合的阶段(与Pass对应。)
下面介绍一下ICE的界面。
①DS目录
$OEM$ Folder :OEM 文件夹,该文件夹的内容会被拷贝到系统system32中(具体参见帮助文档)。
- Out-of Box Drivers:用户集成驱动的文件夹
- Packages\Drives:系统自带的驱动
- Packages\FeaturesPack: 系统组件包
- Packages\languagePack: 语言包
②配置windows 安装部分的应答设置(可以进行一些自定义的配置,如:OEM信息、运行程序(能实现安装驱动))
③应答文件的信息(里面的组件名同①、②,自己添加的驱动不会增加组件,只会自动设置好驱动文件的位置)
④属性的设置窗口
一共分两页:settings和properties。
- Settings是一个包的私有属性。
- Properties是一个包的共有属性。例如:是否启动或禁用这个包。
注意画红框的部分,windows的安装有7个阶段,一个包(组件)的属性可能在不同阶段分别有设置,pass:P1代表第一阶段……一直到pass:P7(这些阶段随着部署的方式不同不会都被执行)。
Fliter view 设置成by setting 可以显示(只能看,不能改。如果修改请设置Fliter view 到对应的阶段)这个包(组件)的全部设置。
但是如果其中一个属性在不同阶段都有,只显示一个,设置后会变成粗体,另外PASS后面会有*号标明。
您可以显示一组包(组件)的全部属性,这样方便查找。
⑤日志信息(如果存在错误信息保存应答文件的时候会提示警告)
下面讲一下基础操作:
1 添加一个或一组包(组件)
选中要添加的包(组件),鼠标右键“Add to Answer File”。
2 删除一个或一组包(组件)
选中要删除的包(组件),鼠标右键“Delete”键,之后确认删除。
3 禁用和启用一个包(组件)
将Properties页中的setting项中的Disabled设置成Ture(禁用)或Fales(启用)
禁用后包(组件)的图标会变成灰色。
五、配置无人值守安装
如果您要部署大量的镜像,您不想每次都选择接受许可协议、选择安装到那个分区中……
好了,开始配置无人值守安装。
1 设置接受许可协议
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Setup_X86”中的“UserData”展开,把“AceptEULA”设置成ture。(P1)
2 默认语言设置(简体中文)
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\International-Core_X86”展开,把“UILanguage”设置成zh-CN。(P4、P7)
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\International-Core-WinPE_X86”展开,把“UILanguage”设置成zh-CN。(P1)
注意:语言的设置要和使用的语言包相符。值与LanguagePackage分支下的语言包缩写名称相符,注意大小写。
3 设置产品密钥
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Setup_X86”中的“UserData\ProductKEY”展开,把“Key”设置成您购买的产品密钥。(P1)
注意:CTP版本已经内置了产品密钥,本项设置请跳过。
4 安装分区设置
4.1配置自动对磁盘进行分区
4.1.1
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Setup_X86\DiskConfiguration”设置WillShowUI为OnError (表示如果出错则显示UI界面,进行手动分区)
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Setup_X86”展开,选中“DiskConfiguration”,按鼠标右键弹出的菜单选“Insert New Disk”
展开新建的“Disk”,设置Disk ID为0 (表示第一个硬盘)
设置WillWipeDisk为true (表示删除该硬盘的所有分区)
4.2.2
选中“CreatePartitions”,按鼠标右键弹出的菜单选“Insert New Partition”。
展开新建的“CreatePartition”,将“Order”设置成1(表示第一个分区)。
将“Trpe”设置成Primary(表示主分区) 。
将“Size”空着。
将“Extend”设置成Ture(表示用所有空间)。
如果要建立多个分区请重复操作4.2.2
如果指定分区容量请设置“Size”单位是MB,并将“Extend”设置成False
4.2设置将镜像安装到那个分区
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Setup_X86”中的“ImageInstall”展开,把“InstallToAvailablePartition”设置成False。(P1)
(如果设置成True表示安装到第一个可用的分区!,请跳过下面InstallTo的设置!)
将InstallTo展开。将Partition设置成1,DiskID设置成0(表示安装到第一个硬盘的第一个分区。)
5 设置跳过OOBE中的相关设置(欢迎、建立账户……)和进行自动登录。
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Shell-Setup_X86”中的“OOBE”展开,把“NetworkLocation”设置成Home。(P7)
把“SkipUserOOBE”设置成True。(P7)
把“SkipMachineOOBE”设置成True。(P7)
把“HideWirelessSetupInOOBE”设置成True。(P7)
把“ProtectYourPC”设置成1。(P7)
把“HideEULAPage”设置成True。(P7)
将“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Shell-Setup_X86”中的“AutoLogin”展开,把“Username”设置成Administrator。(P4、P5、P7)
说明一下:
如果您没有建立用户账户,那么必须设置AutoLogin,这样会启用Administrator账户。(默认该账户是禁用的,密码是空。)要建立账户可以在“Pruduct\Opearating System\Foundation Core\EmbeddedEdition\Shell-Setup_X86”中的“UserAccounts”中设置。
展开UserAccounts(用户帐户),右击LocalAccounts(本地帐户)并且选择Insert NewLocalAccount(插入新的帐户)。
展开LocalAccount(本地账户)进行以下属性设置:
1.Name = MyUser
2.DisplayName =MyUser
3.Description =User
4.Password ->Value = password
5.Group = Users
展开AdministratorPassword(管理员密码)进行以下属性设置:
1.Value = password
六、生成IBW Disk
1. 先保存一下应答文件
- 选择菜单“Tools”->“Media Creation”-> “Create IBW Disk From Answerfile”,弹出的窗口中,“Choose Answerfile”会自动选择当前的应答文件。
- “Select the target folder for the image”选择一个空的文件夹。
- 点OK开始生成。
选择好要生成的目录即可, 这里假设目标路径为e:\test\
4.2 打包生成的目录文件成iso格式的镜像文件
打开「开始」菜单\程序\Windows Embedded Standard 7\Windows PE Tools Command Prompt输入命令:
cd ..\AMD64
oscdimg.exe -m -o -n -lwes7_X64 -be:\test\BOOT\ETFSBOOT.COM e:\test e:\test.iso
注意:这个生成镜像和WES 2009用目标设计器 build出来的镜像有很大差别。IBW相当于一个Windows的安装源,没有FBA的过程。不能像原来那样部署。你可以通过光盘、U盘、PXE部署这个镜像,但是请记住这是个“windows”的安装源。
2. 简单写一下这个镜像的部署方式
A 光盘部署
将runtime的镜像备份,删除ISO文件里面的所有文件,再将镜像拷贝进去,保存ISO。从光盘启动即可。
B USB磁盘部署(移动硬盘、U盘)
格式化USB磁盘,拷贝生成的镜像的所有文件到USB磁盘中,使用UltraISO写入MBR和Vista的引导记录。之后从USB磁盘启动
C 网络部署
这里就不写了,建议参考AIK的帮助文档的PE、PXE、网络部署等部分。
建议:启动生成镜像后完成安装操作(第一次重启前,也就是从硬盘启动之前(也就是安装程序完成了拷贝和释放文件的操作))使用ImageX抓取硬盘的镜像。之后克隆到其他机器上。这样可以节省大量时间。
通过ICE轻松部署WES7镜像的更多相关文章
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- 在docker中部署centos7镜像
本篇文章参考自: https://www.cnblogs.com/linjj/p/5606911.html https://blog.csdn.net/u012767761/article/detai ...
- [Docker]Harbor部署私有镜像仓库
Harbor部署私有镜像仓库 认识: Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器. 部署环境: CentOS7 Python2.7.5 Docker CE ...
- 部署rabbitMQ镜像集群实战测试
部署rabbitMQ镜像集群 版本信息 rabbit MQ: 3.8.5 Erlang: 官方建议最低21.3 推荐22.x 这里用的是23 环境准备 主机规划 主机 节点 172.16.14.3 磁 ...
- Docker------阿里云部署私有镜像仓库
Docker------阿里云部署私有镜像仓库 前言 公共镜像仓库 官方:https://hub.docker.com/ 基于各个软件开发或者软件提供方开发的 非官方:其它组织或公司开发的镜像,供 ...
- Docker_部署本地镜像仓库(6)
在部署本地镜像仓库之前,需要在主机上安装Docker.本地镜像仓库是registry镜像的一个实例,在Docker中运行. 1.创建本地镜像仓库服务 $ docker run -d -p 4000:5 ...
- Openstack_O版(otaka)部署_镜像服务glance部署
安装和配置服务 1. 建库建用户 mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO '; GRA ...
- 为Kubernetes集群部署本地镜像仓库
目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ...
- 使用RVM轻松部署Ruby环境
Ruby用得不多,但发现有业务需要部署指定的版本和插件.起初找了一些Fedora的src.rpm重新打包,发现依赖问题比较多,最终还是费劲的把el6的包编出来了. 不巧今天又有业务要求el5的包,原本 ...
随机推荐
- 【PMP】商业论证与效益管理文件
①项目商业论证 定义:文档化的经济可行性研究报告,用来对尚缺乏充分定义的所选方案的收益进行有效性论证,是启动后续项目管理活动的依据. 项目发起人通常负责商业论证文件的制定和维护,项目经理负责提供建议和 ...
- 记录一次使用VS2015编译错误的原因查找(boost+gdal)
编译错误说明 在一个解决方案中的项目A中使用到了boost,完全没有问题.在项目B中也使用了boost库,编译的时候就产生了一堆错误. 原因查找 两个项目通过对比,唯一的不同就是项目B使用了gdal库 ...
- 只有设置了 name 属性的表单元素才能在提交表单时传递它们的值
$(function () { var wait = $("<img src=\"\" alt=\"正在上传\"/>"); $( ...
- Java中的不可变类理解
一.Java中的不可变类 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修 ...
- Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理 1.1. 矩阵管理 1 1.2. 相关信息 矩阵的历史 1 1.3. 基于“ ...
- 基于facebook-wda的iOS自动化操作实践记录
[本文出自天外归云的博客园] 原理 对于iOS自动化操作,主要靠WebDriverAgent来完成.在Mac电脑上连接真机iPhone,运行WebDriverAgentRunner会在Mac端启动WD ...
- Gluon Datasets and DataLoader
mxnet.recordio MXRecordIO Reads/writes RecordIO data format, supporting sequential read and write. r ...
- mac 环境变量
在 ~/.bash_profile 中添加一行: export PATH=$PATH:/usr/local/bin 其中,/usr/local/bin 为需要添加的 path 执行 source .b ...
- sql日期格式小应用 记录一下
比如这样的数据 20170317 要转成2017-03-17 单独一步做不到 两步思想 先转成日期格式 在进行格式化 select CONVERT(varchar(10),(CAST(CONVERT( ...
- Web重温系列(三):OracleDependency实现监听数据库变化
有个小项目(后来由另一个小组以Java开发了),内容是监控一个Oracle数据库.如果其中一个表A有数据变动,则需要将相关内容重组后通过接口发送给B. 通常的解决办法是定时查询,时间间隔可以小一点,还 ...