aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/devices/bootloader/system-as-root.html
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn/devices/bootloader/system-as-root.html')
-rw-r--r--zh-cn/devices/bootloader/system-as-root.html9
1 files changed, 4 insertions, 5 deletions
diff --git a/zh-cn/devices/bootloader/system-as-root.html b/zh-cn/devices/bootloader/system-as-root.html
index ad9180b6..9c9333b8 100644
--- a/zh-cn/devices/bootloader/system-as-root.html
+++ b/zh-cn/devices/bootloader/system-as-root.html
@@ -3,7 +3,6 @@
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
-
<body>
<!--
Copyright 2018 The Android Open Source Project
@@ -33,7 +32,7 @@
<li>在非 A/B 分区架构中,<code>/boot</code> 分区中的 <code>ramdisk.img</code> 会被加载到内存中(反过来再作为 rootfs 进行装载),而 <code>system</code> 分区则在 <code>/system</code> 中装载。</li>
</ul>
- <p>在 Android 8.0 中进行的架构更改(在<a href="/devices/architecture/#hidl">项目 Treble</a> 中)支持系统专用 OTA。在系统专用 OTA 中,可以在不更改其他分区的情况下跨主要 Android 版本更新 <code>system.img</code>。不过,对于非 A/B 设备来说,由于 <code>ramdisk.img</code> 位于 <code>/boot</code> 分区中,因此它无法使用 Android 8.x 架构通过系统专用 OTA 进行更新。这样一来,旧的 <code>ramdisk.img</code> 可能不适用于新的 <code>system.img</code>,具体原因如下:</p>
+ <p>在 Android 8.0 中进行的架构更改(在 <a href="/devices/architecture/#hidl">Project Treble</a> 中)支持系统专用 OTA。在系统专用 OTA 中,可以在不更改其他分区的情况下跨主要 Android 版本更新 <code>system.img</code>。不过,对于非 A/B 设备来说,由于 <code>ramdisk.img</code> 位于 <code>/boot</code> 分区中,因此它无法使用 Android 8.x 架构通过系统专用 OTA 进行更新。这样一来,旧的 <code>ramdisk.img</code> 可能不适用于新的 <code>system.img</code>,具体原因如下:</p>
<ul>
<li><code>ramdisk.img</code> 中较旧的 <code>/init</code> 可能无法解析 <code>/system</code> 上的 *.rc 文件。</li>
@@ -94,7 +93,7 @@
<aside class="note"><strong>注意</strong>:如果设备使用的是 A/B 分区架构,则无需做出任何改动。</aside>
- <p>不同于将 <code>/boot</code> 改为 <a href="/devices/tech/ota/ab_implement#recovery">recovery</a> 分区的 A/B 设备,<strong>非 A/B 设备由于没有后备插槽分区</strong>(例如,从 <code>boot_a</code> 到 <code>boot_b</code>),必须保留单独的 <code>/recovery</code> 分区。如果在非 A/B 设备上移除 <code>/recovery</code> 并使其与 A/B 架构类似,那么在 <code>/boot</code> 分区更新失败时,恢复模式可能会遭到破坏。因此,在非 A/B 设备上,<strong>必须</strong>将 <code>/recovery</code> 分区与 <code>/boot</code> 分区分开,这意味着将继续延迟更新恢复映像(即和 <a href="/devices/tech/ota/nonab/#life-ota-update">Android 9 之前</a>的设备一样)。</p>
+ <p>不同于将 <code>/boot</code> 改为 <a href="/devices/tech/ota/ab_implement#recovery">recovery</a> 分区的 A/B 设备,<strong>非 A/B 设备由于没有后备插槽分区(例如,从 <code>boot_a</code> 到 <code>boot_b</code>),必须保留单独的 <code>/recovery</code> 分区</strong>。如果在非 A/B 设备上移除 <code>/recovery</code> 并使其与 A/B 架构类似,那么在 <code>/boot</code> 分区更新失败时,恢复模式可能会遭到破坏。因此,在非 A/B 设备上,<strong>必须</strong>将 <code>/recovery</code> 分区与 <code>/boot</code> 分区分开,这意味着将继续延迟更新恢复映像(即和搭载 <a href="/devices/tech/ota/nonab/#life-ota-update">Android 9 之前版本</a>的设备一样)。</p>
<p>非 A/B 设备在使用 Android 9 前后的分区布局差异:</p>
@@ -205,7 +204,7 @@ system.img
<p>在 system-as-root 中,内核必须使用 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity</a> 在 <strong><code>/</code></strong>(装载点)下装载 <code>system.img</code>。AOSP 支持 <code>system.img</code> 的下列 dm-verity 实现:</p>
<ol>
- <li>对于 <a href="/security/verifiedboot/">vboot 1.0</a>,内核必须在 <code>/system</code> 上解析 Android 专用<a href="/security/verifiedboot/dm-verity#metadata">元数据</a>,然后转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a>以设置 dm-verity。需要这些<a href="/devices/tech/ota/ab_implement#kernel">内核补丁程序</a>。</li>
+ <li>对于 <a href="/security/verifiedboot/">vboot 1.0</a>,内核必须在 <code>/system</code> 上解析 Android 专用<a href="/security/verifiedboot/dm-verity#metadata">元数据</a>,然后转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a> 以设置 dm-verity。需要这些<a href="/devices/tech/ota/ab_implement#kernel">内核补丁程序</a>。</li>
<li>对于 vboot 2.0 (<a href="https://android.googlesource.com/platform/external/avb/" class="external">AVB</a>),引导加载程序必须先整合 <a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/" class="external">external/avb/libavb</a>,然后 external/avb/libavb 会解析 <code>/system</code> 的<a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/avb_hashtree_descriptor.h" class="external">哈希树描述符</a>,再将解析结果转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a>,最后通过内核命令行将这些参数传递给内核。(<code>/system</code> 的哈希树描述符可能位于 <code>/vbmeta</code> 或 <code>/system</code> 本身上)。<br />
<br />需要下列内核补丁程序:<ul>
@@ -246,7 +245,7 @@ PARTUUID=00000016-0000-0000-0000-000000000000 fec_roots 2 fec_blocks
<h2 id="device-specific-folders">特定于设备的根文件夹</h2>
-<p>使用 system-as-root 时,在设备上刷写<a href="/setup/build/gsi">常规系统映像 (GSI)</a> 之后(以及在运行<a href="/compatibility/vts/">供应商测试套件</a>测试之前),任何通过 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 添加的特定于设备的根文件夹都会消失,因为整个根目录内容已被 system-as-root GSI 取而代之。如果对特定于设备的根文件夹有依赖性(例如将此类文件夹用作装载点),则移除这些文件夹可能会导致设备无法启动。</p>
+<p>使用 system-as-root 时,在设备上刷写<a href="/setup/build/gsi">常规系统映像 (GSI)</a> 之后(以及在运行<a href="/compatibility/vts/">供应商测试套件</a>测试之前),任何通过 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 添加的特定于设备的根文件夹都会消失,因为整个根目录内容已被 system-as-root GSI 取代。如果对特定于设备的根文件夹有依赖性(例如将此类文件夹用作装载点),则移除这些文件夹可能会导致设备无法启动。</p>
<p>要避免出现此问题,请不要使用 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 来添加特定于设备的根文件夹(此类文件夹将来可能会被弃用)。如果需要指定特定于设备的装载点,请使用 <code>/mnt/vendor/&lt;mount point&gt;</code>(已添加到这些<a href="https://android-review.googlesource.com/q/topic:vmount" class="external">更改列表</a>中)。这些特定于供应商的装载点可在 <code>fstab</code> 设备树(适用于第一阶段的装载)和 <code>/vendor/etc/fstab.{ro.hardware}</code> 文件中直接指定,而无需进行额外设置(因为 <code>fs_mgr</code> 将在 <code>/mnt/vendor/*</code> 下自动创建它们)。</p>