Fuchsia 模拟器

Fuchsia 模拟器 (FEMU) 是 Fuchsia 的默认模拟器。借助 FEMU,您无需实体 Fuchsia 设备即可测试 Fuchsia 组件和应用。

FEMU 包含在 Fuchsia 源代码树中。FEMU 由 jiri 下载(或更新)作为 jiri updatejiri 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 后,您可以执行以下任务: