标题:实现从硬盘引导 VistaPE 出处:gOxiA=苏繁=SuFan Blog 时间:Sat, 20 Jan 2007 12:32:32 +0000 作者:gOxiA 地址:https://goxia.maytide.net/read.php/288.htm 内容:       之前的 Blog 陈述了我对 VistaPE 的一些看法,谨代表个人看法。下来此篇 Blog 将与大家分享我是如何实现从硬盘引导 VistaPE 的。       这次实践所需的环境与定制个性化 VistaPE 时的一样,我将会使用 Virtual PC 2007 来作为硬盘启动 VistaPE 的测试环境。同样我仍然强烈地推荐使用 Vista 系统作为宿主环境。       之前定制个性化 VistaPE 时,我并没有安装 VistaPE 支持的组件支持,作为今后的使用工具我个人认为还是有必要把这些组件都安装进入到我的个性化 VistaPE 中去。为此,我们首先需要将之前做好的映像重新 mount 到我们的特定目录性,之后通过“peimg”工具来查看我们已安装的组件,和安装新的组件,之后我们会重新封装这个映像并从最终的映像文件中删除所有未安装的程序包,来有效地减少整个映像的大小,最后将我们修改过的 VistaPE 制作成一个 ISO 文件,供我们稍候在虚拟机实践硬盘启动 VistaPE 中使用。具体步骤如下:       1、装入基本的 VistaPE 映像,也就是将 winpe.wim 文件内容影射到我们的 mount 目录中,并且我们可以对其进行修改。 imagex /mountrw c:\vistape\winpe.wim 1 c:\vistape\mount       2、查看当前映像中已经安装的内置组件支持,并安装我们需要的内置组件。 peimg /list c:\vistape\mount\windows            注:在 INS 列中,(+)表示已经安装的组件包,(-)则表示为安装的组件包。下图则显示了默认映像中内置组件的安装情况。           如果要安装其中未安装的组件我们则使用参数“/install”即可,具体的命令如下: peimg /install=*HTA* c:\vistape\mount\windows           注:其中“*HTA*”即“WinPE-HTA-Package”,为了快速执行可以使用通配符。此外,官方文档中提及的“WinPE-SRT-Package”组件并不包含在我下载的简体中文版的WAIK中。       3、准备映像,删除我们未安装得组件,以减少映像大小。 peimg /prep c:\vistape\mount\windows[code]       4、重新封装映像,将更改提交至映像。 [code] imagex /unmount c:\vistape\mount /commit           注:在提交更改前,请找到本机“%windir%\system32\winload.exe”这个文件拷贝到“C:\vistape\mount\windows\system32\”下,因为根据实际测试发现WAIK自带的原始模板中并没有这个文件,由此会导致我们以硬盘启动 VistaPE 时因无法找到文件而启动失败。       5、替换默认的 Boot.wim 文件。 copy c:\vistape\winpe.wim c:\vistape\iso\sources\boot.wim       6、因为是制作硬盘启动的 VistaPE ,所以我们要先制作一张 CD-ROM 的 ISO 镜像文件,以便我们在虚拟机中测试。 oscdimg -n -bc:\vistape\etfsboot.com c:\vistape\iso c:\vistape\vistape.iso       在晚上上述的准备工作后,我们就可以开始实践以硬盘方式启动 VistaPE,因为 Vista 使用 BCD 来替换 boot.ini,所以我们需要使用BCDEdit(管理 BCD 存储的命令行工具)来重新生成我们的启动配置文件。为此,打开我们事先准备好的虚拟机(内存应该分配512M,否则将导致 VistaPE 运行失败),并载入我们上面制作好的 ISO 文件。成功引导进入 VistaPE 系统后,打开命令行模式,用 diskpart.exe 为硬盘重新分区格式化,并将 ISO 中的 VistaPE 解包至硬盘上,并重新生成硬盘引导用的 BCD 文件。具体步骤如下:       1、首先我们进入 VistaPE 命令行模式,准备硬盘驱动器。 diskpart select disk 0 clean create partition primary size=512 select partition 1 active format fs=ntfs exit       2、将 VistaPE 文件复制到硬盘。 d:\imagex /apply d:\sources\boot\wim 1 c: xcopy d:\boot\*.* /e /f c:\boot copy d:\bootmgr c: del c:\boot\bcd       3、配置 BCD 存储,重新生成引导配置文件。 bcdedit -createstore c:\temp\BCD    注:如果提示错误,请现在C盘下建立temp这个目录 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,我也非常愿意与大家分享我的心得体会。 Generated by Bo-blog 2.1.1 Release