Fuchsia 模拟器 (FEMU) 是 Fuchsia 的默认模拟器。FEMU 可让您 在没有实体 Fuchsia 设备的情况下测试 Fuchsia 组件和应用。
FEMU 包含在 Fuchsia 源代码树中。FEMU 下载(或更新)的用户:
jiri
,作为 jiri update
或 jiri 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 界面不可用,则为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 驱动程序)。 FEMU 针对不受支持的 GPU 使用软件渲染程序回退。
常见用法
要启动 FEMU,请完成 Fucsia 使用入门指南。
或者,您也可以使用 Fuchsia SDK 以及预构建的系统映像。
启动 FEMU 后,您便可以执行以下任务: