Fuchsia 模擬器

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

FEMU 包含在 Fuchsia 原始碼樹中。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 get-ssh-address

您應該會在 Device name 旁邊看到列印的 SSH 位址。

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

fx shell

不支援的 CPU

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

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

支援圖形加速的硬體

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

常見用途

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

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

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