软件更新系统

Fuchsia 项目会持续接收新功能、增强功能和安全修复程序的更新。Fuchsia 的软件更新系统使用更新框架 (TUF) 1.0 版。不过,Fuchsia 与 TUF 有一些不同:

规范版本

在 Fuchsia 代码库中,Fuchsia 代码库版本作为目标角色的签名数据的顶级属性列出。以下示例展示了规范版本的格式:

{
  ...

  "signed": {
    "_type": ROLE,
    "spec_version": "1",
    "custom": {
      "fuchsia_spec_version": <FUCHSIA_SPEC_VERSION>,
  }

  ...
}

值的定义:

  • 位置:FUCHSIA_SPEC_VERSION。面孔大小:INT。Fuchsia 代码库规范版本的值。例如 1

文件包整理

Fuchsia 代码库中用于处理 Fuchsia 软件包的 TUF 目标包含指向软件包元数据归档的自定义元数据。以下示例展示了软件包的格式:

{
  ...

  "targets": {
    "/PACKAGE_PATH": {
      ...
    }

  ...
  }
}

值的定义:

  • PACKAGE_PATH:代码库基准网址中的软件包的相对路径。

Merkle 根

在 Fuchsia 代码库中,每个软件包目标都以自定义属性的形式包含软件包元 FAR 的 merkle 根。以下示例展示了 Merkle 根的格式:

{
  ...

  "targets" : {
    PACKAGEPATH : {
      "length" : LENGTH,
      "hashes" : HASHES,
      "custom" : {
        "merkle" : <MERKLE_ROOT>,
        "size" : <BLOB_SIZE>,
      }
    }

    ...
  }
}

值的定义:

  • 位置:MERKLE_ROOT。面孔大小:STRING。软件包的元 FAR 的 Merkle 根哈希的十六进制字符串。
  • 位置:BLOB_SIZE。面孔大小:INT。由 MERKLE_ROOT 标识的未加密 BLOB 的大小(以字节为单位)。