实现从硬盘引导 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 并积极地参与讨论。
Vista 系统下的硬盘安装注意事项
在升级到 Vista 前我的系统使用是很正常的,磁盘拷贝的速度也相当快。前段时间安装了 Vista Business 因为 QQ2006 正式版的问题让我不得不回到 XP 下,后来又安装了 Vista Enterprise 使用至今,因为一直使用了QQ2006Beta3 而且阻止了安全升级,所以系统使用一直都很稳定就是比较慢,虚拟机也无出现蓝屏或意外重启的问题。但是当这两天搞 VistaPE 时要整理移动硬盘拷贝数据时才发现拷贝速度那叫个慢,拷贝个几百k的文件就停顿半天,拷贝一个几百M的数据机器就没法用了,而硬盘指示灯则是狂转。Vista 系统有个新特性就是在文件拷贝的时候可以看到剩余多少和当前的拷贝速度,发现拷贝文件的速度只有400~600K,最高也就2M多!Faint,郁闷!
于是在今天中午决定彻底查明原因。我进入BIOS设置将硬盘静音模式选择改为性能,发现系统拷贝速度有所改善,但是从我附加上的第二块硬盘上进行数据拷贝时,速度仍然让我无法忍受。不过在 BIOS 设置发现我的第二块硬盘是和光驱挂在同一个 IDE 口的,因为是 ATA100 ,7200pm的硬盘我想可能性能下降就出在与光驱同 IDE 这个问题上,而且因为是 Dell 的机器,所以我并没有把这根原配的 ATA33 数据线更换为ATA 66 的。于是打开机箱更换了数据线打开机器运行系统拷贝文件,God!数据拷贝的速度提升到了每秒16M,拷贝10多G的数据也就一会功夫,而且同时多个进程拷贝数据时,系统并不会反映迟钝,鼠标也不会漂移,也就是说在多线程拷贝数据时不会影响我的其它操作,太好了!
总结,看来 Vista 对硬件系统还是很挑剔的!如果情况允许建议还是应当将同型号的硬盘(如都是ATA100-7200pm的)连接到同IDE口上而不要与光驱挂在一起,如果不使用光驱,则应该将他们分别挂在两个IDE口上,此外尽量保证同一IDE口上的硬盘应该为同型号的,以避免影响速度!