啟動 Fuchsia 模擬器

本指南說明如何在電腦上設定及啟動 Fuuchsia 模擬器 (FEMU)。

步驟如下:

  1. 必備條件
  2. 建構 Fuchsia 以獲得 FEMU
  3. 啟用 VM 加速功能 (選用)
  4. 啟動 FEMU
  5. 探索 FEMU

1. 必要條件

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

2. 為 FEMU 打造 Fuchsia

如要執行 FEMU,您必須先建構支援模擬器環境的 Fuchsia 系統映像檔。本指南使用 x64 做為主面板,並使用 workbench_eng 做為產品範例。

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

  1. 進行 Fuchsia 建構設定:

    fx set workbench_eng.x64 --release
    
  2. Build Fuchsia:

    fx build
    

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

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

(僅限 Linux) 大部分的 Linux 機器都透過 KVM 支援 VM 加速功能,因此可大幅提升模擬器的效能和可用性。

如果機器可使用 KVM,請更新群組權限以啟用 KVM。

Linux

如要在電腦上啟用 KVM,請按照下列步驟操作:

  1. 將自己新增至機器上的 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,您可能需要重新啟動機器,權限變更才會生效。

macOS

macOS 不需要額外設定。

macOS 上的 Fuchsia 模擬器使用 Hypervisor 架構,而非 KVM。

4. 啟動 FEMU

啟動套件伺服器

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

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

fx serve

或者,您也可以背景 fx serve 程序。

啟動模擬器

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

Linux

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

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

    如果您的機器在防火牆的保護下,您可能需要套用一些額外的設定,允許模擬器存取網路。通常藉由執行「upscript」,這樣可以為目前程序設定介面和防火牆規則。如果您使用的是公司網路,請向內部網路團隊確認是否有可用的上標可用。

    如果不在防火牆後方,您還需要進行幾項設定才能啟用 Tun/Tap 網路。FUCHSIA_ROOT/scripts/start-unsecure-internet.sh 中的上標範例應適用於大多數的非公司使用者。

  2. 如要啟動模擬器並存取外部網路,請執行下列指令:

    ffx emu start --net tap
    

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

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

    ffx emu start --net none
    

    啟動模擬器後,系統會開啟標題為「Fuchsia Emulator」的新視窗。模擬器啟動完畢後,系統會將您帶回命令提示字元,並在背景執行模擬器。

macOS

如要在 macOS 上啟動 FEMU,請按照下列步驟操作:

  1. 啟動 FEMU:

    ffx emu start
    

    如果您在 macOS 中首次啟動 FEMU (包括重新啟動之後),系統會彈出一個視窗,詢問您是否要允許機器執行 aemu 程序。按一下「Allow」(允許)

    這個指令會開啟標題為「Fuchsia Emulator」的新視窗。 模擬器啟動完畢後,您會返回指令提示,模擬器會在背景執行。

  2. (選用) 如果需要指定啟動的 Fuchsia 模擬器,可以在相同終端機中執行 fx set-device 指令:

    fx set-device NAME
    

    更改下列內容:

    • NAME:使用 ffx emu listffx target list 指令輸出內容中想要的值。預設值為 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 時可偵測。

手動新增目標

如果在執行 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 網路

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

Linux

如要使用 輕觸網路在 FEMU 啟用網路,請執行下列步驟:

  1. 設定 tuntap

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

    sudo ip link set qemu up
    

macOS

macOS 不需要額外的 IPv6 網路設定。

User Networking (SLIRP) 是 macOS 上 FEMU 的預設網路設定;雖然這項設定不支援 Fuchsia 裝置探索,但您仍可使用 fx 工具 (例如 fx ssh) 與 FEMU 執行個體互動。

指定 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
Auto 如果有可用的硬體 GPU,請解析為 host;如果沒有可用硬體 GPU,則請解析為 swiftshader_indirect ffx emu start --gpu auto

hostauto GPU 模擬模式僅為實驗用途,目前並未正式支援。使用這兩種模式時,系統可能會顯示圖形構件、測試失敗或模擬器停止運作。