支持的硬件
启用了 VMX 且 ARMv8.0 和 启动到 EL2 的设备之上。以下硬件将具有最佳性能 提供的支持:
- Pixelbook Go m3
- Intel NUC7 (NUC7i5DNHE)
以下硬件也经常使用,但与 自动化测试覆盖范围
- x64 QEMU/嵌套 VMX
将 Fuchsia 模拟器与 嵌套 VMX。值得注意的是,使用 virtmagma 的 Vulkan 加速 在 Fuchsia 模拟器中运行时可供任何客户机使用。
支持的邀请对象
虽然任意 Linux 客户机可以在 Fuchsia 上运行,但以下客户机 配置在 Fuchsia 的 CI 中进行测试:
- Zircon Guest - 极简的紫红色系统,可启动到 Zircon Virtcon。
- Debian Guest - Debian bullseye 访客。
- Termina 客机 - 一种 Linux 客机,包含 Vulkan 和 窗口管理器集成(基于 Termina VM) 。
使用虚拟化构建 Fuchsia
每个客机操作系统都有一个客机管理器和一个核心碎片, 都必须包含在 build 中。
在下文中,PRODUCT 通常是 core
之一,
而 BOARD 通常为以下值之一:
x64
、chromebook-x64
、sherlock
。
$ fx set PRODUCT.BOARD \
# For Debian Guest
--with //src/virtualization/bundles:debian \
--args='core_realm_shards += [ "//src/virtualization/bundles:debian_core_shards" ]' \
# For Zircon Guest
--with //src/virtualization/bundles:zircon \
--args='core_realm_shards += [ "//src/virtualization/bundles:zircon_core_shards" ]' \
# For Termina Guest
--with //src/virtualization/bundles:termina \
--args='core_realm_shards += [ "//src/virtualization/bundles:termina_core_shards" ]'
或者,您也可以使用以下命令启用所有访客:
$ fx set PRODUCT.BOARD \
--with //src/virtualization/bundles:all_guests \
--args='core_realm_shards += [ "//src/virtualization/bundles:all_core_shards" ]'
从 CLI 启动访客
您可以使用 guest
CLI 工具启动访客模式。该工具将启动
客户机,然后通过 stdio 提供对 virtio-console 的访问权限:
启动 Debian Guest:
(fuchsia) $ guest launch debian
Starting Debian
$ uname -a Linux machina-guest 5.10.0-13-amd64 #1 SMP Debian 5.10.106-1 (2022-03-17) x86_64 GNU/Linux
启动 Zircon Guest
(fuchsia) $ guest launch zircon
Starting zircon
physboot: {{{reset}}}
physboot: {{{module:0:physboot:elf:9f2c4d6615bd603d}}}
physboot: {{{mmap:0x100000:0x14a100:load:0:rwx:0x0}}}
physboot: | Physical memory range | Size | Type
physboot: | [0x0000000000008000, 0x0000000000080000) | 480K | free RAM
physboot: | [0x0000000000100000, 0x00000000001cd000) | 820K | phys kernel image
physboot: | [0x00000000001cd000, 0x000000000024a000) | 500K | free RAM
physboot: | [0x000000000024a000, 0x000000000024a100) | 256B | phys kernel image
physboot: | [0x000000000024a100, 0x000000000024b000) | 3840B | free RAM
…
启动 Termina Guest
(fuchsia) $ guest launch termina
Starting Termina
…
在具有界面堆栈的产品上,debian 和 Zircon 客机 还会创建一个窗口,显示由 virtio-gpu。该窗口中的输入内容也将以虚拟方式发送给访客 键盘。
在 QEMU 上运行
在 x64 上的 QEMU 上运行客户机需要 KVM。您可能还需要启用嵌套 主机上的 KVM。如需检查是否已启用嵌套虚拟化,请运行以下命令: 以下命令:
配置主机
cat /sys/module/kvm_intel/parameters/nested
如果输出 Y
,则表示嵌套虚拟化已启用,0
或 N
表示未启用。
如需启用嵌套虚拟化,直到下次重新启动,请运行以下命令:
modprobe -r kvm_intel
modprobe kvm_intel nested=1
如需将更改永久化,请将下面这行代码添加到
/etc/modprobe.d/kvm.conf
:
options kvm_intel nested=1
启动 QEMU
设置完主机后,您就可以启动 Fuchsia 模拟器了:
$ ffx emu start
集成测试
Machina 有一组集成测试,用于启动 Zircon 和 Debian 客户机 测试 VMM、Hypervisor 和每个 Virtio 设备。如需运行测试,请先 将它们添加到您的 build 中:
$ fx set PRODUCT.BOARD --with //src/virtualization:tests
$ fx build
然后运行以下任一测试:
# Tests of the low level hypervisor syscalls:
$ fx test hypervisor_tests
# Basic tests that verify OS boot and basic functionality:
$ fx test virtualization-core-tests
# Test suites focused on specific devices:
$ fx test virtualization-block-tests
$ fx test virtualization-net-tests
$ fx test virtualization-sound-tests
$ fx test virtualization-vsock-tests
$ fx test virtualization-gpu-tests
$ fx test virtualization-input-tests