实现从硬盘引导 VistaPE

简介:
之前的 Blog 陈述了我对 VistaPE 的一些看法,谨代表个人看法。下来此篇 Blog 将与大家分享我是如何实现从硬盘引导 VistaPE 的。
      这次实践所需的环境与定制个性化 VistaPE 时的一样,我将会使用 Virtual PC 2007 来作为硬盘启动 VistaPE 的测试环境。同样我仍然强烈地推荐使用 Vista 系统作为宿主环境。
      之前定制个性化 VistaPE 时,我并没有安装 VistaPE 支持的组件支持,作为今后的使用工具我个人认为还是有必要把这些组件都安装进入到我的个性化 VistaPE 中去。为此,我们首先需要将之前做好的映像重新 mount 到我们的特定目录性,之后通过“peimg”工具来查看我们已安装的组件,和安装新的组件,之后我们会重新封装这个映像并从最终的映像文件中删除所有未安装的程序包,来有效地减少整个映像的大小,最后将我们修改过的 VistaPE 制作成一个 ISO 文件,供我们稍候在虚拟机实践硬盘启动 VistaPE 中使用。具体步骤如下:
      1、装入基本的 VistaPE 映像,也就是将 winpe.wim 文件内容影射到我们的 mount 目录中,并且我们可以对其进行修改。
InBlock.gifimagex /mountrw c:vistapewinpe.wim 1 c:vistapemount
      2、查看当前映像中已经安装的内置组件支持,并安装我们需要的内置组件。
InBlock.gifpeimg /list c:vistapemountwindows
           注:在 INS 列中,(+)表示已经安装的组件包,(-)则表示为安装的组件包。下图则显示了默认映像中内置组件的安装情况。
          如果要安装其中未安装的组件我们则使用参数“/install”即可,具体的命令如下:
InBlock.gifpeimg /install=*HTA* c:vistapemountwindows
          注:其中“*HTA*”即“WinPE-HTA-Package”,为了快速执行可以使用通配符。此外,官方文档中提及的“WinPE-SRT-Package”组件并不包含在我下载的简体中文版的WAIK中。
      3、准备映像,删除我们未安装得组件,以减少映像大小。
InBlock.gifpeimg /prep c:vistapemountwindows[code]
      4、重新封装映像,将更改提交至映像。
 
InBlock.gifcode] imagex /unmount c:vistapemount /commit
          注:在提交更改前,请找到本机“%windir%system32winload.exe”这个文件拷贝到“C:vistapemountwindowssystem32”下,因为根据实际测试发现WAIK自带的原始模板中并没有这个文件,由此会导致我们以硬盘启动 VistaPE 时因无法找到文件而启动失败。
      5、替换默认的 Boot.wim 文件。
InBlock.gifcopy c:vistapewinpe.wim c:vistapeisosourcesoot.wim
      6、因为是制作硬盘启动的 VistaPE ,所以我们要先制作一张 CD-ROM 的 ISO 镜像文件,以便我们在虚拟机中测试。
InBlock.gifoscdimg -n -bc:vistapeetfsboot.com c:vistapeiso c:vistapevistape.iso
      在晚上上述的准备工作后,我们就可以开始实践以硬盘方式启动 VistaPE,因为 Vista 使用 BCD 来替换 boot.ini,所以我们需要使用BCDEdit(管理 BCD 存储的命令行工具)来重新生成我们的启动配置文件。为此,打开我们事先准备好的虚拟机(内存应该分配512M,否则将导致 VistaPE 运行失败),并载入我们上面制作好的 ISO 文件。成功引导进入 VistaPE 系统后,打开命令行模式,用 diskpart.exe 为硬盘重新分区格式化,并将 ISO 中的 VistaPE 解包至硬盘上,并重新生成硬盘引导用的 BCD 文件。具体步骤如下:
      1、首先我们进入 VistaPE 命令行模式,准备硬盘驱动器。
InBlock.gifdiskpart    
InBlock.gif
InBlock.gifselect disk 0
InBlock.gif
InBlock.gifclean
InBlock.gif
InBlock.gifcreate partition primary size=512
InBlock.gif
InBlock.gifselect partition 1
InBlock.gif
InBlock.gifactive
InBlock.gif
InBlock.gifformat fs=ntfs
InBlock.gif
InBlock.gifexit
InBlock.gif
      2、将 VistaPE 文件复制到硬盘。
d:imagex /apply d:sourcesootwim 1 c:    

xcopy d:oot*.* /e /f c:oot

copy d:ootmgr c:

del c:ootcd

      3、配置 BCD 存储,重新生成引导配置文件。
bcdedit -createstore c: empBCD    注:如果提示错误,请现在C盘下建立temp这个目录
bcdedit -store c: empcd -create {bootmgr} /d "Microsoft Boot Manager"

bcdedit -store c: empcd -set {bootmgr} device boot

bcdedit -store c: empcd -create /d "Microsoft Windows Vista PE" -application osloader

bcdedit -import c: empcd

注:在上面的命令中惠返回一个 GUID 值,请记录下来并替换下面命令行中的 GUID。
bcdedit -store c:ootcd -set GUID osdevice partition=c:

bcdedit -store c:ootcd -set GUID device partition=c:

bcdedit -store c:ootcd -set GUID path windowssystem32winload.exe

bcdedit -store c:ootcd -set GUID systemroot windows

bcdedit -store c:ootcd -set GUID winpe yes

bcdedit -store c:ootcd -set GUID detecthal yes

bcdedit -store c:ootcd -displayorder GUID -addlast

      至此我们就完成了计算机的准备工作没,现在可以重新启动计算机并从硬盘启动 VistaPE。以硬盘启动 VistaPE 的过程就完成了,在 BCD 生成过程中会涉及到一个 GUID (全局统一标识符),这个 GUID 生成的算法可能用到了以太网卡地址、纳秒级时间、芯片ID码或许多可能的数字,由于猜测可能我们制作出来的硬盘启动的 VistaPE 不能应用在所有的计算机或移动硬盘上,具体成功与否我们还有待测试,可能会出现的关键阻碍就是我们在移动硬盘上制作的硬盘方式引导的 VistaPE,并不能在所有的计算机上运行。希望结果不会是这样的。
      好了,以硬盘启动的 VistaPE 制作过程到这里就告一段落,实际测试表明以硬盘方式启动 VistaPE 时,启动速度确实快了不少,而且当计算机内存为128M时仍然正常启动运行,当然在 VistaPE 中作的修改也会得到保存。
      此外发现一个有趣的现象,使用硬盘启动 VistaPE 后,硬盘上的 C 盘盘符会自动变为X,当用其他介质引导时磁盘盘符会恢复为 C,也就是说微软将 VistaPE 默认引导磁盘盘符定义为 X ,而且是无法更改的。
      关于移动硬盘使用硬盘启动方式的 VistaPE 测试结果我会尽快向大家提供,也希望大家能继续关注我的 Blog,我也非常愿意与大家分享我的心得体会。



本文转自 苏繁 51CTO博客,原文链接http://blog.51cto.com/goxia/220337,如需转载请自行联系原作者
目录
相关文章
|
14天前
|
存储 弹性计算 Shell
硬盘
【4月更文挑战第30天】
19 1
|
12月前
|
人工智能 缓存 运维
我,一块“烤熟”的硬盘
我,一块“烤熟”的硬盘
记一次华硕笔记本找不到引导问题BIOS能识别到硬盘但进不了系统
问题:进入BIOS后,能检测到硬盘,但是无法设置启动项,只能检测到启动u盘,进入pe后,分区助手时而读不出硬盘,后来读取到了,检测了下不是硬盘坏了的问题,尝试了引导修复也没用解决办法:将硬盘MBR格式转换为GPT亲测,转换后华硕BIOS能读取到引导,然后重进PE完成系统安装...
733 0
记一次华硕笔记本找不到引导问题BIOS能识别到硬盘但进不了系统
|
存储 IDE Linux
10.3 Linux系统是如何识别硬盘设备和硬盘分区的?
Linux 系统初始化时,会根据 MBR 来识别硬盘设备。
315 0
10.3 Linux系统是如何识别硬盘设备和硬盘分区的?
|
存储 Linux
linux系统下添加新硬盘、分区及挂载全过程详解
做为服务器操作系统,linux是很多站长经常用到的,那么在linux系统下如果需要新增加硬盘,该怎么增加呢?下面就来详细了解一下linux系统下添加新硬盘、分区及挂载硬盘的全过程。
1330 0
|
存储 测试技术 数据中心
|
虚拟化 内存技术
制作 ESXi 5.1 的USB闪存"引导安装"盘
制作 ESXi 5.1 的USB闪存"引导安装"盘 1 准备工作 linux 系统    //我这里是ubuntu 12.04 U盘一个       //8GB kingston ESXi ISO文件  //vmware 官网下载 VMware-VMvisor-Installer-5.
1263 0