Fuchsia 模拟器

Fuchsia 模拟器 (FEMU) 是 Fuchsia 的默认模拟器。FEMU 可让您 在没有实体 Fuchsia 设备的情况下测试 Fuchsia 组件和应用。

FEMU 包含在 Fuchsia 源代码树中。FEMU 下载(或更新)的用户: jiri,作为 jiri updatejiri run-hooks 的一部分,会被提取到 /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 GUI(使用 --headless 参数)。
  • GPU 支持:您可以使用主机的 GPU(默认)以完整 Vulkan 支持,或 您可以使用 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 如果 Tap 界面不可用,则为 userauto 是默认值。

在 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 驱动程序)。 FEMU 针对不受支持的 GPU 使用软件渲染程序回退。

常见用法

要启动 FEMU,请完成 Fucsia 使用入门指南。

或者,您也可以使用 Fuchsia SDK 以及预构建的系统映像。

启动 FEMU 后,您便可以执行以下任务: