Fuchsia 模拟器 (FEMU) 是 Fuchsia 的默认模拟器。借助 FEMU,您无需实体 Fuchsia 设备即可测试 Fuchsia 组件和应用。
FEMU 包含在 Fuchsia 源代码树中。FEMU 由 jiri
下载(或更新)作为 jiri update
或 jiri run-hooks
的一部分,并提取到 Fuchsia 源代码树的 /prebuilt/third_party/aemu
目录中。
您可以使用 ffx emu
启动 FEMU。
FEMU、AEMU 和 QEMU
FEMU 基于 Android 模拟器 (AEMU),它是 QEMU 的分支;在某些情况下,例如调试 Zircon 内核,您应改用 QEMU。
由于遗留问题,代码和文档中可能会引用 AEMU。
调试 Zircon 内核
如果要调试 Zircon 内核,应改用 fx qemu
。如需了解详情,请参阅使用 QEMU 调试内核。这是面向内核开发者的。大多数 Fuchsia 开发者不需要使用此工作流。
功能
FEMU 的外观和行为与 Fuchsia 设备类似,只是使用 FEMU 不需要铺砌或刷写。
FEMU 的特性包括:
- GUI 支持:您可以使用 GUI(默认)运行 Fuchsia,也可以不使用 GUI(使用
--headless
参数)运行 Fuchsia。 - GPU 支持:您可以使用支持全面 Vulkan 的主机 GPU(默认)运行,也可以使用 SwiftShader 选择软件渲染。
- 远程开发:您可以通过 Chrome 远程桌面将远程桌面与 FEMU 搭配使用。
如需查看受支持标志的完整列表,请执行以下操作:
ffx emu start --help
图片和面板支持
使用 fx set
设置 FEMU 时,FEMU 支持以下开发板:
x64
qemu-arm64
借助 Fuchsia SDK,FEMU 支持预构建映像,包括:
core.x64
workbench_eng.x64
terminal.qemu-arm64
ARM64 支持 (qemu-arm64
) 非常有限,不推荐使用。
您可以使用 ffx --machine product list --version <SDK_VERSION>
查看 SDK 中提供的产品的完整列表和相应的转移清单,使用 ffx product download <TRANSFER_MANIFEST_URL>
下载这些产品。
网络
--net
标志用于指定模拟器的网络模式。--net
需要一个值来指示要实现的网络类型。
--net
可能有以下值:
tap
:附加 Tun/Tap 接口。user
:通过 SLiRP 设置映射端口。none
:停用网络。auto
:检查主机系统的功能,并选择tap
(如果可用)或选择user
(如果“点按”界面不可用)。auto
为默认值。
在 Linux 上,FEMU 通常应使用 --net tap
标志运行,该标志通过模拟 NIC 提供网络。
借助 --net tap
和 --net user
,在运行 ffx target list
时可检测到模拟器。--net none
会停用网络,这会导致模拟器在运行 ffx target list
后无法被发现。
如果使用 ffx emu start --net user
启动模拟器,系统会选择主机提供的可用 TCP 端口,并将其转发到模拟器的 SSH 端口。
您可以通过运行以下命令,手动设置 SSH 地址并使用 fx
工具与模拟器进行交互:
ffx emu start --net user --port-map PORT-NAME:PORT-NUMBER
替换以下内容:
- PORT-NAME:为端口选择的名称。示例端口名称可以是
ssh
。 - PORT-NUMBER:端口编号。示例端口号为
8022
。
任何已命名的端口都可以以相同的方式进行设置。可映射的端口在虚拟设备规范中命名。
如需验证您的 fx
工具是否使用了正确的端口,请运行以下命令:
ffx target get-ssh-address
您应该会看到 Device name
旁边显示的 SSH 地址。
如需通过 SSH 连接到模拟器,请运行以下命令:
fx shell
不支持的 CPU
FEMU 当前不在以下位置运行:
- ARM64 处理器,包括 Apple M1 处理器。
- AMD 处理器。
支持图形加速的硬件
FEMU 目前在 macOS 和 Linux 上支持一组有限的 GPU 用于硬件图形加速。FEMU 会为不受支持的 GPU 使用软件渲染程序回退。
操作系统 | GPU 制造商 | 操作系统 / 驱动程序版本 |
---|---|---|
Linux | Nvidia Quadro | Nvidia Linux 驱动程序 440.100 及更高版本 |
macOS | Intel HD 显卡 | macOS 版本 10.15 及更高版本 |
macOS | AMD Radeon Pro | macOS 版本 10.15 及更高版本 |
常见用法
如需启动 FEMU,请完成 Fuchsia 使用入门指南。
或者,您也可以使用 Fuchsia SDK 并使用预构建的系统映像。
启动 FEMU 后,您可以执行以下任务: