在设备上刷写 Fuchsia 映像

ffx target flash 命令可将 Fuchsia 映像刷写到设备上。

概念

Fuchsia 使用基于 Fastboot 的刷写机制在硬件设备上安装 Fuchsia 产品。Fastboot 协议(最初是 Android 的一部分)是一种用于通过 USB 或以太网与引导加载程序通信的机制。此机制允许您将 Fuchsia 预构建映像刷写到设备的非易失性内存中。

如需在设备上刷写 Fuchsia 映像,设备的引导加载程序必须支持 Fastboot 模式。当设备可以启动进入 Fastboot 模式后,您就可以使用 ffx target flash 在设备上刷写 Fuchsia 映像。不过,如果设备的引导加载程序不支持 Fastboot,您需要先更新引导加载程序。更新设备的引导加载程序(以支持 Fastboot)通常需要特定于设备类型和制造商的说明,而本指南未涵盖这些说明。

您可以从各种来源(例如 Google Cloud Storage 和项目代码库)获取 Fuchsia 预构建映像。此外,还可以从 Fuchsia 源代码签出生成自定义预构建映像。无论哪种情况,用于刷写的预构建映像都必须与目标设备匹配。

刷写设备

如需在设备上刷写 Fuchsia 映像,请执行以下操作:

  1. 通过 USB 或以太网将设备连接到主机。
  2. 将设备启动到 Fastboot 模式

  3. 检查设备的状态:

    ffx target list

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

    $ ffx target list
    NAME         SERIAL            TYPE       STATE       ADDRS/IP    RCS
    <unknown>    01234ABCD012YZ    Unknown    Fastboot    []          N
    

    验证设备的状态是否为 Fastboot

    如果 ffx target list 在 Fastboot 模式下仅显示一部设备(如上例所示),ffx 命令会自动以该设备为目标。不过,如果连接了多个设备,您需要指定目标设备。

  4. 可选)如果存在多个设备,请设置默认 Fuchsia 目标。

    如果第 3 步中的 ffx target list 命令显示多个设备,并且您希望为 ffx 命令设置默认目标(而不是使用 --target 标志),则需要执行此步骤。

    设置默认 Fuchsia 目标取决于您所处的环境:

    Fuchsia SDK

    对于 Fuchsia SDK 环境,请使用 FUCHSIA_NODENAME 环境变量设置目标:

    FUCHSIA_NODENAME=<TARGET_DEVICE>

    例如:

    $ FUCHSIA_NODENAME=fuchsia-5254-0063-5e7a
    

    fuchsia.git

    在 Fuchsia 源代码检出 (fuchsia.git) 环境中工作时,您可以运行以下 fx 命令,为当前 build 目录设置默认目标设备:

    fx set-device <TARGET_DEVICE>`

    例如:

    $ fx set-device fuchsia-5254-0063-5e7a
    

    您可以运行 fx unset-device 来取消设置默认目标平台。

  5. 刷写设备:

    ffx target flash -b <FUCHSIA_IMAGE>

    FUCHSIA_IMAGE 替换为包含 Fuchsia 预构建映像及其刷写清单文件的归档文件,例如:

    $ ffx target flash -b ~/Downloads/fuchsia-image-example.zip
    

    刷写完成后,设备会重新启动并开始运行 Fuchsia。

使用来自 fx create-pb-zip 的产品软件包刷写设备

如需刷写通过在 Fuchsia 源签出设置中运行 fx create-pb-zip 命令创建的产品软件包 (.zip),请运行带有 -b 标志的 ffx target flash 命令:

   ffx target flash -b <FUCHSIA_IMAGE>

FUCHSIA_IMAGE 替换为生成的商品套装 ZIP 文件,例如:

   $ ffx target flash -b pb.zip

刷写完成后,设备会重新启动并开始运行 Fuchsia。

将设备启动进入 Fastboot 模式

如需触发 Fuchsia 设备启动进入 Fastboot 模式,请运行以下命令:

ffx target reboot -b

重新启动后,设备会启动进入 Fastboot 模式。