驗證 system_other 分區

實作

如果 Android 裝置搭載 Android 9 以下版本,且有 A/B 分區,則可使用無效的 system_other 分區 (例如在 slot_a 啟用時為 system_b) 儲存預先最佳化的 VDEX/ODEX 檔案。使用 system_other 時,ro.cp_system_other_odex 會設為 1,讓套件管理員服務設定 sys.cppreopt=requested,以便 cppreopts.rc 對其採取行動。

在 Android 10 中,libfs_avb 已推出,可支援 system_other 分區的獨立 AVB 驗證。此類分區的 VBMeta 結構體會附加至分區結尾,以便由檔案系統的預期公開金鑰驗證。Android 建構系統支援簽署 system_other.img,同時在 /product/etc/security/avb/system_other.avbpubkey 下加入對應的簽署金鑰。發布工具 sign_target_files_apks.py 也支援將簽署金鑰取代為發布版本。

在 Android 10 之前推出的 A/B 裝置都有實體分割區,system_other即使升級至 Android 10,PRODUCT_RETROFIT_DYNAMIC_PARTITIONS 也設定為 true

搭載 Android 10 的 A/B 裝置必須有邏輯 system_other 分割區。以下範例顯示在 system_other 上啟用 AVB 的一般 fstab.postinstall 檔案。

#<dev> <mnt_point> <type>  <mnt_flags options>  <fs_mgr_flags>
system /postinstall ext4 ro,nosuid,nodev,noexec
slotselect_other,logical,avb_keys=/product/etc/security/avb/system_other.avbpubkey

需要在 system_other 分區啟用 AVB 的裝置,應將 fstab 檔案放在產品分區,並將屬性 ro.postinstall.fstab.prefix 設為 /product

# Use /product/etc/fstab.postinstall to mount system_other. PRODUCT_PRODUCT_PROPERTIES += \
ro.postinstall.fstab.prefix=/product

PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/fstab.postinstall:$(TARGET_COPY_OUT_PRODUCT)/etc/fstab.postinstall