Sprawdzanie partycji system_other

Implementacja

Urządzenia z Androidem 9 lub starszym, które mają partycje A/B, mogą używać nieaktywnej partycji system_other (na przykład system_b, gdy aktywna jest slot_a) do przechowywania wstępnie zoptymalizowanych plików VDEX/ODEX. Gdy używasz opcji system_other, opcja ro.cp_system_other_odex jest ustawiana na 1 w menedżerze pakietów, aby ustawić opcję sys.cppreopt=requested w komponencie cppreopts.rc.

W Androidzie 10 wprowadzono libfs_avb, aby umożliwić samodzielną weryfikację AVB w przypadku partycji system_other. Struktura VBMeta takiej partycji jest dołączana na końcu partycji, aby można było ją zweryfikować za pomocą oczekiwanego klucza publicznego z systemu plików. System kompilacji Androida obsługuje podpisywanie system_other.img, uwzględniając odpowiedni klucz podpisywania w sekcji /product/etc/security/avb/system_other.avbpubkey. Narzędzie do publikowania sign_target_files_apks.py obsługuje też zastępowanie klucza podpisywania wersją opublikowaną.

Urządzenia A/B, które zostały uruchomione przed Androidem 10, mają fizyczny partycjisystem_other, nawet jeśli zostały zaktualizowane do Androida 10 z PRODUCT_RETROFIT_DYNAMIC_PARTITIONS ustawionym na true.

Urządzenia z testem A/B uruchomione z Androidem 10 muszą mieć partycję logiczną system_other. Ten przykład pokazuje typowy plik fstab.postinstall, który włącza AVB na interfejsie 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

Urządzenia, na których należy włączyć AVB na partycji system_other, powinny umieścić plik fstab na partycji produktu i ustawić właściwość ro.postinstall.fstab.prefix na /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