制作从移动硬盘引导启动的 VistaPE 宣告失败(非 WIM 模式)
连续三天完成了 VistaPE 的系列实践并在 Blog 上发布了文章,于是在今天下午决定一鼓作气完成从 UFD 动硬盘存储上启动 VistaPE 的试验,结果以失败而告终。
如我所料 VistaPE 无法实现从 UFD 移动存储上启动,主要就是因为在生成 BCD 配置文件时所产生的 GUID 值,而这个 GUID 值就是取自默认的磁盘分区 C,当我直接把移动硬盘挂载到系统后,按照硬盘启动的制作过程进行,在准备最后的生成 BCD 文件时提示我的 GUID 无法从库中提取存储数据。没有过多地测试直接恢复了我的移动硬盘,之后重新启动了系统,发现我的系统无法启动了,仔细一看提示才发现我之前生成的 BCD 覆盖了我宿主系统的引导信息。Faint!
无奈,使用安装光盘上的恢复功能重新生成了我宿主系统的 BCD 配置文件,系统才得以恢复正常。看来想在 UFD 移动存储设备上直接启动 VistaPE 并不是容易的事情。只能抽时间找环境再做测试!设想,如果我拔掉所有内置的磁盘驱动器,然后只挂接 UFD 移动存储设备,然后用光盘方式的 VistaPE 引导不知道是否可以生成 BCD 。获取还有其他办法,因为从1月份的 WindowsITPro 杂志中获知国外的一个达人在获得微软的认可后为当地的警察局设计了一套可以运行在 UFD 设备上 XP 系统。也就是说有可能微软为了避免此类的应用被滥用而在 VistaPE 中加入了限制措施。要知道现在一个大容量的 UFD 太便宜了,而且很多人迫切需要一个更加小巧便捷的操作环境来满足自己的某些工作需要。还需要再揣摩揣摩!
今天就到此为止吧!周末还是应该放松放松!
实现从硬盘引导 VistaPE
之前的 Blog 陈述了我对 VistaPE 的一些看法,谨代表个人看法。下来此篇 Blog 将与大家分享我是如何实现从硬盘引导 VistaPE 的。
这次实践所需的环境与定制个性化 VistaPE 时的一样,我将会使用 Virtual PC 2007 来作为硬盘启动 VistaPE 的测试环境。同样我仍然强烈地推荐使用 Vista 系统作为宿主环境。
之前定制个性化 VistaPE 时,我并没有安装 VistaPE 支持的组件支持,作为今后的使用工具我个人认为还是有必要把这些组件都安装进入到我的个性化 VistaPE 中去。为此,我们首先需要将之前做好的映像重新 mount 到我们的特定目录性,之后通过“peimg”工具来查看我们已安装的组件,和安装新的组件,之后我们会重新封装这个映像并从最终的映像文件中删除所有未安装的程序包,来有效地减少整个映像的大小,最后将我们修改过的 VistaPE 制作成一个 ISO 文件,供我们稍候在虚拟机实践硬盘启动 VistaPE 中使用。具体步骤如下:
1、装入基本的 VistaPE 映像,也就是将 winpe.wim 文件内容影射到我们的 mount 目录中,并且我们可以对其进行修改。
2、查看当前映像中已经安装的内置组件支持,并安装我们需要的内置组件。
注:在 INS 列中,(+)表示已经安装的组件包,(-)则表示为安装的组件包。下图则显示了默认映像中内置组件的安装情况。
如果要安装其中未安装的组件我们则使用参数“/install”即可,具体的命令如下:
注:其中“*HTA*”即“WinPE-HTA-Package”,为了快速执行可以使用通配符。此外,官方文档中提及的“WinPE-SRT-Package”组件并不包含在我下载的简体中文版的WAIK中。
3、准备映像,删除我们未安装得组件,以减少映像大小。
4、重新封装映像,将更改提交至映像。
[code] imagex /unmount c:\vistape\mount /commit
注:在提交更改前,请找到本机“%windir%\system32\winload.exe”这个文件拷贝到“C:\vistape\mount\windows\system32\”下,因为根据实际测试发现WAIK自带的原始模板中并没有这个文件,由此会导致我们以硬盘启动 VistaPE 时因无法找到文件而启动失败。
5、替换默认的 Boot.wim 文件。
6、因为是制作硬盘启动的 VistaPE ,所以我们要先制作一张 CD-ROM 的 ISO 镜像文件,以便我们在虚拟机中测试。
在晚上上述的准备工作后,我们就可以开始实践以硬盘方式启动 VistaPE,因为 Vista 使用 BCD 来替换 boot.ini,所以我们需要使用BCDEdit(管理 BCD 存储的命令行工具)来重新生成我们的启动配置文件。为此,打开我们事先准备好的虚拟机(内存应该分配512M,否则将导致 VistaPE 运行失败),并载入我们上面制作好的 ISO 文件。成功引导进入 VistaPE 系统后,打开命令行模式,用 diskpart.exe 为硬盘重新分区格式化,并将 ISO 中的 VistaPE 解包至硬盘上,并重新生成硬盘引导用的 BCD 文件。具体步骤如下:
1、首先我们进入 VistaPE 命令行模式,准备硬盘驱动器。
select disk 0
clean
create partition primary size=512
select partition 1
active
format fs=ntfs
exit
2、将 VistaPE 文件复制到硬盘。
xcopy d:\boot\*.* /e /f c:\boot
copy d:\bootmgr c:
del c:\boot\bcd
3、配置 BCD 存储,重新生成引导配置文件。
bcdedit -store c:\temp\bcd -create {bootmgr} /d "Microsoft Boot Manager"
bcdedit -store c:\temp\bcd -set {bootmgr} device boot
bcdedit -store c:\temp\bcd -create /d "Microsoft Windows Vista PE" -application osloader
bcdedit -import c:\temp\bcd
注:在上面的命令中惠返回一个 GUID 值,请记录下来并替换下面命令行中的 GUID。
bcdedit -store c:\boot\bcd -set GUID osdevice partition=c:
bcdedit -store c:\boot\bcd -set GUID device partition=c:
bcdedit -store c:\boot\bcd -set GUID path \windows\system32\winload.exe
bcdedit -store c:\boot\bcd -set GUID systemroot \windows
bcdedit -store c:\boot\bcd -set GUID winpe yes
bcdedit -store c:\boot\bcd -set GUID detecthal yes
bcdedit -store c:\boot\bcd -displayorder GUID -addlast
至此我们就完成了计算机的准备工作没,现在可以重新启动计算机并从硬盘启动 VistaPE。以硬盘启动 VistaPE 的过程就完成了,在 BCD 生成过程中会涉及到一个 GUID (全局统一标识符),这个 GUID 生成的算法可能用到了以太网卡地址、纳秒级时间、芯片ID码或许多可能的数字,由于猜测可能我们制作出来的硬盘启动的 VistaPE 不能应用在所有的计算机或移动硬盘上,具体成功与否我们还有待测试,可能会出现的关键阻碍就是我们在移动硬盘上制作的硬盘方式引导的 VistaPE,并不能在所有的计算机上运行。希望结果不会是这样的。
好了,以硬盘启动的 VistaPE 制作过程到这里就告一段落,实际测试表明以硬盘方式启动 VistaPE 时,启动速度确实快了不少,而且当计算机内存为128M时仍然正常启动运行,当然在 VistaPE 中作的修改也会得到保存。
此外发现一个有趣的现象,使用硬盘启动 VistaPE 后,硬盘上的 C 盘盘符会自动变为X,当用其他介质引导时磁盘盘符会恢复为 C,也就是说微软将 VistaPE 默认引导磁盘盘符定义为 X ,而且是无法更改的。
关于移动硬盘使用硬盘启动方式的 VistaPE 测试结果我会尽快向大家提供,也希望大家能继续关注我的 Blog,我也非常愿意与大家分享我的心得体会。
深入思考和设计 VistaPE
为了赶时间将这篇 Blog 的题目这样命名,不知道是否正确?!此篇 Blog 的主要意图就是把自己到目前所亲身实践 VistaPE 时所遇到的潜在问题和未来应用所要涉及到的问题作一下整理。
之前的《定制个性化多存储介质的 Vista PE》这篇文章详细地阐述了我在制作以移动存储设备为介质的WIM方式运行的 VistaPE。应该说整体还是比较顺利的,并没有遇到什么难题。目前我已经在使用我移动硬盘上的 VistaPE 来帮助我完成一些 IT 维护工作。
这种运行方式虽然简便,而且不会因操作过程中删除修改系统文件、修改系统配置文件或病毒感染所导致移动硬盘上的VistaPE实效的问题(注:此 VistaPE 是一个WIM 映像包,在启动过程会在内存中创建一个 RAM ,并将 WIM 中的内容解包至此来运行 VistaPE,当系统重新启动后 RAM 内容也自动擦除。),但是设想我们也许会在某个特定的环境下需要对这个 VistaPE 作永久性的修改?!或许我们的目标计算机的内存无法满足 VistaPE 所需的 512M 内存的运行环境?!更有甚者会提出如果使用 WIM 方式运行 VistaPE 在启动过程中载入映像的时间会很长而无法忍受?!
确实如此,作为大部分的计算机发烧友或者是一些ITPro,都希望能把 VistaPE 作的像常规的操作系统一样,以便于我们使用!比如我们可以在一个不受信任的公共环境中使用我们自己的临时系统,以满足我们基本的工作,如运行浏览器浏览互联网、运行FTP软件来下载共享资讯、运行网页编辑工具来修改我们的网站数据或者还能使用 Office 来创建编辑我们的文档等等!多莫令人心动着迷的应用。
而使用 WIM 方式我们不能集成大量的工具因为会增加 WIM 的体积,从而导致我们的有限的内存无法运行它。更不要说映像解包所需要的时间。
此外来看看另一个有趣的现象,VistaPE 的其中一个功能是用来执行 Vista 部署工作的,如我们所知 Vista 的安装采用的是全新的 WIM 映像方式并且是基于文件恢复的。也就是说 Vista 的安装时间长短并不是由内存所决定的,他只是一个文件拷贝过程,附带还可能会用到一个解压缩,此时决定时间长短在我个人看来CPU和磁盘I/O的速度才是关键。
再来说说内存,使用 WIM 方式会占用我们很多的内存,或者我们的内存不足512M,那么我们就需要参考官方资料中所提到的从硬盘启动 VistaPE 这一节。关于具体实践从硬盘启动 Vista PE 的文章我会再稍后发布。不过有一点提前要告诉大家,官方提供的 Windows AIK 简体中文版中的 WIM 模板缺少 Windows 恢复环境组件(WinPE-SRT-Package),并且缺少一个关键的启动文件“winload.exe”。God,会出这样的问题,因为我是在刚出简体版时下载的,不知道当前微软 download center 提供的版本是否已经改良。之前下载的英文版我已经删除所以无法比较,如果看到此 Blog 并有兴趣测试的朋友请帮我确认一下。继续说内存,在使用从硬盘启动的 VistaPE 时,经过我实际测试内存占用在114M左右,如果是没有个性化定制的情况下内存的消耗会更少。也就是说我们使用一台只有128M内存的计算机就可以正常地运行 VistaPE。是不是也很吸引人呢?
最后,是以 WIM 方式还是直接启动方式主要取决于大家的需求。不过在制作硬盘启动的 VistaPE 时,启动文件要使用之前生成的 GUID 来创建引导文件,那么也就是说我们生成的硬盘启动的 VistaPE 可能无法运行在其他计算机或移动硬盘上。具体的信息可能还需要实际地测试。欢迎感兴趣的朋友继续关注我的 Blog 并积极地参与讨论。