Implementazione
I dispositivi Android con Android 9 e versioni precedenti che hanno partizioni A/B possono
utilizzare la partizione system_other
inattiva (ad esempio,
system_b
quando slot_a
è attiva) per archiviare file
VDEX/ODEX preottimizzati. Quando viene utilizzato system_other
,
ro.cp_system_other_odex
è impostato su 1 per il servizio
di gestione dei pacchetti per impostare sys.cppreopt=requested
per cppreopts.rc
in modo che agisca di conseguenza.
In Android 10, libfs_avb
viene introdotto per supportare la verifica AVB autonoma per la
partizione system_other
. La struttura VBMeta di una partizione di questo tipo viene
aggiunta alla fine della partizione, per essere verificata da una chiave pubblica prevista
dal file system. Il sistema di build di Android supporta la firma
system_other.img
includendo la chiave di firma corrispondente
in /product/etc/security/avb/system_other.avbpubkey
. Lo strumento
di rilascio sign_target_files_apks.py
supporta anche la sostituzione della chiave
di firma con una versione di rilascio.
I dispositivi A/B lanciati prima di Android 10 hanno una partizione
system_other
fisica, anche se viene eseguito l'upgrade ad Android 10 con
PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
impostato su true
.
I dispositivi A/B lanciati con Android 10 devono avere una partizione
system_other
logica. L'esempio seguente mostra un file
fstab.postinstall
tipico che attiva AVB su
system_other
.
#<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
I dispositivi che devono attivare AVB sulla partizione system_other
devono inserire il file fstab
nella partizione del prodotto e impostare la
proprietà ro.postinstall.fstab.prefix
su /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