Fuchsia 模擬器

Fuchsia 模擬器 (FEMU) 是 Fuchsia 的預設模擬器。您可以使用 FEMU 測試 Fuchsia 元件和應用程式,不必使用實體 Fuchsia 裝置。

Fuchsia 原始碼樹狀結構中包含 FEMU。FEMU 會由 jiri 下載 (或更新),做為 jiri updatejiri run-hooks 的一部分,並擷取至 Fuchsia 來源樹狀結構的 /prebuilt/third_party/aemu 目錄。

您可以使用 ffx emu 啟動 FEMU。

FEMU、AEMU 和 QEMU

FEMU 是以 Android Emulator (AEMU) 為基礎,而 AEMU 是 QEMU 的分支版本。在某些情況下 (例如偵錯 Zircon 核心),您應改用 QEMU。

由於舊版問題,程式碼和文件可能仍會參照 AEMU。

偵錯 Zircon 核心

如要偵錯 Zircon 核心,請改用 fx qemu。詳情請參閱「使用 QEMU 偵錯 Kernel」。這項功能適用於核心開發人員。大多數 Fuchsia 開發人員不需要使用這個工作流程。

功能

FEMU 的外觀和行為與 Fuchsia 裝置類似,但 FEMU 不需要鋪路或刷機。

FEMU 的功能包括:

  • GUI 支援:您可以執行 Fuchsia,預設使用 GUI,也可以不使用 GUI (使用 --headless 引數)。
  • GPU 支援:您可以透過主機的 GPU (預設) 執行,並完整支援 Vulkan,也可以選擇使用 SwiftShader 進行軟體算繪。
  • 遠端開發:您可以透過 Chrome 遠端桌面,使用 FEMU 遠端桌面。
  • UEFI/GPT 支援:您可以根據 Fuchsia 的 ABR 方案 (使用 --uefi 引數),模擬實體裝置,包括 GPT 分割區配置。

如要查看支援的完整標記清單,請執行下列操作:

ffx emu start --help

支援圖片和開發板

使用 fx set 設定 FEMU 時,FEMU 支援下列開發板:

  • x64
  • qemu-arm64

透過 Fuchsia SDK,FEMU 支援預先建構的映像檔,包括:

  • core.x64
  • workbench_eng.x64
  • terminal.qemu-arm64

ARM64 支援 (qemu-arm64) 非常有限,不建議使用。

使用 ffx --machine product list --version <SDK_VERSION> 查看 SDK 提供的完整產品清單和對應的轉移資訊清單,並使用 ffx product download <TRANSFER_MANIFEST_URL> 下載這些產品。

網路

--net 標記會指定模擬器的網路模式。--net 需要值來指出要實作哪種網路。

--net 可能的值如下:

  • tap:附加 Tun/Tap 介面。
  • user:透過 SLiRP 設定對應的通訊埠。
  • none:停用網路。
  • auto:檢查主機系統的功能,並選取 tap (如果可用) 或 user (如果 Tap 介面無法使用)。預設值為 auto

在 Linux 上,FEMU 通常應使用 --net tap 旗標執行,透過模擬 NIC 提供網路。

--net tap--net user 可讓模擬器在執行 ffx target list 時可供探索。--net none 會停用網路功能,導致模擬器在執行 ffx target list 後無法探索。

如果使用 ffx emu start --net user 啟動模擬器,系統會從主機選取可用的 TCP 通訊埠,並轉送至模擬器的 SSH 通訊埠。

您可以手動設定 SSH 位址,並執行下列指令,使用 fx 工具與模擬器互動:

ffx emu start --net user --port-map PORT-NAME:PORT-NUMBER

請替換下列項目:

  • PORT-NAME:所選通訊埠名稱。通訊埠名稱範例:ssh
  • PORT-NUMBER:通訊埠編號。通訊埠號碼範例:8022

您可以透過相同方式設定任何已命名的通訊埠。可對應的通訊埠名稱會列在虛擬裝置規格中。

如要確認 fx 工具是否使用正確的通訊埠,請執行下列指令:

ffx target list

裝置的 SSH 位址會列在 ADDRS/IP 下方。如果未在位址中指定通訊埠,系統會使用預設的 SSH 通訊埠 (22)。

如要透過 SSH 連線至模擬器,請執行下列指令:

fx shell

不支援的 CPU

FEMU 目前無法在下列環境中執行:

  • ARM64 處理器,包括 Apple M1 處理器。
  • AMD 處理器。

支援圖形加速的硬體

FEMU 目前支援 Linux 上的 Nvidia Quadro,可進行硬體圖形加速 (Nvidia Linux 驅動程式)。如果 GPU 不受支援,FEMU 會改用軟體算繪器。

常見用途

如要啟動 FEMU,請完成「開始使用 Fuchsia」指南。

或者,您也可以使用 Fuchsia SDK 和預建的系統映像檔。

啟動 FEMU 後,即可執行下列工作: