تایید پارتیشن system_other

پیاده سازی

دستگاه‌های مجهز به Android با Android 9 و پایین‌تر که دارای پارتیشن A/B هستند، می‌توانند از پارتیشن غیرفعال system_other (به عنوان مثال، system_b زمانی که slot_a فعال است) برای ذخیره فایل‌های VDEX/ODEX از پیش بهینه‌شده استفاده کنند. هنگامی که system_other استفاده می شود، ro.cp_system_other_odex روی 1 تنظیم می شود تا سرویس مدیر بسته، sys.cppreopt=requested برای cppreopts.rc بر روی آن عمل کند.

در اندروید 10،libfs_avb برای پشتیبانی از تایید مستقل AVB برای پارتیشن system_other معرفی شده است. ساختار VBMeta چنین پارتیشنی به انتهای پارتیشن اضافه می شود تا توسط یک کلید عمومی مورد انتظار از سیستم فایل تأیید شود. سیستم ساخت اندروید از امضای system_other.img پشتیبانی می‌کند در حالی که کلید امضای مربوطه را در زیر /product/etc/security/avb/system_other.avbpubkey قرار می‌دهد. ابزار انتشار sign_target_files_apks.py همچنین از جایگزینی کلید امضا به نسخه انتشار پشتیبانی می کند.

دستگاه‌های A/B که قبل از Android 10 راه‌اندازی شده‌اند، دارای یک پارتیشن فیزیکی system_other هستند، حتی اگر با PRODUCT_RETROFIT_DYNAMIC_PARTITIONS به true به Android 10 ارتقا یافته باشد.

دستگاه‌های A/B که با Android 10 راه‌اندازی می‌شوند باید دارای پارتیشن منطقی system_other باشند. مثال زیر یک فایل معمولی fstab.postinstall را نشان می دهد که AVB را در 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

دستگاه هایی که باید AVB را در پارتیشن system_other فعال کنند باید فایل fstab را در پارتیشن محصول قرار دهند و ویژگی 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