启动 Fuchsia 模拟器

本指南介绍了如何设置和启动 机器上的 Fuchsia 模拟器 (FEMU)。

具体步骤如下:

  1. 前提条件
  2. 为 FEMU 构建 Fuchsia
  3. 启用虚拟机加速(可选)
  4. 启动 FEMU
  5. 探索 FEMU

1. 前提条件

运行 FEMU 要求您完成以下指南:

2. 为 FEMU 构建 Fuchsia

要运行 FEMU,您首先需要构建一个支持 模拟器环境本指南使用 x64 作为 Jamboard 和 workbench_eng 作为示例。

要构建 FEMU Fuchsia 映像,请执行以下操作:

  1. 设置 Fuchsia 构建配置:

    fx set workbench_eng.x64 --release
    
  2. 构建 Fuchsia:

    fx build
    

如需详细了解支持的主板和产品,请参阅 Fuchsia 模拟器 (FEMU) 概览页面。

3. 启用虚拟机加速(可选)

仅限 Linux)大多数 Linux 计算机均支持通过 KVM,这极大地提高了模拟器的性能和易用性。

  1. 如果您的机器上有 KVM,请将您自己添加到机器上的 kvm 组中:

      sudo usermod -a -G kvm ${USER}
    
  2. 从计算机上退出所有桌面会话,然后重新登录。

  3. 如需验证 KVM 是否已正确配置,请运行以下命令:

      if [[ -r /dev/kvm ]] && grep '^flags' /proc/cpuinfo | grep -qE 'vmx|svm'; then echo 'KVM is working'; else echo 'KVM not working'; fi
    

    验证此命令是否会输出以下行:

      KVM is working
    

    如果看到 KVM not working,您可能需要重新启动计算机才能 让权限更改生效。

4. 启动 FEMU

启动软件包服务器

在启动模拟器之前,先启动软件包服务器。

如需启动软件包服务器,请运行以下命令:

fx serve

或者,您也可以将 fx serve 进程置于后台。

启动模拟器

如需在 Linux 计算机上启动模拟器,请执行以下操作:

  1. 通过运行以下命令配置 upscript:

     ffx config set emu.upscript FUCHSIA_ROOT/scripts/start-unsecure-internet.sh
    
    • start-unsecure-internet.sh 是一个示例 upscript。
    • FUCHSIA_ROOT 是 Fuchsia 目录的路径。

      如果您的计算机有防火墙保护,您可能需要对 以允许模拟器访问网络。这通常是 通过运行“upscript”完成的,该脚本会设置接口和防火墙 当前进程的访问规则如果您使用的是企业网络,请检查 请与您的内部网络团队联系,看看他们是否有现有的上标脚本 供您使用。

      如果您未受到防火墙保护 则仍需进行一些配置 启用 tun/tap 网络。upscript 示例 时间:FUCHSIA_ROOT/scripts/start-unsecure-internet.sh 应该适用于大多数非企业用户。

  2. 如需启动有权访问外部网络的模拟器,请执行以下操作: 运行以下命令:

     ffx emu start --net tap
    

    --net 用于指定模拟器的网络模式。--net tap 连接到 Tun/Tap 接口。

    或者,要在不访问外部网络的情况下启动模拟器, 运行以下命令:

     ffx emu start --net none
    

    启动模拟器会打开一个包含标题的新窗口 Fuchsia 模拟器。模拟器完成启动后, 返回命令提示符,模拟器在后台运行。

5. 探索 FEMU

如需发现作为正在运行的 Fuchsia 设备的 Fuchsia 模拟器,请运行 以下命令:

ffx target list

此命令会输出类似于以下内容的输出:

$ ffx target list
NAME                      SERIAL       TYPE                    STATE      ADDRS/IP                            RCS
fuchsia-emulator    <unknown>    workbench_eng.x64    Product    [fe80::866a:a5ea:cd9e:69f6%qemu]    N

fuchsia-emulator 是 Fuchsia 模拟器的默认节点名称。

ffx target list 的输出受 --net 选项(在 方法:

  • --net none 会停用网络,这会导致设备无法联网 可由“ffx target list”发现。
  • --net tap--net user 允许设备被检测到 运行 ffx target list 时。

手动添加定位条件

如果在运行 ffx target list 后未找到目标,目标可能 需要通过运行 ffx target add 手动添加。

ffx target add device-ip:device-port

后续步骤

如需详细了解 Fuchsia 设备命令和 Fuchsia 工作流,请参阅 探索 Fuchsia

附录

本部分提供了其他 FEMU 选项。

查看所有可用的标志

如需查看模拟器所支持标志的完整列表,请运行 以下命令:

ffx emu start --help

在不支持 GUI 的情况下运行 FEMU

如果您不需要图形或采用远程工作流, 则可以在无头模式下运行 FEMU:

ffx emu start --headless

重新启动 FEMU

要重新启动 FEMU,请运行以下 ffx 命令:

ffx target reboot

停止 FEMU

要停止 FEMU,请运行以下 ffx 命令:

ffx emu stop

配置 IPv6 网络

本部分介绍如何配置 IPv6 网络 在 Linux 计算机上使用 TUN/TAP 为 FEMU 投放广告。

要在 FEMU 中启用网络,请使用 点按“网络”,执行以下操作:

  1. 设置 tuntap

     sudo ip tuntap add dev qemu mode tap user $USER
    
  2. qemu 启用网络:

     sudo ip link set qemu up
    

为 FEMU 指定 GPU 模式(实验性)

默认情况下,FEMU 启动器使用 SwiftShader 用于主机图形渲染的 Vulkan ICD。使用 --gpu 标志,您可以设置 模拟器使用主机 GPU 硬件进行渲染。请参阅以下选项:

GPU 模拟方法 说明 标志
SwiftShader 使用 SwiftShader 库模拟 GPU 处理。 这是默认模式。 ffx emu start --gpu swiftshader_indirect
硬件(主机 GPU) 直接使用主机的 GPU 执行 GPU 处理。 ffx emu start --gpu host
自动 如果有可用的硬件 GPU,请解析为 host;或者 如果没有硬件 GPU 可用,则返回 swiftshader_indirect ffx emu start --gpu auto

hostauto GPU 模拟模式仅供实验使用, 目前尚未获得正式支持。你可能会看到图形伪影, 出现故障或模拟器崩溃的问题。