因此,我们最终下定决心,开始在桌面上使用 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 固件只显示“文件”选项,这很奇怪。我想知道:这是设计使然还是一个错误?