在基于 ARM 的实例上虚拟化多个 SBC
Virtualizing multiple SBCs on an ARM-based instance
我一直在尝试构建一个基于云的测试工具,它允许您使用一个或多个模拟 SBC(Beaglebone Black、cubieboard2 等)设置测试“工作区”,并设置以太网网络设备之间(使用开放或自定义专有协议)。
我最初计划在 x86 主机上使用 QEMU 运行 构建此工具,但发现初始测试非常缓慢。
我想知道加速性能的最佳选择是什么,我可以在 AWS bare-metal ARM instances? I know AWS doesn't currently support nested virtualization 上模拟这些 SBC,所以我不确定我在这里的选择范围。虚拟化这些测试设置并以裸机硬件速度执行代码的最佳方法是什么?
Arm 虚拟化扩展不支持“在 v8 主机上模拟旧的 v7 CPU”(您可以模拟 32 位客户机,但 32 位客户机会看到v8 CPU,特别是您的主机拥有的那个)。所以QEMU不会让你用KVM虚拟化这种板子模型。你也不能在 KVM 下虚拟化 TrustZone (EL3),所以如果你的客人希望在 EL3 上 运行 那么你就不走运了。类似地,你也不能 运行 一个期望 KVM 下的 EL2 的来宾,除非你的主机 CPU 足够新,可以拥有嵌套的虚拟化扩展。
您可以破解一些使用 KVM 的东西,并为来宾提供 v8 CPU 和您的 SBC 所拥有的 devices/etc,并希望来宾内核能够处理这种奇怪的混合设置。这是否有用取决于您要测试的内容。
根据我的经验,很多人对“我要测试的东西只需要 Arm 上的标准 Linux 用户空间,它不关心硬件的具体细节和设备”(在这种情况下,您可以使用 QEMU/KVM 及其 'virt' 板,并且只需为来宾提供与主机相同类型的 CPU)。另一群人真正关心硬件的细节,因为他们正在尝试测试设备驱动程序或其他与硬件对话的代码;通常,QEMU 中设备仿真的保真度不够,这些人发现他们需要使用真实硬件的板场(专门的,或者除了基于 QEMU 的设置以进行冒烟测试和开发人员便利)。我不确定中间群体的规模,他们需要看起来像特定板的东西,但很高兴它是该板的相对低保真模型...
我一直在尝试构建一个基于云的测试工具,它允许您使用一个或多个模拟 SBC(Beaglebone Black、cubieboard2 等)设置测试“工作区”,并设置以太网网络设备之间(使用开放或自定义专有协议)。
我最初计划在 x86 主机上使用 QEMU 运行 构建此工具,但发现初始测试非常缓慢。
我想知道加速性能的最佳选择是什么,我可以在 AWS bare-metal ARM instances? I know AWS doesn't currently support nested virtualization 上模拟这些 SBC,所以我不确定我在这里的选择范围。虚拟化这些测试设置并以裸机硬件速度执行代码的最佳方法是什么?
Arm 虚拟化扩展不支持“在 v8 主机上模拟旧的 v7 CPU”(您可以模拟 32 位客户机,但 32 位客户机会看到v8 CPU,特别是您的主机拥有的那个)。所以QEMU不会让你用KVM虚拟化这种板子模型。你也不能在 KVM 下虚拟化 TrustZone (EL3),所以如果你的客人希望在 EL3 上 运行 那么你就不走运了。类似地,你也不能 运行 一个期望 KVM 下的 EL2 的来宾,除非你的主机 CPU 足够新,可以拥有嵌套的虚拟化扩展。
您可以破解一些使用 KVM 的东西,并为来宾提供 v8 CPU 和您的 SBC 所拥有的 devices/etc,并希望来宾内核能够处理这种奇怪的混合设置。这是否有用取决于您要测试的内容。
根据我的经验,很多人对“我要测试的东西只需要 Arm 上的标准 Linux 用户空间,它不关心硬件的具体细节和设备”(在这种情况下,您可以使用 QEMU/KVM 及其 'virt' 板,并且只需为来宾提供与主机相同类型的 CPU)。另一群人真正关心硬件的细节,因为他们正在尝试测试设备驱动程序或其他与硬件对话的代码;通常,QEMU 中设备仿真的保真度不够,这些人发现他们需要使用真实硬件的板场(专门的,或者除了基于 QEMU 的设置以进行冒烟测试和开发人员便利)。我不确定中间群体的规模,他们需要看起来像特定板的东西,但很高兴它是该板的相对低保真模型...