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 的 Fuchsia(使用
--headless
实参)。 - GPU 支持:您可以运行主机 GPU(默认)并获得完整的 Vulkan 支持,也可以选择使用 SwiftShader 进行软件渲染。
- 远程开发:您可以通过 Chrome 远程桌面将远程桌面与 FEMU 搭配使用。
- UEFI/GPT 支持:您可以根据 Fuchsia 的 ABR 方案(使用
--uefi
实参)来近似模拟包含 GPT 分区布局的实体设备。
如需查看支持的标志的完整列表,请执行以下操作:
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
;如果 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 目前支持 Linux 上的 Nvidia Quadro,用于硬件图形加速 (Nvidia Linux 驱动程序)。对于不受支持的 GPU,FEMU 会使用软件渲染器回退。
常见用法
如需启动 FEMU,请完成 Fuchsia 入门指南。
或者,您也可以使用 Fuchsia SDK 和预构建的系统映像。
能够启动 FEMU 后,您可以执行以下任务: