Partition „system_other“ prüfen

Implementierung

Android-Geräte mit Android 9 oder niedriger, die A/B-Partitionen haben, können die inaktive system_other-Partition (z. B. system_b, wenn slot_a aktiv ist) zum Speichern von vorab optimierten VDEX-/ODEX-Dateien verwenden. Wenn system_other verwendet wird, wird ro.cp_system_other_odex auf „1“ gesetzt, damit der Paketmanagerdienst sys.cppreopt=requested festlegen kann, damit cppreopts.rc darauf reagieren kann.

In Android 10 wird libfs_avb eingeführt, um die eigenständige AVB-Überprüfung für die Partition system_other zu unterstützen. Die VBMeta-Struktur einer solchen Partition wird an das Ende der Partition angehängt, um von einem erwarteten öffentlichen Schlüssel aus dem Dateisystem überprüft zu werden. Das Android-Build-System unterstützt das Signieren von system_other.img und das Einbeziehen des entsprechenden Signaturschlüssels unter /product/etc/security/avb/system_other.avbpubkey. Das Release-Tool sign_target_files_apks.py unterstützt auch das Ersetzen des Signaturschlüssels durch eine Release-Version.

A/B-Geräte, die vor Android 10 auf den Markt gebracht wurden, haben eine physische system_other-Partition, auch wenn sie auf Android 10 aktualisiert werden und PRODUCT_RETROFIT_DYNAMIC_PARTITIONS auf true gesetzt ist.

A/B-Geräte, die mit Android 10 eingeführt wurden, müssen eine logische system_other-Partition haben. Das folgende Beispiel zeigt eine typische fstab.postinstall-Datei, in der AVB auf system_other aktiviert ist.

#<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

Auf Geräten, auf denen AVB auf der system_other-Partition aktiviert werden muss, sollte die Datei fstab in der Produktpartition abgelegt und das Attribut ro.postinstall.fstab.prefix auf /product festgelegt werden.

# 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