支援的硬體
虛擬化功能適用於已啟用 VMX 和 ARMv8.0 的 Intel 裝置 搭載 EL2 的裝置上方下列硬體的 是由每日自動和手動測試納入的
- Pixelbook Go m3
- Intel NUC7 (NUC7i5DNHE)
下列硬體也經常使用,但不具備相同等級 自動化測試涵蓋範圍
- x64 QEMU/巢狀 VMX
部分虛擬化功能可在搭配以下服務使用 Fuchsia 模擬器時運作 而且已啟用巢狀結構 VMX值得注意的是,使用病毒式 Vulkan 加速並非易事 在 Fuchsia 模擬器中執行時提供使用。
支援的邀請對象
雖然 Linux 訪客可能在 Fuchsia 上執行,但下列訪客 會在 Fuchsia 的 CI 中測試:
- Zircon 訪客 - 可啟動回應 Zircon Virtcon 的小型冰箱系統。
- Debian Guest - A Debian bullseye 訪客。
- Termina Guest - 包含 Vulkan 和 視窗管理員整合 (以 Termina VM 為基礎) 。
透過虛擬化技術打造 Fuchsia
每個訪客作業系統都有訪客管理員和一個核心資料分割 都必須包含在建構作業中
下方的 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 訪客:
(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 訪客
(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 訪客
(fuchsia) $ guest launch termina
Starting Termina
…
在使用 UI Stack 展示產品上,細目者和石凍客 也會建立一個視窗,顯示由 virtio-gpu。所選視窗的輸入內容也會以虛擬方式傳送給訪客 鍵盤。
在 QEMU 上執行
如要在 x64 上執行訪客板,就必須使用 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、管理程序和每部 virtio 裝置。要執行測試 新增到建構作業中:
$ 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