尝试从 USB 运行 Hyper-v 2016

尝试从 USB 运行 Hyper-v 2016

今天下午一直在尝试测试 Hyper-v 2016,但我无法让我的 R630 从我使用以下说明配置的 USB 启动https://technet.microsoft.com/library/ee731893(ws.10).aspx

我在 Hyper-v 2012 R2 上使用完全相同的指南,没有任何问题。

有谁有这样的运气吗?

答案1

我找到了有关将 Windows Server 2016 TP3 部署到 SD 卡上的信息。

https://www.danielstechblog.info/how-to-deploy-windows-server-2016-tp3-onto-an-sd-card/

本主题介绍了如何在 SD 卡上部署 Windows Server,但它是 TP3。我想您可以使用发布版本执行相同的操作。

此外,您还可以考虑 SATA DOM。

https://www.supermicro.com/products/nfo/SATADOM.cfm

它对你来说是一个便宜且小巧的选择。你可以在它上面部署任何操作系统。所以它也是一个选择。

答案2

我最近遇到了这个问题,经过几天的调试,我发现了问题并修复了它。

请击鼓:

安装 Hyper-V Server 2016 后,使用离线工具(例如 Windows PE)安装新安装的 SYSTEM 配置单元,并将 DWORD ControlSet001\Control\BootDriverFlags 从 0x04 更改为 0x1c。(您可能还应该更改 ControlSet002 版本,以便更好地进行测量,并且可以将更改嵌入到 install.wim 中,以避免每次安装后都必须执行此操作。)

(因为当然需要花一周的时间和一个内核调试器才能弄清楚这只需要在一个模糊且完全没有文档记录的位域中进行两位更改。)

原因如下。

Windows 引导加载程序使用内置 UEFI 例程来查找 Windows 安装,并在调用 ExitBootServices 之前将内核和引导驱动程序加载到 RAM 中。完成此操作并将控制权交给内核后,除非 RAM 中已存在相应的驱动程序,否则内核将无法访问引导卷。

不过,问题在于:winload.efi 不够复杂,无法枚举硬件并确定实际需要哪些驱动程序。在旧版本中,它只会加载设置为 Boot Start 的内容。但是,加载无关的驱动程序会导致性能下降,并且随着 Windows 开始支持更多类别的启动设备,需要一个更好的系统。

输入各个驱动程序的 BootFlags 值和系统范围的 BootDriverFlags 值。如果 (BootFlags & BootDriverFlags) != 0,即使驱动程序未设置为 Boot Start,也会加载。值中的每一位都应该对应于不同类型的硬件,因此 BootDriverFlags 值设置了可以从哪些类型的硬件启动。

当引入此机制时,位 3 被指定用于 USB 启动设备,但标准 Windows 不支持从 USB 设备启动。Hyper-V Server 2008 R2 版本通过将此值设置为 0x04 添加了对从 USB 启动的特定支持,并且此后发布的每个 Hyper-V Server 版本都设置了此值。

从那时起,为支持 Windows To Go 功能而做出的一般改进意味着您不必使用在 USB 设备上安装的以前版本的 Hyper-V Server 中推荐的启动到 VHD 技巧。但是,它们也改变了 BootDriverFlags 值的含义。USB 3 设备被赋予了一个单独的位,而 SD 卡又被赋予了另一个位。

在 2016 版本中,这意味着值 0x04 现在仅允许从非 SD 卡的 USB2 磁盘启动。除 Hyper-V Server 外,所有版本的 Server 2016 都附带默认值 0x1c,可启用 USB2、USB3 和 SD 卡启动;但是,0x04 的值仍在 Hyper-V Server 中设置,因为它是在 2008R2 版本的映像构建过程中作为覆盖添加的。不过,这个值现在不是添加功能,而是将其删除。

这解释了为什么之前针对该问题的一些解决方案建议禁用 USB3 并从 USB 记忆棒而不是 SD 卡启动:这将强制启动设备的类别仍然受 BootDriverFlags 中“USB”位现在更有限的定义所涵盖。

答案3

我按照 Hyper-V Server 2016 的说明(唯一的例外是驱动器号)操作,它在旧的 Dell PowerEdge T710 Server 上完美运行。它现在在内部 USB 端口上运行。但是,Dell 设备可以告诉系统,内部 USB 应该显示为硬盘。这可能是不同之处。但我可以说,您可以推断 2008 R2 的说明并将其应用于 2016 HyperV Server。

相关内容