本指南將說明如何在電腦上設定及啟動 Fuchsia 模擬器 (FEMU)。
步驟如下:
1. 必要條件
您必須先完成下列指南,才能執行 FEMU:
2. 為 FEMU 建構 Fuchsia
如要執行 FEMU,您必須先建構支援模擬器環境的 Fuchsia 系統映像檔。本指南以 x64 為範例,說明如何為電路板和產品建立裝置。
如要建構 FEMU Fuchsia 映像檔,請執行下列操作:
- 設定 Fuchsia 建構設定: - fx set workbench_eng.x64 --release
- 建構 Fuchsia: - fx build
如要進一步瞭解支援的主機和產品,請參閱 Fuchsia 模擬器 (FEMU) 總覽頁面。
3. 啟用 VM 加速功能 (選用)
(僅限 Linux) 大多數 Linux 機器都支援透過 KVM 加速虛擬機器,這可大幅提升模擬器的效能和可用性。
- 如果您的電腦支援 KVM,請將自己加入電腦上的 - kvm群組:- sudo usermod -a -G kvm ${USER}
- 登出電腦上的所有電腦工作階段,然後重新登入。 
- 如要確認 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」來完成,這個指令可為目前程序設定介面和防火牆存取規則。如果您使用的是公司網路,請向內部網路團隊確認是否有現有的上傳指令碼可供您使用。
不過,即使您沒有使用防火牆,仍需要進行一些設定才能啟用 tun/tap 網路。FUCHSIA_ROOT/scripts/start-unsecure-internet.sh 中的範例上傳程式應可適用於大多數非企業使用者。
如要啟動模擬器,請按照下列步驟操作:
- 啟動新的終端機。 
- 如要設定 upscript,請執行下列指令: - ffx config set emu.upscript FUCHSIA_ROOT/scripts/start-unsecure-internet.sh- start-unsecure-internet.sh是上方程式的範例。
- FUCHSIA_ROOT是 Fuchsia 目錄的路徑。
 
- 啟動可存取外部網路的模擬器: - 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時可供搜尋。
手動新增目標
如果在執行 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 網路的操作說明。
如要使用 tap 網路 在 FEMU 中啟用網路功能,請執行下列操作:
- 設定 - tuntap:- sudo ip tuntap add dev qemu mode tap user $USER
- 為 - 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 | 
host 和 auto GPU 模擬模式僅供實驗使用,目前尚未獲得官方支援。使用這兩種模式時,您可能會看到圖形異常、測試失敗或模擬器當機。