啟動 Fuchsia 模擬器

本指南提供操作說明,說明如何在電腦上設定及啟動 Fuchsia 模擬器 (FEMU)。

步驟如下:

  1. 必要條件
  2. 為 FEMU 建構 Fuchsia
  3. 啟用 VM 加速功能 (選用)
  4. 啟動 FEMU
  5. 瞭解 FEMU

1. 必要條件

如要執行 FEMU,您必須完成下列指南:

2. 為 FEMU 建構 Fuchsia

如要執行 FEMU,您必須先建構支援模擬器環境的 Fuchsia 系統映像檔。本指南以 x64 做為開發板,workbench_eng 做為產品為例。(如要進一步瞭解支援的開發板和產品,請參閱 Fuchsia 模擬器頁面)。

如要建構 FEMU Fuchsia 映像檔,請按照下列步驟操作:

  1. 設定 Fuchsia 建構設定:

    fx set workbench_eng.x64 --release
  2. 建構 Fuchsia:

    fx build

3. 啟用 VM 加速功能 (選用)

(僅限 Linux) 大多數 Linux 電腦都支援透過 KVM 進行 VM 加速,可大幅提升模擬器的效能和可用性。

  1. 如果機器上提供 KVM,請在機器上將自己加入 kvm 群組:

    sudo usermod -a -G kvm ${USER}
  2. 登出電腦的所有桌面工作階段,然後重新登入。

  3. 如要確認 KVM 設定正確無誤,請執行下列指令:

    if [[ -r /dev/kvm ]] && grep '^flags' /proc/cpuinfo | grep -qE 'vmx|svm'; then echo 'KVM is working'; else echo 'KVM not working'; fi

    確認這個指令會列印下列行:

    KVM is working
    

    如果看到 KVM not working,可能需要重新啟動電腦,權限變更才會生效。

4. 啟動 FEMU

啟動套件伺服器

啟動模擬器前,請先啟動套件伺服器。

如要啟動套件伺服器,請執行下列指令:

fx serve

執行這項指令後,指令不會終止,且會讓 Fuchsia 套件伺服器在主機上持續執行 (除非關閉終端機或在終端機上按下 Ctrl+C,這會終止指令)。

或者,您也可以將 fx serve 程序移至背景執行。

啟動模擬器

在 Linux 電腦上啟動 Fuchsia 模擬器。

如果您的電腦受到防火牆保護,可能需要套用一些額外設定,才能允許模擬器存取網路。這項作業通常是透過執行「upscript」完成,該指令會為目前程序設定介面和防火牆存取規則。如果使用公司網路,請向內部網路團隊確認是否有現成的 upscript 可供使用。

不過,即使您沒有使用防火牆,仍需進行一些設定,才能啟用 tun/tap 網路。範例 上標 //scripts/start-unsecure-internet.sh 應適用於大多數非企業使用者。

如要啟動模擬器,請執行下列步驟:

  1. 啟動新的終端機。

  2. 如要設定 upscript,請執行下列指令:

    ffx config set emu.upscript FUCHSIA_ROOT/scripts/start-unsecure-internet.sh
    • start-unsecure-internet.sh 是上標指令碼的範例。
    • FUCHSIA_ROOT 是 Fuchsia 目錄的路徑。
  3. 啟動模擬器,並存取外部網路:

    ffx emu start --net tap

    --net 指定模擬器的網路模式。 --net tap 會附加至 Tun/Tap 介面。

    或者,您也可以啟動無法存取外部網路的模擬器:

    ffx emu start --net none

    啟動模擬器後,系統會開啟新視窗,標題為「Fuchsia Emulator」

5. 認識 FEMU

如要將 Fuchsia 模擬器探索為正在執行的 Fuchsia 裝置,請執行下列指令:

ffx target list

這個指令會輸出類似以下的結果:

$ ffx target list
NAME                SERIAL       TYPE                 STATE      ADDRS/IP                            RCS
fuchsia-emulator    <unknown>    workbench_eng.x64    Product    [fe80::866a:a5ea:cd9e:69f6%qemu]    N

fuchsia-emulator 是 Fuchsia 模擬器的預設節點名稱。

ffx target list 的輸出內容會受到 --net 選項的影響,如下所示:

  • --net none 會停用網路功能,導致 ffx target list 無法探索裝置。

  • --net tap--net user 可讓裝置在執行 ffx target list 時可供探索。

後續步驟

如要進一步瞭解 Fuchsia 裝置指令和 Fuchsia 工作流程,請參閱「探索 Fuchsia」。

附錄

本節提供其他 FEMU 選項。

手動新增目標

如果執行 ffx target list 後找不到目標,您可以執行下列 ffx 指令,手動新增目標:

ffx target add device-ip:device-port

查看所有可用的旗標

如要查看模擬器支援的旗標完整清單,請執行下列指令:

ffx emu start --help

執行不支援 GUI 的 FEMU

如果不需要圖形或在遠端工作流程下工作,可以無頭模式執行 FEMU:

ffx emu start --headless

重新啟動 FEMU

如要重新啟動 FEMU,請執行下列 ffx 指令:

ffx target reboot

停止 FEMU

如要停止 FEMU,請執行下列 ffx 指令:

ffx emu stop

設定模擬器網路

本節說明如何使用 TUN/TAP,在 Linux 電腦上為 FEMU 設定 IPv6 網路。

如要使用 tap 網路在 FEMU 中啟用網路,請執行下列操作:

  1. 設定「tuntap」:

    sudo ip tuntap add dev qemu mode tap user $USER
  2. 為「qemu」啟用網路:

    sudo ip link set qemu up

指定 FEMU 的 GPU 模式 (實驗功能)

根據預設,FEMU 啟動器會使用 SwiftShader Vulkan ICD 算繪主機圖形。使用 --gpu 標記,即可將模擬器設為使用主機 GPU 硬體進行算繪。請參閱下列選項:

GPU 模擬方法 說明 檢舉
SwiftShader 使用 SwiftShader 程式庫模擬 GPU 處理作業。 (此為預設模式)。 ffx emu start --gpu swiftshader_indirect
硬體 (主機 GPU) 直接使用主機的 GPU 執行 GPU 處理作業。 ffx emu start --gpu host
自動 如果可使用硬體 GPU,請解析為 host;如果無法使用硬體 GPU,請解析為 swiftshader_indirect ffx emu start --gpu auto

hostauto GPU 模擬模式僅供實驗用途,目前尚未獲得官方支援。使用這兩種模式時,可能會看到圖像構件、測試失敗或模擬器當機。