system_other パーティションの検証

実装

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_PARTITIONStrueに設定されて 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