A/B 파티션이 있는 Android 9 이하의 Android 구동 기기는 비활성 system_other 파티션(예: slot_a 활성화 시 system_b)을 사용하여 사전 최적화된 VDEX/ODEX 파일을 저장할 수 있습니다. system_other 사용 시 ro.cp_system_other_odex가 1로 설정되어 패키지 관리자 서비스는 cppreopts.rc가 작동하도록 sys.cppreopt=requested를 설정합니다.
Android 10에서 libfs_avb는 system_other 파티션의 독립형 AVB 인증을 지원하기 위해 도입되었습니다. 이러한 파티션의 VBMeta 구조체는 파티션의 끝에 추가되어 파일 시스템의 예상된 공개 키에 의해 인증됩니다. Android 빌드 시스템은 system_other.img 서명을 지원하는 동시에 /product/etc/security/avb/system_other.avbpubkey 아래에 상응하는 서명 키를 포함합니다. 출시 도구 sign_target_files_apks.py는 서명 키를 출시 버전으로 바꾸는 것도 지원합니다.
Android 10 이전에 출시된 A/B 기기는 PRODUCT_RETROFIT_DYNAMIC_PARTITIONS가 true로 설정된 상태에서 Android 10으로 업그레이드되었더라도 실제 system_other 파티션이 있습니다.
Android 10으로 출시된 A/B 기기에는 논리 system_other 파티션이 있어야 합니다. 다음 예는 system_other에서 AVB를 사용 설정하는 일반적인 fstab.postinstall 파일을 보여줍니다.
system_other 파티션에서 AVB를 사용 설정해야 하는 기기는 제품 파티션에 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
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Verify system_other partition\n\nImplementation\n--------------\n\nAndroid-powered devices with Android 9 and lower that have A/B partitions can\nuse the inactive `system_other` partition (for example,\n`system_b`when `slot_a` is active) to store preoptimized\nVDEX/ODEX files. When `system_other` is used,\n`ro.cp_system_other_odex` is set to 1 for the package manager\nservice to set `sys.cppreopt=requested` for `cppreopts.rc`\nto act on it.\n\nIn Android 10, [`libfs_avb`](https://android.googlesource.com/platform/system/core/+/refs/heads/android16-release/fs_mgr/libfs_avb/)\nis introduced to support standalone AVB verification for the\n`system_other` partition. The VBMeta struct of such a partition is\nappended to the end of the partition, to be verified by an expected public key\nfrom the file system. The Android build system supports signing\n`system_other.img` while including the corresponding signing key\nunder `/product/etc/security/avb/system_other.avbpubkey`. The release\ntool `sign_target_files_apks.py` also supports replacing the signing\nkey to a release version.\n\nA/B devices launched before Android 10 have a physical\n`system_other` partition, even if it's upgraded to Android 10 with\n`PRODUCT_RETROFIT_DYNAMIC_PARTITIONS` set to `true`.\n\n| **Note:** It isn't recommended to enable AVB on these devices. `system_other.img` isn't included in the over-the-air package, which can lead to verification errors after a few A/B updates.\n\nA/B devices launched with Android 10 must have a logical\n`system_other` partition. The following example shows a typical\n`fstab.postinstall` file that enables AVB on\n`system_other`. \n\n```carbon\n#\u003cdev\u003e \u003cmnt_point\u003e \u003ctype\u003e \u003cmnt_flags options\u003e \u003cfs_mgr_flags\u003e\nsystem /postinstall ext4 ro,nosuid,nodev,noexec\nslotselect_other,logical,avb_keys=/product/etc/security/avb/system_other.avbpubkey\n```\n\nDevices that need to enable AVB on the `system_other` partition\nshould place the `fstab` file in the product partition and set the\nproperty `ro.postinstall.fstab.prefix` to `/product`. \n\n```makefile\n# Use /product/etc/fstab.postinstall to mount system_other. PRODUCT_PRODUCT_PROPERTIES += \\\nro.postinstall.fstab.prefix=/product\n\nPRODUCT_COPY_FILES += \\\n$(LOCAL_PATH)/fstab.postinstall:$(TARGET_COPY_OUT_PRODUCT)/etc/fstab.postinstall\n```"]]