虚拟硬盘VHD或VHDX的应用

2024-03-09 12:59
文章标签 应用 虚拟 硬盘 vhdx vhd

本文主要是介绍虚拟硬盘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(本机启动)仅支持物理机上的内置硬盘,不支持从移动介质上本机启动。

这篇关于虚拟硬盘VHD或VHDX的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790757

相关文章

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2