无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 27231|回复: 59
打印 上一主题 下一主题

最新技术!从VHD文件启动WinPE 3.0

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-29 16:22:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近微软新出的win 7/2008 r2 beta支持从VHD文件启动系统。这样以后分区都不需要了,直接vhd虚拟分区;还能从差分vhd启动,可以直接可以替代还原卡、EWF、影子系统了。以后可以像用虚拟机一样用真实系统了。

可见:
http://winsystem.ctocio.com.cn/tips/202/8682202.shtml
说明了如何直接把系统安装到VHD文件
http://blogs.technet.com/fyu/archive/2009/01/21/windows-7-virtual-hard-disk-vhd.aspx
这个博客里有详细的vhd启动介绍。

下面我来介绍一下从VHD文件启动WinPE 3.0的方法:

1、用win7/winpe 3.0的磁盘管理器/diskpart或者vpc 2007创建一个vhd文件,固定容量或动态扩展的皆可,假设为c:\winpe.vhd
2、挂载此vhd,并创建新分区
3、把win7光盘中的boot.wim解压到vhd分区中,然后卸载vhd文件
4、用win 7/winpe 3.0的bcdedit执行下列命令(win7的bcdedit可以在xp/vista下运行)
bcdedit -create /d "vhdpe" -application osloader    (返回一个<GUID>)
bcdedit -set <GUID> device vhd=[c:]\winpe.vhd
bcdedit -set <GUID> osdevice vhd=[c:]\winpe.vhd
bcdedit -set <GUID> path \windows\system32\boot\winload.exe
bcdedit -set <GUID> systemroot \windows
bcdedit -set <GUID> winpe yes
bcdedit -set <GUID> detecthal yes
bcdedit -displayorder <GUID> -addlast

[ 本帖最后由 fujianabc 于 2009-1-30 06:23 编辑 ]

点评

for /f " tokens=2,3* delims={} " %a in ('bcdedit -create /d "vhdpe" -application osloader' ) do set GUID=%a bcdedit -set {%GUID%} device vhd=[c:]\winpe.vhd bcdedit -set {%GUID%} osdevice v   发表于 2017-8-24 11:02
2#
发表于 2009-1-29 16:38:41 | 只看该作者
刚刚出来的东西,保持观望,等有了一系列成熟的方案之后才考虑了。
回复

使用道具 举报

3#
发表于 2009-1-29 23:36:59 | 只看该作者
观望,不要急着进去
回复

使用道具 举报

4#
发表于 2009-1-30 00:13:03 | 只看该作者
有没windwos pe3.0的aik包呢?
回复

使用道具 举报

5#
发表于 2009-1-30 00:16:11 | 只看该作者
真快,都3.0了,,,呵呵,,
回复

使用道具 举报

6#
 楼主| 发表于 2009-1-30 00:35:57 | 只看该作者
原帖由 rongw 于 2009-1-30 00:13 发表
有没windwos pe3.0的aik包呢?

在此
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=135874

另外,搞vhd启动不需要waik,所有工具win 7光盘里都有了,顶多再去找个vpc 2007
回复

使用道具 举报

7#
发表于 2009-1-30 10:37:27 | 只看该作者
可VHD找什么东西挂载去?
回复

使用道具 举报

8#
 楼主| 发表于 2009-1-30 16:36:51 | 只看该作者
原帖由 yichya 于 2009-1-30 10:37 发表
可VHD找什么东西挂载去?

xp/vista下用vhdmount或者winmount,如果是固定容量的vhd,winimage也能挂

在win7/2008 r2/winpe 3.0下,直接用内建的磁盘管理器/diskpart挂载

[ 本帖最后由 fujianabc 于 2009-1-30 16:38 编辑 ]
回复

使用道具 举报

9#
发表于 2009-1-30 17:36:34 | 只看该作者
期待中...LZ可推荐几款成熟的...给学习.
回复

使用道具 举报

10#
发表于 2009-1-30 18:28:15 | 只看该作者
PE 3.0 只有一个 WIM 文件+启动所需文件
如果把这个PE装进 VHD的话,变成了VHD文件+启动所需文件
只是把WIM换成了VHD而已,不知有没有好处
本来这个VHD用来装系统还可以一试,因为整个系统不是一个文件
但是对于只有一个文件的PE来说,再把这个文件装进VHD我估计没意义了
回复

使用道具 举报

11#
发表于 2009-1-30 20:52:11 | 只看该作者
新技术,可惜我没看懂,用vpc加载的虚拟机硬盘文件?
回复

使用道具 举报

12#
发表于 2009-2-3 18:27:31 | 只看该作者
深入研究Windows 7中的Virtual Hard Disk (VHD) 技术                  发表了Windows 7对VHD文件的内建支持从VHD文件启动计算机这两篇博客后,陆续收到不少技术爱好者的电子邮件询问这些功能的细节、技术实现和应用场景。在做了一些功课之后,我整理汇总了这篇文章,详细全面的讨论一下Windows 7中VHD文件支持。
  下面的一些信息和测试步骤都是根据Windows 7  Build 6801和Beta1的,这篇文章发表于2009年1月22日。如果您看到这篇文章的时间比较晚了,可能有些具体的细节会随着Windows7的进一步开发而发生变化,敬请留意!欢迎大家转载这篇文章,但请保证文章的完整性,并注明出处,谢谢!
  理解VHD格式  绝大多数人最初接触VHD格式的文件,是在使用Virtual PC或者Virtual Server时,VHD是以文件形式存在的虚拟机的磁盘。微软在2005年公开了VHD格式文件的全部细节,可以从微软的TechNet网站下载Virtual Hard Disk Image Format Specification。这说明了微软不仅仅要把VHD应用在虚拟机领域,更希望VHD能够成为一种新的磁盘格式和载体在业界得到更多的支持。
  让我们抛开虚拟机,把目光集中在VHD文件本身。VHD是一块虚拟的硬盘,不同于传统硬盘的盘片、磁头和磁道,VHD硬盘的载体是文件系统上的一个VHD文件。如果大家仔细阅读VHD文件的技术标准,就会发现标准中定义了很多Cylinder、Heads和Sectors等硬盘特有的术语,来模拟针对硬盘的I/O操作。既然VHD是一块硬盘,那么就可以跟物理硬盘一样,进行分区、格式化、读写等操作。
  我们这可以这样认为,VHD也是硬盘的一种,就像2.5寸、3.5寸、SCSI、SATA、IDE等不同规格的硬盘一样,VHD是在一个文件中的硬盘
  Windows 7支持VHD的技术实现方式  在讨论具体的技术实现方式之前,我们首先需要理解操作系统对磁盘和文件的管理。操作系统有磁盘系统和文件系统两部分,分别处理对硬盘的I/O读写指令(磁盘系统),和管理硬盘之上的分区、数据和文件格式(文件系统)。VHD是存在于文件之上的磁盘,可想而知它的技术实现必须横跨磁盘系统和文件系统这两部分。如果您对操作系统中这一部分不是非常的了解,可以听一听微软网站上的Windows存储技术系列Webcast
  简单的说,要把VHD文件当作硬盘一样读写,必须有相应的驱动程序。在Virtual PC和Virtual Server中,微软就是通过在虚拟机种加入VHD的驱动程序,使得虚拟机可以从VHD启动并进行后续的操作。
  在Windows 7中,微软把VHD的驱动内置进了操作系统,也包括在了Windows 7的引导程序中。这也就是说,我们可在使用Windows7的时候,直接访问VHD文件中的内容(把VHD的硬盘映射到一个盘符,后面会详细描述),也可以通过Windows7的引导程序,启动位于VHD磁盘上的另一个操作系统。理解VHD驱动的工作细节,需要比较多的Windows底层知识,下图是一个比较简单和抽象的结构,可以发现,VHD的驱动是跟磁盘驱动和文件系统紧密结合的。
  
  眼花缭乱的VHD应用  既然在Windows 7中可以对VHD直接读写,让我们来看看这个强大的功能到底能有多少过人之处。
  首先,我们可以用命令行工具Diskpart创建VHD文件!(是的,命令行工具,你可能已经想到了自动化批处理和批量部署可以用到这个技术,没错,网管说:要硬盘,于是,大量的VHD就被创建出来了… )
        1:  diskpart     2:  create vdisk file=c:\windows7.vhd maximum=25600 type=fixed     3:  select vdisk file=c:\windows7.vhd     4:  attach vdisk     5:  create partition primary     6:  assign letter=r     7:  format quick label=vhd     8:  exit
上面这段命令,创建了一个固定尺寸的VHD文件,并且进行了分区、分配盘符和格式化,一气呵成。Diskpart还能做很多事情,具体参数,请参考这个文档,如果你不喜欢命令行,那么Windows 7的磁盘管理工具,一样可以完成上述操作。现在我们看看VHD在Windows 7中直接访问的几种方法:
         
         
         
方法一:如右图,Foo.VHD文件中可以包含一个以上的磁盘分区,这些分区都可以映射到Windows操作系统中,可以为之分配盘符,也可以映射到一个NTFS的目录。
         
         
         
         
方法二:如右图,VHD的磁盘中可以包含VHD文件,这个VHD文件还可以被映射到操作系统中,目前版本的Windows支持2层嵌套VHD。(我实在想不出有什么实际的用处,据说这个功能可能会在正式版中被去掉,以免把用户搞糊涂)           
         
         
         
         
方法三:如果你还没有被上面的嵌套VHD搞糊涂的话,让我们继续看右图。还记得VHD文件的差异磁盘功能吧?Bar.VHD在嵌套的基础上,使用物理C盘上的BarParent.VHD做成了一个差异磁盘。           
         
其实这种方法还是挺实用的,不考虑嵌套,Foo.VHD可以使用BarParent.VHD做差异磁盘,如果这样的话,从Foo.VHD启动计算机,每次用完都通过批处理自动销毁,硬盘保护卡的市场,恐怕从此要消失了。。。           
         
         
         
         
         
         
方法四:如右图,我们可以把网络共享里面的VHD文件,映射到系统中来。这个功能,结合上面的那个差异磁盘,对,小硬盘学生机,都不用硬盘保护卡勒!
这些功能的确令人眼花缭乱,我们冷静一下,看看VHD有什么局限性和功能上的限制:
  • 最多可以同时映射的VHD文件数量是512个(似乎也够用了)
  • VHD磁盘的父分区,不支持Volume Snapshot
  • 映射的VHD磁盘,不能被配置为动态磁盘,也就是不能在VHD上建软RAID(知足吧,VHD实现已经很复杂了,软RAID就不要来添乱了)
从VHD启动计算机如果说你对在Windows 7中映射和使用VHD文件无动于衷,那么,我相信从VHD启动计算机一定会抓住你的眼球。
我之前提到了,在Windows 7中,微软把VHD的驱动内置进了操作系统,也包括在了Windows 7的引导程序中。这也就是说,在启动计算机的阶段,Windows 7的引导程序可以大摇大摆的直接访问VHD文件,并且启动VHD中安装的系统。
慢着,什么是Windows 7的引导程序?简单地说,引导程序就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备(加载必要的驱动程序)、建立内存映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。我们在裸机上安装Windows 7时,首先做的,就是把Windows7的引导程序写入磁盘的特殊位置。Windows 7的引导程序带有VHD驱动,因此可以从VHD启动。
要完成从VHD启动计算机,需要以下几个步骤:
你必须得让VHD中有一个操作系统先。有几种办法,可以用Virtual PC或者VirtualServer安装一个操作系统在VHD文件中,然后运行Sysprep,接着关闭虚拟机,这个VHD文件就可以用了。运行Sysprep是必须的,否则VHD下次启动时,仍旧加载虚拟机环境下的驱动程序,会导致蓝屏。
如果你想玩一个高级的,可以使用ImageX命令,把Vista的镜像,或者其它的磁盘镜像直接灌入VHD文件,下面是一个具体的演示。这些命令把Vista镜像灌入一个VHD,并且使用WinPE在物理机的磁盘上载入Windows 7的引导程序,用Windows7引导程序启动硬盘上的VHD文件,注意:物理机本身没有安装Windows 7!
1. 用Diskpart创建VHD这里就不在赘述了,前面一段有这些命令。接着前面的一段命令,我们首先使用ImageX把一个操作系统的镜像,灌入VHD文件。WIM格式文件是Vista及以后版本Windows的安装镜像,在安装DVD中可以找到。
cd \d "c:\program files\<version>\tools\<architecture>\"
imagex /apply <wim文件的路径> 1 r:\2. WIM镜像被灌入VHD之后,使用Diskpart把VHD文件从当前的系统中卸载。
diskpart
select vdisk file=c:\windows7.vhd
detach vdisk
exit3. 把这个准备好的VHD文件放到一个网络共享中备用。
net use y: \\network_share\
copy c:\windows7.vhd y:\network_share\vhd\4. 使用Windows 7版本的WinPE光盘启动你的试验计算机,并运行如下命令把当前磁盘上的分区和数据清空。(注意,此操作会导致无法挽回的数据丢失,请一定要备份数据先)
diskpart
sel disk 0
clean5. 接下来用Diskpart创建两个分区,分别是200M的S盘和默认剩余硬盘空间尺寸的C盘。S也成为系统分区,用于保存Windows 7的引导程序和相应必须的一些文件。然后把刚才放到网络共享的VHD文件,复制到C盘的根目录。
create partition primary size=200
format quick fs=ntfs
assign letter=s
active
create partition primary
format quick fs=ntfs
assign letter=c
exit6. 用Diskpart命令加载VHD到当前的WinPE环境下,访问VHD中的WindowsSystem32目录,并执行bcdboot命令完成启动所必需的初始化配置。bcdboot这个命令很神气,文档中的具体描述是:Use theBCDboot tool, located in the \System32 directory of the Windows 7 VHD,to copy the boot-environment files from the\Windows directory in theVHD to the system partition. The BCDboot tool will create the BCDconfiguration to boot from the VHD. For more information about theBCDboot tool, see BCDboot Command-Line Options in the OEM Preinstallation Kit (OPK) User's Guide or the Windows Automated Installation Kit (Windows AIK) User's Guide.
diskpart
select vdisk file=c:\windows7.vhd
attach vdisk
exit
cd v:\windows\system32
bcdboot v:\windows /s s:7. 把WinPE光盘从光驱中移走,重启试验计算机,你会发现系统直接进入了VHD里面的Windows 7!
8. 如果你想在已有的Windows 7环境下配置配置一个从VHD的多启动选项,可以使用BCDEdit命令。(具体操作步骤在此)

上图是从VHD启动的大致结构,请注意VHD中操作系统的页面文件和Crashdump,不是包含在VHD中的,他们被保存在VHD文件的同一个目录中。
我们也需要了解一下VHD启动的一些注意事项和局限性:
1. 从VHD启动是有版本限制的,目前(2009年1月)的文档指出只有Windows Server 2008 R2、Windows 7商业版及以上版本,才支持此功能,未来正式发布时可能会有变化,敬请留意。
2. UDFS文件系统暂时不被支持(UDFS是什么?不支持也罢…)
3. 启动用的VHD文件,不能保存在压缩或者加密的NTFS磁盘之上(这一点很多人会忽略)
4. 根据一些朋友的反馈,动态的VHD文件无法启动,需要在建立vhd是设置成立即分配才可以从vhd启动
5. 如果你的物理硬盘是RAID格式,则必须要在VHD中的操作系统镜像中注入RAID的驱动程序,可以使用peimg命令。这个我没有测试过,感谢yueyezhan的反馈
性能性能性能大家一定关心VHD的性能问题。相比物理磁盘,VHD的读写I/O性能指标对比如下,测试数据根据Windows 7 Build6801获得,这些数据在近期的WinHEC大会上获得的。我们可以发现,相对于物理硬盘,VHD的读写开销非常小,只有在进行连续区块写入操作时,才跟物理硬盘有较明显的性能差异。


引用一些网友关于VHD的描述:
实验成功!
原系统是win7X86,灌装了一个X64的win7,在虚拟机里vhd上的X64win7成功启动
速度上感觉不出有差异已经成功从VHD启动
从磁盘管理可以看到当前系统盘C盘也就是20G的DISK2当然是VHD的啦,呵呵.
启动和运行速度和真机差不多吧~~结论就是很好很强大,有着和真机几乎一样的速度,可以照完所有3D游戏,
说白了用起来和真机几乎没任何区别。Win7让多系统变得简单,
根本不用为分区烦恼,一个系统就一个vhd镜像,蹦了复制一份替换即可,
就像用虚拟机一样。当然虚拟的系统貌似只能是Win7及以上系统如server2008R2。企业应用场景和未来展望个人用户的多启动解决方案
企业操作系统的批量部署
接合差异磁盘的无盘(小盘)工作站,可以替代硬盘保护卡

就说这么多吧,还从来没有在LiveWeiter里面一下在写这么多内容呢,接下来大家多多做试验,集思广益吧!
回复

使用道具 举报

13#
发表于 2009-2-3 18:30:59 | 只看该作者
Windows 7中如何使用.VHD文件  有些用户对Windows 7中使用Virtual PC的.VHD文件仍心存疑问,这里提供一份说明,它将告诉你如何在Windows 7中使用.VHD文件创建一个虚拟系统。

  有些用户对Windows 7中使用Virtual PC的.VHD文件仍心存疑问,这里提供一份说明,它将告诉你如何在Windows 7中使用.VHD文件创建一个虚拟系统。
  首先,我们需要安装Windows 7 Beta 1。然后进入命令行模式,输入diskpart命令,然后回车。
  现在就可以开始建立一个空的.VHD文件了,下面的命令将创建一个16GB的VHD文件。
  create vdisk file=c:\virtual\win7.vhd type=fixed maximum=16000
  
  创建一个16GB的VHD文件
  创建这样大小的VHD文件,大约需要一段时间,在笔者的测试平台上花费了10分钟。
  
  创建完成
回复

使用道具 举报

14#
发表于 2009-2-3 18:31:40 | 只看该作者
现在,我们要把Windows 7 Beta 1安装到刚才创建的VHD虚拟文件中。将刻录好的Windows Beta DVD盘放在光驱中,并设置为光盘引导。当Windows 7安装程序进行到语言选择时,我们按Shift+F10打开命令行模式。  
  按Shift+F10打开命令行模式
  在弹出的命令行窗口中,查看下已经分配出的系统分区,并记下盘符(笔者的盘符为D:)。
  接下来,输入如下命令,
  diskpart
  select vdisk file=d:\virtual\win7.vhd
  attach vdisk
  
  载入VHD文件
回复

使用道具 举报

15#
发表于 2009-2-3 18:32:24 | 只看该作者
好了,关闭命令行窗口,点击Install开始安装。选择自定义安装,进行到安装分区选择时,选择刚才创建16GB虚拟盘,把Windows 7安装到这个磁盘上。  
  选择安装到虚拟磁盘
  需要注意的,期间可能有些警告提示,选择忽略即可。
  现在将继续进行安装的第二个副本的Windows 7 。有个问题,就是启动时会出现两个Windows 7选项,不必担心,我们会解决这个问题。
  
  启动管理器
回复

使用道具 举报

16#
发表于 2009-2-3 18:32:57 | 只看该作者
安装完成后,需要修复启动管理器,也就是“Boot Manager”。因为默认情况下会启动真实的Windows 7,而不是在VHD文件中的虚拟系统。

  要修复启动管理器,首先用任意一个系统启动,以管理员身份进入命令行模式,输入如下命令:

  bcdedit /v

  拷贝VHD文件的ID,并输入如下命令(替换x部分)

  bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} description “Windows 7 - VHD”

  好了,这个命令可以让你在启动列表,清晰的区分出哪一个是真实的系统,哪一个是虚拟的。

  如果需要排序,可输入如下命令:

  bcdedit /displayorder {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} /addlast
回复

使用道具 举报

17#
发表于 2009-2-3 20:14:56 | 只看该作者
期待VHD文件。。。。。。
回复

使用道具 举报

18#
发表于 2009-2-4 09:11:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

19#
发表于 2009-2-4 13:03:27 | 只看该作者

试一试VHD还是很好的。不过这是修复用的PE,启动后直接进入修复,要停止修复,进入高级项目才能看到命令行。
建议你在启动WIN7时按住F8就可以进入WIN7 的 PE.
回复

使用道具 举报

20#
发表于 2009-2-5 16:52:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

21#
发表于 2009-2-5 21:22:56 | 只看该作者
PE的启动方式要变革了,就是不知道U盘启动这个PE7的LOADER,兼容性好不好。不过没有关系,GRLDR还是比MS的LOADER强,有前者,就能引导后者。
回复

使用道具 举报

22#
发表于 2009-2-12 12:32:01 | 只看该作者
创建200M的数据盘的作用是什么?
回复

使用道具 举报

23#
发表于 2009-2-12 14:01:00 | 只看该作者
这个得慢慢研究下,楼主总是有好东西给大家分享,支持~~~
回复

使用道具 举报

24#
发表于 2009-2-12 15:01:10 | 只看该作者
如果性能同物理硬盘差不多的话,这可称得上是一次革命。
回复

使用道具 举报

25#
发表于 2009-2-12 15:13:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

26#
发表于 2009-2-12 15:23:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

27#
发表于 2009-2-12 15:35:22 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

28#
发表于 2009-2-12 15:43:12 | 只看该作者
嗯。。。新东东,还需要大家的努力与完善,使之更成熟!
多谢提供!
回复

使用道具 举报

29#
发表于 2009-2-17 11:15:20 | 只看该作者
原帖由 nn2nn 于 2009-2-5 16:52 发表
用WIN7的Loader启动 VHD 的XP
很好.

怎么制作啊?那个bcd菜单要有什么参数?是把xp直接灌入VHD文件吗?
我试了好几次都没成功
回复

使用道具 举报

30#
发表于 2009-2-17 11:48:49 | 只看该作者
这个方法貌似不错,不过vhd如果退出时能自动地压缩,启动时能自动地快速解压就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 09:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表