重新映像 Hyper V Gen 2/UEFI VM

重新映像 Hyper V Gen 2/UEFI VM

因此,我们最终下定决心,开始在桌面上使用 UEFI。它非常适合我们的 Hyper V 映像 - 我们可以整天创建第二代虚拟机。在我们需要重新映像之前,情况都是如此。如何将具有现有操作系统的第二代虚拟机设置为从 PXE 启动?

我终其一生都无法更改启动顺序以允许我从网络启动。在系统设置下的固件界面中,它仅列出 Windows 启动管理器。每次我们想要尝试新的映像变体时,都必须删除并重新创建虚拟机,这既痛苦又缓慢。我们如何解决这个问题?我猜想虚拟机中有一些隐藏的标志,我需要使用 Powershell 进行编辑,但文档不足。

答案1

我遇到了与 Tim Brigham 相同的问题。您 (Grigory) 确实有这些选项,但这并不意味着我们也有。以下是我在虚拟机中拥有的启动选项的屏幕截图: 缺少启动选项 按住 Shift 键也不起作用,正如您所描述的那样。这似乎有效。

如何更改启动顺序(NIC 优先):
我做了一些研究,似乎只能使用 powershell 更改在 Windows Server 2012 R2 或更高版本上运行的第 2 代 VM 的启动顺序。我使用以下 powershell 命令来更改启动顺序:

$VM = Get-VM "VmName"
$network = $VM | Get-VMFirmware |select -ExpandProperty BootOrder | where {$_.FirmwarePath.EndsWith("MAC(000000000000)")}
$VM | Set-VMFirmware -FirstBootDevice $network

现在虚拟机将从网络启动。之后您可能需要/想要将启动顺序改回文件作为第一个启动设备。您也可以选择将网络保留为第一个启动设备。

更新日期:2017-3-15
警告
每次重新映像 UEFI 机器时,固件列表中都会添加一个额外的“bootmgfw.efi”。删除过时的 bootmgfw 文件并不是一个简单的过程;您需要在 VM 本身中使用 BCDEDIT 来清理它们。有关如何执行此操作的指南可以在这里找到这里。使用本指南时,请注意不要删除链接到 EFI 启动设备的 GUID

如何更改启动顺序(文件优先):
如果您已使用上面提到的指南删除了过时的固件条目,则可以使用以下 powershell 代码将启动顺序更改回文件优先:

$VM = Get-VM "VmName"
$file = $VM | Get-VMFirmware |select -ExpandProperty BootOrder | where {$_.FirmwarePath.EndsWith(".efi")}
$VM | Set-VMFirmware -FirstBootDevice $file

注意:我发现在 Windows 2012 R2 及更高版本上运行的 Gen2 VM 固件只显示“文件”选项,这很奇怪。我想知道:这是设计使然还是一个错误?

答案2

我在 Windows 8.1 和 Windows 10 Hyper-V 下运行 Windows 10 VM,并启用了安全启动,我能够将网络适配器视为启动源,并可以在两台机器上将其移至启动队列,甚至更进一步,我实际上可以启动到我的 WDS 映像。

虚拟机设置

PXE 引导

另一种选择 - 按住 Shift 键(任何 UEFI Windows)从控制台重新启动客户机,它会为您提供故障排除和启动选项,您可以在其中选择从网络启动。

使用设备进行启动

EFI 网络启动

但就在我测试这个的时候,我收到了 TFTP 下载超时的问题,这个问题通过调整 WDS 属性 -> TFTP -> 最大块大小:1024 而不是默认值 0 来解决。

相关内容