実装
A/B パーティションを持つ Android 9 以前を搭載した Android 搭載デバイスは、非アクティブなsystem_other
パーティション (たとえば、 slot_a
がアクティブな場合のsystem_b
) を使用して、事前に最適化された VDEX/ODEX ファイルを保存できます。 system_other
が使用される場合、パッケージ マネージャー サービスがsys.cppreopt=requested
を設定してcppreopts.rc
が機能するように、 ro.cp_system_other_odex
が 1 に設定されます。
Android 10 では、 system_other
パーティションのスタンドアロン AVB 検証をサポートするためにlibfs_avb
が導入されました。このようなパーティションの VBMeta 構造体はパーティションの末尾に追加され、ファイル システムからの予期される公開キーによって検証されます。 Android ビルド システムは、 /product/etc/security/avb/system_other.avbpubkey
の下に対応する署名キーを含めながら、 system_other.img
への署名をサポートします。リリース ツールsign_target_files_apks.py
署名キーをリリース バージョンに置き換えることもサポートしています。
Android 10 より前に起動された A/B デバイスには、 PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
がtrue
に設定されて Android 10 にアップグレードされた場合でも、物理system_other
パーティションがあります。
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
ファイルを product パーティションに配置し、プロパティ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