虚拟硬盘VHD或VHDX的应用

一、操作系统限制

Windows7不能使用VHDX的虚拟磁盘格式,只能使用VHD格式的虚拟磁盘。适用于 Windows 10 或更高版本的本机启动要求使用vhdx 格式,而不是vhd 格式。

二、VHD(X)的创建

(一)windows的磁盘管理器可以创建VHD(X)的虚拟磁盘,挂载、分离。

(二)bootICE、WinntSetup、Diskgenius(仅vhd)等软件工具也可用来创建VHD(X)格式的虚拟磁盘。

三、VHD(X)的应用
(一)物理磁盘或分区转换为VHD(X)格式的虚拟磁盘,用于系统引导。
1.Disk2vhd

若要使用 Disk2vhd 生成的 VHD,请创建具有所需特征的 VM,并将 VHD 作为 IDE 磁盘添加到 VM 的配置中。如果计划从它们启动,请不要附加到创建它们的同一系统上的 VHD。 如果这样做,Windows将为 VHD 分配一个新磁盘签名,以避免与 VHD 源磁盘的签名冲突。 Windows通过磁盘签名引用启动配置数据库中 (BCD) 的磁盘,因此启动Windows时将无法找到启动磁盘。

计算机A转换后的虚拟磁盘可以挂载在计算机B上,通过修改BCD引导项,可以将计算机A的软件系统迁移到计算机B上。

修改VHD磁盘上windows系统的注册表2种方法

(1)使用VHD启动到系统后, 打开”运行”, 输入”regedit”(不包括双引号)命令打开注册表, 定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FsDepends\Parameters 项, 修改 VirtualDiskExpandOnMount 的16进制数值为4, 重启电脑后生效。

(2)使用PE或其他windows系统启动后,挂载虚拟磁盘到盘符(如M:)打开regedit,选中hkey_local_machine,文件-加载配置单元,选择M:\Windows\System32\config下的system文件,输入项名称(如win10vhd),hkey_local_machine下增加一个名称为win10vhd项,CurrentControlSet(n)\services\FsDepends\Parameters,修改 VirtualDiskExpandOnMount 的16进制数值为4。

2StarWind

使用此工具可以实现P2V、V2V的迁移,也可以用来创建VHD(X)格式的虚拟磁盘。

3Bootice1.3.4添加VHD引导项

打开Bootice,BCD编辑-当前系统的BCD-智能编辑模式,点击“添加”选择“新建VHD启动项”,在“启动磁盘”选择VHD文件所在的磁盘,“启动分区”选择VHD文件所在的分区,“设备文件”,格式“\xxx.vhd(x)”,修改“菜单标题”,点击“保存当前系统设置”、“保存全局设置”。

注意:“检测硬件抽象层”不要选中

(二)将本机物理磁盘上windows转为VHDX的虚拟磁盘并挂在本机上启动。
1使用dism++

使用此软件将windows“系统备份”为wim文件,新建一个VHDx的磁盘挂载后将wim文件通过“系统还原”到vhdx的磁盘上,再用bootice修改启动项,可以实现在本机上启动。

2. 使用diskgenius

新建一个VHDx的磁盘并挂载后,使用diskgenius磁盘管理软件“clone partition”功能将本机物理磁盘分区windows克隆到vhdx虚拟磁盘上,再修改vhdx虚拟磁盘上windows系统的注册表,通过在regedit中加载配置单元后,删除添加项名称下的mounteddevice下的全部键值。然后通过BOOTice修改启动项,实现vhdx虚拟磁盘的引导。

3.使用disk2vhd及diskgenius

使用disk2vhd将将本机物理磁盘分区windows系统转换为vhdx虚拟磁盘,使用diskgenius磁盘管理软件的菜单disk中的“modify MBR signature ”修改磁盘标签,generate GUID。通过在regedit中加载配置单元后,修改VirtualDiskExpandOnMount值为4,删除添加项名称下的mounteddevice下的全部键值。然后通过BOOTice修改启动项,实现vhdx虚拟磁盘的引导(HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices)。

注意将当前的windows10系统使用disk2vhd转换为vhd格式后,直接挂载会导致当前系统崩溃,鼠标停止,蓝屏

四、使用vmware workstation的虚拟机引导vhd
(一)vhd(x)直接挂载VM

根据VHD文件的分区,建立虚拟机时选择bios或uefi.vmware workstation的虚拟机可以直接通过添加现有虚拟磁盘的方法,使用vhd格式的虚拟磁盘,不支持vhdx,但可以使用starwind将vhdx转换为vhd再进行挂载。

通过disk2vhd工具转换的VHD虚拟磁盘,首先可以使用pe系统中diskgenius修改磁盘签名(disk mbr signaure),重新generate GUID避免磁盘签名产生的引导问题。新创建一个VHD文件(同时产生新的磁盘签名),通过分区或磁盘克隆,实现系统迁移。

1.vm使用uefi

Vhd虚拟磁盘挂载vm后,出现引导问题,可使bootice工具挂载vhd中的esp分区,使用BCD编辑中选择“其他BCD文件”来检查引导问题。如何还不能启动,可以使用diskgenius的分区克隆其他同类系统的esp分区,然后重新编辑BCD。或者使用pe、dism++重建esp分区。

2.vm使用bios

Vhd虚拟磁盘挂载后,使用diskgenius工具将其转换为MBR分区格式。编辑虚拟机配置,将pe的iso文件挂载光驱,vm引导后修复引导问题,会在c:\boot目录创建bcd文件,使用bootice工具检查引导项。注意:此时不能使用uefi的物理主机上挂载pe或者直接修改vhd虚拟磁盘来处理引导问题。

五、vhd还原到物理分区

Vhd虚拟磁盘挂载后,使用diskgenius工具将vhd(X)虚拟磁盘分区克隆到物理分区,同时使用regedit加载配置单元的方法修改注册表,删除mounteddevice下的键值。

六、BIOS里的启动顺序与BCD启动项顺序

BIOS里的启动顺序,按F12键选择另外一块物理硬盘、u盘时,对uefi,选择的设备要有自己的esp分区;对于mbr,选择的设备主引导记录、有激活的主分区及boot引导文件。

BCD文件于首个启动设备中,通过本设备的系统引导文件,引导设备磁盘分区或者其他物理磁盘分区的操作系统。主要机制是由本设备的引导文件控制系统引导。

七、从vmware workstation虚拟机迁移至本机启动VHDX

vm虚拟机采用uefi+gpt的系统模型。本次迁移的系统为windows11,为避免重新安装,保持原有的系统内容,将其迁移至物理机的vhdx本机启动。

1.物理磁盘1至少建立2个分区,在物理机的磁盘上建立esp分区及存放vhdx文件的ntfs分区。

2.使用starwind将vm虚拟机的vmdk硬盘文件转化为vhdx文件。

3.使用diskgenius的分区克隆功能将vhdx虚拟硬盘中的esp分区克隆到物理机磁盘1的esp分区。

4.使用bootice工具编辑bcd文件,添加相应的引导项。注意“检测硬件抽象层”不要选中。

5.启动物理机,按F12选择disk1进行引导,系统启动后重新检测硬件,系统会再次自动启动,再按按F12选择disk1进行引导,使用360驱动大师更新驱动。

八、从USB的esp分区引导
(1)使用移动u盘实现引导固定物理磁盘上的系统

USBHDD在bios的启动顺序中优先启动,在USBHDD上建立ESP分区并确保能使用。使用bootice工具修改启动项,引导物理磁盘disk1分区上windows10,引导disk2上的windows11的vhdx文件,均正常引导。

(2)使用usb hdd本机启动vhdx失败原因

前提条件同(1),建立好ESP分区,新建ntfs分区,用于放置vhdx文件,无论从winntsetup部署Windows11到NTFS分区的vhdx中,还是从其他硬盘分区拷贝过来的windows11的VHDX文件,使用bootice修改引导项,native boot(即本机启动)均失败,报错vhd_boot_init**_failed。

Native boot(本机启动)仅支持物理机上的内置硬盘,不支持从移动介质上本机启动。

  • 46
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows虚拟硬盘VHD)是一种虚拟化技术,允许用户创建和管理虚拟硬盘,以便在物理硬件上模拟出额外的逻辑磁盘。而VHD的存储驱动(storage driver)是一种软件,它负责对VHD文件进行读写操作,并将数据传递给操作系统。 为了开发Windows虚拟硬盘的存储驱动,开发者可以参考CSDN(国内领先的IT技术源,拥有大量IT开发技术教程和文章的交流社区)中提供的相关资料和教程。CSDN上有大量关于Windows驱动开发的教程和论坛帖子,可以帮助开发者了解存储驱动的开发原理和技术要点。 在开始开发之前,开发者需要具备应用程序的开发经验和一定的C/C++编程能力。开发驱动通常需要使用Windows Driver Kit(WDK)提供的开发工具和库文件,以及Windows操作系统的API接口。 在驱动开发过程中,开发者需要了解VHD文件的格式和结构,包括VHD的头部信息、分区表和数据区。然后,可以使用C/C++编程语言编写代码,实现对VHD文件的读写操作。此外,开发者还需要处理磁盘的错误和异常情况,以确保驱动的稳定性和可靠性。 在开发完成后,可以将驱动程序打包成驱动安装包(.inf文件),然后按照Windows的驱动安装和注册规范进行安装。安装完成后,用户可以在Windows操作系统中使用VHD并享受虚拟化带来的便利。 总而言之,开发Windows虚拟硬盘存储驱动需要开发者具备一定的编程能力和驱动开发知识。CSDN提供了许多相关的资料和教程,可以帮助开发者入门和解决开发过程中的问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值