周末花了点时间看了微软对 Hyper-V 的介绍文档《Hyper-V on Windows 10》,顺便记点笔记。
About Hyper-V on Windows
- Introduction to Hyper-V
- 在 Windows 宿主机中启用 Hyper-V 之后,宿主机也会运行在 Hyper-V 之上(就像 Hyper-V 中创建的虚拟机一样),因此宿主机中某些对实时性要求较高的应用程序的运行可能会受到一定的影响;但与虚拟机不同的是,宿主机可以直接访问所有硬件资源。
- Introduction to Hyper-V
Get started with Hyper-V
Install Hyper-V
- 安装 Hyper-V 有多种方式,在 启用或关闭 Windows 功能 中安装是一种非常简单的方式。
Create a Virtual Machine
在创建虚拟机时会涉及到 Generation 的概念,微软建议创建二代虚拟机;一代虚拟机支持绝大多数的操作系统,二代虚拟机支持 Secure Boot(仅支持安装 64 位操作系统);虚拟机一旦创建,Generation 便不可更改。
Secure Boot 会检查 Bootloader 的签名主体在 UEFI 数据库中是否存在,非法的 Bootloader 不会被运行。
如果要调试虚拟机操作系统的内核,那么需要先禁用 Secure Boot,然后通过 PowerShell 命令为虚拟机添加一个串口:
1
Set-VMComPort -VMName TestVM 1 \\.\pipe\TestPipe
虚拟机默认会开启 使用自动检查点,即自动创建快照功能,建议关闭该选项。
Hyper-V and PowerShell
- 使用 PowerShell 可以很方便的和虚拟机进行各种交互,在 Fuzz 的时候应该会有用。
Share devices with VMs
- 虚拟机默认使用 增强会话 模式,这样我们可以通过 RDP 来访问虚拟机,体验和使用远程桌面是一样的;在该模式下,虚拟机和宿主机之间默认共享剪贴板并支持文件拖放,通过设置还可以共享音频设备、驱动器、打印机等;实际测试表明该模式下的画面清晰度更高,UI 不会有模糊的感觉。
Connect with PowerShell Direct
- 支持在宿主机中针对虚拟机执行 PowerShell 命令。
Nested Virtualization
Hyper-V 支持嵌套虚拟化(目前仅支持 Intel CPU),可使用 PowerShell 命令为虚拟机启用该特性:
1
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
Hyper-V 可能在未来的版本中增加对 AMD CPU 嵌套虚拟化的支持(参考 AMD nested virtualization?)。
未启用嵌套虚拟化时的 Hyper-V 架构图如下:
启用了嵌套虚拟化之后的 Hyper-V 架构图如下: