启用Hyper-v功能
Win10启用Hyper-V
管理员权限运行Powershell
运行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
在启用或关闭Windows功能中启用Hyper-v功能,重启系统后生效:
Winserver 2019启用Hyper-v
在服务器管理界面上选择”添加角色和功能“,服务器角色中选择Hyper-V:
安装完成后,等待重启。
Hyper-v嵌套虚拟化
Vbox嵌套Hyper-v?
经测试,Hyper-V和Vbox不能同时开启虚拟机,也不能在Vbox的虚拟机(7.0版本)中嵌套使用hyper-v。
Hyper-v嵌套
Hyper-v内嵌套Hyper-v自然是没有问题。
列出主机上已有的虚拟机:
Get-VM
指定虚拟机下启用嵌套虚拟化:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
如需禁用嵌套虚拟化则运行:
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false
Vmware嵌套Hyper-v
Vmware支持嵌套开启Hyper-v,但是在主机启用过Hyper-V并需要勾选嵌套虚拟化Vt-x功能的情况下,出现模块“VPMC”启动失败报错。
需要完全关闭Hyper-v功能:
bcdedit /set hypervisorlaunchtype off
并在Windows功能中取消勾选下面的选项:
重启后即可正常开启虚拟机并嵌套安装Hyper-V了。
Windbg调试Hyper-v
调试hyper-v和windows内核需要分开两个windbg,内核调试用串口,hyper-v调试用net模式。
vmware添加串口:
虚拟机上运行:
bcdedit /dbgsettings serial debugport:1 baudrate:115200
bcdedit /debug on
bcdedit /hypervisorsettings NET HOSTIP:192.168.23.1 PORT:50001
bcdedit /set hypervisordebug on
bcdedit /set hypervisorlaunchtype auto
其中HOSTIP:192.168.23.1 为主机ip,虚拟机与主机间要网络互通。
输入bcdedit /hypervisorsettings 命令,查看配置信息:
记录上面的key字段信息,需要填入windbg中。
主机中打开两个windbg,分别设置:
Windows未开放hyper-v核心模块的符号,但还是可以用一些标准命令的。
lm #查看模块
k* #查看堆栈
d*,e* <VA> #读/写虚拟地址数据
!d*, !e* <PA> #读/写物理地址数据
r <寄存器> #查看寄存器
!vtop <cr3> <VA> #将虚拟地址转换为物理地址
hyper-v调试器中运行lmvm hv 可以查看hyper-v handler模块的信息,Intel架构下也就是hvix64.exe:
可以看到它的基址为fffff8b5`27000000,使用!vtop转换为物理地址,先获取cr3:
dump物理内存数据和虚拟内存数据一致。
在内核调试器上运行!idt 可以查看IDT表:
近期评论