【发布时间】:2022-08-12 20:14:58
【问题描述】:
我正在尝试在需要开启 hyper-V 才能运行 Azure IoT Edge(使用 hyper-V)的 PC 上运行 TwinCat 3 XAR。有没有办法在 hyper-V 开启的情况下运行 XAR?有什么方法可以将内核与 hyper-v 或其他东西隔离开来?
我正在尝试在需要开启 hyper-V 才能运行 Azure IoT Edge(使用 hyper-V)的 PC 上运行 TwinCat 3 XAR。有没有办法在 hyper-V 开启的情况下运行 XAR?有什么方法可以将内核与 hyper-v 或其他东西隔离开来?
有关这方面的完整教程,请参阅my blog post。
有一种方法可以做到这一点。您可以通过在虚拟机的运行时上运行代码而不是使用本地运行时来做到这一点。我从this reddit post 得到了这个想法。
为了使它工作,我做了以下工作:
下载并安装VMware Player。它免费用于非商业用途。您还可以使用付费的 Pro(工作站)版本。我不确定这是否也适用于 Virtual Box。
如这篇优秀的YouTube video by Jakob 中所述,在虚拟机上安装 TwinCAT BSD
如果您使用的是 VMware Player 并且需要启用 UEFI,您需要按照 YouTube 用户 Eivind Hilde 的说明执行以下操作:
- 按照视频中的指南进行操作,但跳过设置固件类型的步骤。
- 尝试启动虚拟机。它会失败。
- 使用记事本打开 VM 目录中的 .vmx 文件。
- 找到“firmware =”bios”并替换为“firmware =”efi”并保存。如果此行不存在,只需将其添加到某个地方。
- 现在它将启动,您可以按照视频中的指南进行其余操作。
在虚拟机上运行您的 TwinCAT 项目,无需禁用 Hyper-V。 ?
上一个答案
我不这么认为。 InfoSys mentions:
Hyper-V 环境:
- 无法在 Hyper-V 环境中启动运行时环境。这尤其是指在特权 Hyper-V 机器中运行的虚拟 Hyper-V 机器。只要计算机的某个组件使用 Hyper-V,就只能在这台计算机上使用工程环境 (XAE),而不能使用运行时环境 (XAR)。
但他们也提到:
- TwinCAT 尝试检测这些 Hyper-V 环境;然而,虚拟化方法的本质是它们不希望被检测到,因此 TwinCAT 无法进行任何 100% 检测。
所以也许有一些方法可以防止 TwinCAT 检测到 Hyper-V 环境。然而,这是我无法回答的。
【讨论】: