開始使用虛擬化功能

支援的硬體

虛擬化功能適用於已啟用 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 通常是以下其中一項: x64chromebook-x64sherlock

$ 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 的輸出內容表示已啟用巢狀虛擬化功能,0N 代表未啟用。

如何在下次重新啟動前啟用巢狀虛擬化功能:

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