啟動 Fuchsia 模擬器

本指南將說明 電腦上的 Fuchsia 模擬器 (FEMU)。

步驟如下:

  1. 必要條件
  2. 打造適用於 FEMU 的 Fuchsia
  3. 啟用 VM 加速功能 (選用)
  4. 啟動 FEMU
  5. 探索 FEMU

1. 必要條件

您必須先完成下列指南,才能執行 FEMU:

2. 打造適用於 FEMU 的 Fuchsia

如要執行 FEMU,您必須先建構支援 查看模擬器環境本指南使用 x64 做為主機板 和 workbench_eng 做為產品範例

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

  1. 進行 Fuchsia 建構設定:

    fx set workbench_eng.x64 --release
    
  2. 打造 Fuchsia:

    fx build
    

如要進一步瞭解支援的主機板和產品,請參閱 Fuchsia 模擬器 (FEMU) 總覽頁面。

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

(僅限 Linux) 大多數的 Linux 機器都支援透過 VM 加速功能 KVM:大幅改善模擬器的效能和可用性。

  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

您也可以將 fx serve 程序設為背景。

啟動模擬器

如要在 Linux 電腦上啟動模擬器,請按照下列步驟操作:

  1. 執行下列指令來設定 upscript:

     ffx config set emu.upscript FUCHSIA_ROOT/scripts/start-unsecure-internet.sh
    
    • start-unsecure-internet.sh 是 Upscript 範例。
    • FUCHSIA_ROOT 是 Fuchsia 目錄的路徑。

      如果機器受到防火牆保護,您可能需要套用 允許模擬器存取網路這通常 方法是執行「upscript」來設定介面和防火牆 目前程序的存取規則如果您使用的是公司網路,請檢查 與您的內部網路團隊聯繫,看看他們是否有註冊 方便您使用

      即使沒有受到防火牆,還需要一些設定 啟用 tun/tap 網路。範例 Upscript 通知時間:FUCHSIA_ROOT/scripts/start-unsecure-internet.sh 適用於大多數非企業使用者

  2. 如要啟動具備外部網路存取權的模擬器, 執行下列指令:

     ffx emu start --net tap
    

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

    或者,如要在不存取外部網路的情況下啟動模擬器, 執行下列指令:

     ffx emu start --net none
    

    啟動模擬器會開啟新視窗,並顯示標題 Fuchsia 模擬器。模擬器啟動完畢後, 傳回命令提示字元,而模擬器會在背景執行。

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 時。

手動新增目標

如果在執行 ffx target list 後找不到任何目標,目標可能會 ,如要手動新增,請執行 ffx target add

ffx target add device-ip:device-port

後續步驟

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

附錄

本節提供其他 FEMU 選項。

查看所有可用標記

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

ffx emu start --help

在不支援 GUI 的情況下執行 FEMU

如果你不需要在遠端工作流程中使用圖像或工作, 可以在無頭模式中執行 FEMU:

ffx emu start --headless

重新啟動 FEMU

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

ffx target reboot

停止 FEMU

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

ffx emu stop

設定 IPv6 網路

本節說明如何設定 IPv6 網路 適用於使用 TUN/TAP Linux 機器的 FEMU

為了在 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 模擬模式僅適用於實驗用途和 目前並未正式支援。您可能會看見 或模擬器會在使用這兩種模式時異常終止。