Hyper-V 相关问题解决

全屏问题

由于 Hyper-V 最初是为服务器设计的,所以到目前为止,Hyper-V 对于全屏的支持没有 VMware 做得好,同样,Hyper-V 也不能像 VMware 那样随意更改窗口大小,这多少显得很不方便。

对于 Windows 虚拟机的全屏操作,目前较为理想的解决方案是使用远程桌面连接,记得要在虚拟机中开启远程桌面连接功能;而对于 Linux 虚拟机的全屏操作,可以通过修改 /etc/default/grub 文件,更改其中 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1920x1080"(注意是 x 不是 *),接着执行 update-grub 并重启即可。

显卡问题

开启 Hyper-V 功能后,原主机的显卡可能会出现问题,对于我当时的 1803 版 Win10 来说,电脑中原来的 Intel(R) HD Graphics 4600 核芯显卡(针对我的电脑而言)不能正常工作,具体表现在工具栏中英特尔核芯显卡控制面板图标消失,以及系统设置中莫名出现多个显示器,最直观的感受是每当点亮屏幕,图像显示会变慢,并且有一个逐渐适配屏幕大小的过程。

究其原因是系统中原本的 4624 版驱动程序与 Hyper-V 不兼容,解决办法是去官网下载最新版驱动程序并升级即可。

具体操作步骤可参考此视频

兼容性问题

由于 Hyper-V 采用的是硬件虚拟化技术,所以开启 Hyper-V 功能后相当于原本的物理机也运行在虚拟化上了,因此不能再使用 VMware 或者 VirtualBox,它们不允许在虚拟机上运行虚拟机,而此时原主机在它们眼中就是一个虚拟机。

早期的 Android Studio 中自带的模拟器也会由于这种原因导致模拟器无法启动,只需将模拟器升级到最新版即可解决,Android Studio 3.1.4 版之后自带模拟器(v27.3.9)已经可以支持 Hyper-V,在开启 Hyper-V 的系统中,它使用 Windows 虚拟机监控程序平台替代了 Intel 的 HAXM,使用前需要在 Windows 功能中启用 Windows 虚拟机监控程序平台功能。

网卡问题

要想使 Hyper-V 中的虚拟机上网,可以通过创建虚拟交换机实现,虚拟交换机有 3 种类型,外部相当于 VMware 的桥接模式内部相当于 VMware 的 NAT 模式专用相当于 VMware 的仅主机模式,所有虚拟机会默认使用内部类型的默认交换机,这是虚拟交换机管理器自动创建的。

如果我们选择创建外部类型的虚拟交换机,则会把 Hyper-V 的网络桥接在物理网卡上,那物理网卡将变成一个虚拟交换机。因此我们会发现原来使用的网卡变成了 vEthernet,这是正常现象,不用担心。Hyper-V 会自动创建一个虚拟网卡来继承原物理网卡的配置,物理计算机可以正常使用网络。

代数问题

在创建虚拟机时可以选择虚拟机代数,简单来说,第一代虚拟机支持创建 32 位与 64 位操作系统,创建的虚拟硬盘为 .vhd 格式,第二代虚拟机只能创建 64 位操作系统,创建的虚拟硬盘为 .vhdx 格式,并且必须是 Windows 8 或 Windows Server 2012 以上版本,对于 Linux,微软官方有一份详细的清单表明哪些版本可以创建第二代虚拟机。

为方便起见,可以在首次创建时选择第二代虚拟机,若不能成功启动,且屏幕显示 No operating system was loaded. Press a key to retry the boot sequence... 信息,则可以在设置中关闭安全启动并重启虚拟机,或者删掉虚拟机并重新创建第一代虚拟机。