本指南說明如何在電腦上設定及啟動 Fuuchsia 模擬器 (FEMU)。
步驟如下:
1. 必要條件
如要執行 FEMU,您必須完成下列指南:
2. 為 FEMU 打造 Fuchsia
如要執行 FEMU,您必須先建構支援模擬器環境的 Fuchsia 系統映像檔。本指南使用 x64
做為主面板,並使用 workbench_eng
做為產品範例。
如要建立 FEMU Fuchsia 映像檔,請按照下列步驟操作:
進行 Fuchsia 建構設定:
fx set workbench_eng.x64 --release
Build Fuchsia:
fx build
如要進一步瞭解支援的白板和產品,請參閱 Fuchsia 模擬器 (FEMU) 總覽頁面。
3. 啟用 VM 加速功能 (選用)
(僅限 Linux) 大部分的 Linux 機器都透過 KVM 支援 VM 加速功能,因此可大幅提升模擬器的效能和可用性。
如果機器可使用 KVM,請更新群組權限以啟用 KVM。
Linux
如要在電腦上啟用 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
,您可能需要重新啟動機器,權限變更才會生效。
macOS
macOS 不需要額外設定。
macOS 上的 Fuchsia 模擬器使用 Hypervisor 架構,而非 KVM。
4. 啟動 FEMU
啟動套件伺服器
啟動模擬器之前,請先啟動套件伺服器。
如要啟動套件伺服器,請執行下列指令:
fx serve
或者,您也可以背景 fx serve
程序。
啟動模擬器
如要在 Linux 電腦上啟動模擬器,請按照下列步驟操作:
Linux
執行下列指令來設定上標:
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
中的上標範例應適用於大多數的非公司使用者。如要啟動模擬器並存取外部網路,請執行下列指令:
ffx emu start --net tap
--net
會指定模擬器的網路模式。--net tap
會附加至 Tun/Tap 介面。或者,如要在無法存取外部網路的情況下啟動模擬器,請執行下列指令:
ffx emu start --net none
啟動模擬器後,系統會開啟標題為「Fuchsia Emulator」的新視窗。模擬器啟動完畢後,系統會將您帶回命令提示字元,並在背景執行模擬器。
macOS
如要在 macOS 上啟動 FEMU,請按照下列步驟操作:
啟動 FEMU:
ffx emu start
如果您在 macOS 中首次啟動 FEMU (包括重新啟動之後),系統會彈出一個視窗,詢問您是否要允許機器執行
aemu
程序。按一下「Allow」(允許)。這個指令會開啟標題為「Fuchsia Emulator」的新視窗。 模擬器啟動完畢後,您會返回指令提示,模擬器會在背景執行。
(選用) 如果需要指定啟動的 Fuchsia 模擬器,可以在相同終端機中執行
fx set-device
指令:fx set-device NAME
更改下列內容:
NAME
:使用ffx emu list
或ffx 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 啟用網路,請執行下列步驟:
設定
tuntap
:sudo ip tuntap add dev qemu mode tap user $USER
為「
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 |
host
和 auto
GPU 模擬模式僅為實驗用途,目前並未正式支援。使用這兩種模式時,系統可能會顯示圖形構件、測試失敗或模擬器停止運作。