Trong Android 10 trở lên, Hình ảnh hệ thống chung (GSI) dùng để chạy
quy trình kiểm thử tuân thủ CTS-on-GSI/VTS đã thay đổi
từ loại bản dựng userdebug sang user để được ký phát hành. Đây là vấn đề đối với quy trình kiểm thử VTS vì VTS yêu cầu
adb root để chạy, nhưng
adb root không có trên thiết bị bản dựng user.
Ramdisk gỡ lỗi (hoặc hình ảnh khởi động gỡ lỗi) được ra mắt để bật adb root trên thiết bị bản dựng user có trình tải khởi động đã
mở khoá. Điều này giúp đơn giản hoá quy trình kiểm thử bằng cách sử dụng cùng một GSI bản dựng user system.img cho CTS-on-GSI và VTS-on-GSI. Đối với thiết lập STS, bạn vẫn phải sử dụng system.img userdebug OEM khác.
Bảng sau đây cho thấy các thay đổi về hình ảnh và loại bản dựng đối với quy trình kiểm thử tuân thủ trong Android 10.
| Bộ kiểm thử | Kiểm tra bằng | Tạo | Ramdisk gỡ lỗi | adb root? | Thay đổi biến thể bản dựng Android 9 -> 10 |
|---|---|---|---|---|---|
| CTS | Hệ thống của OEM | người dùng | Không | Không | Không có thay đổi |
| CTS-on-GSI | GSI (Hình ảnh hệ thống chung) | người dùng | Không | Không | userdebug -> GSI người dùng đã ký phát hành |
| STS | Hệ thống của OEM | userdebug | Không | Có | Mới trong Q |
| VTS | GSI (Hình ảnh hệ thống chung) | người dùng | Có | Có | userdebug -> GSI người dùng đã ký phát hành |
Tổng quan
Các tệp hình ảnh bổ sung này được tạo trong thư mục bản dựng (${ANDROID_PRODUCT_OUT}):
boot-debug.imgvendor_boot-debug.img
Khi boot-debug.img được cài đặt vào phân vùng boot của thiết bị, phiên bản
userdebug của tệp sepolicy hệ thống và một tệp thuộc tính bổ sung,
adb_debug.prop, sẽ được tải. Điều này cho phép adb root với bản dựng user system.img (của GSI hoặc OEM).
Đối với
Hình ảnh kernel chung (GKI)
sử dụng các thiết bị có phân vùng vendor_boot, bạn không được
cài đặt boot-debug.img, vì phân vùng boot phải được cài đặt bằng hình ảnh GKI đã được chứng nhận.
Thay vào đó, bạn nên cài đặt vendor_boot-debug.img vào phân vùng vendor_boot
để tạo điều kiện thuận lợi cho ramdisk gỡ lỗi.
Điều kiện tiên quyết để sử dụng ramdisk gỡ lỗi
Ramdisk gỡ lỗi do OEM chạy các quy trình kiểm thử tuân thủ cung cấp. Bạn không được ký phát hành ramdisk này và chỉ có thể sử dụng nếu thiết bị đã mở khoá.
Ramdisk gỡ lỗi sẽ không được tạo hoặc sử dụng để nâng cấp các thiết bị có:
BOARD_BUILD_SYSTEM_ROOT_IMAGEtrueskip_initramfstrong dòng lệnh kernel
GSI Android 12
Bạn không cần hướng dẫn bổ sung để sử dụng ramdisk gỡ lỗi với GSI Android 12.
Kể từ ngày 29 tháng 9 năm 2021, ramdisk gỡ lỗi không còn yêu cầu cập nhật bằng công cụ
repack_bootimg. Bản dựng GSI Android 12 sau SGR1.210929.001 (7777720) kết hợp tệp userdebug_plat_sepolicy.cil mới nhất trong system.img và bỏ qua userdebug_plat_sepolicy.cil từ ramdisk gỡ lỗi. Hãy xem
CL để biết
thông tin chi tiết.
GSI Android 11
Khi boot-debug.img hoặc vendor_boot-debug.img được sử dụng, sepolicy hệ thống
sẽ được tải từ tệp userdebug_plat_sepolicy.cil trong ramdisk gỡ lỗi
của boot-debug.img hoặc vendor_boot-debug.img. Để khởi động hình ảnh GSI, vui lòng luôn kết hợp các thay đổi sepolicy mới nhất từ nhánh
android11-gsi
để tạo lại boot-debug.img hoặc vendor_boot-debug.img.
Ngoài ra, bạn có thể sử dụng công cụ repack_bootimg để tạo lại
boot-debug.img hoặc vendor_boot-debug.img bằng sepolicy GSI đã cập nhật.
Đóng gói lại ramdisk gỡ lỗi
Thay vì kết hợp các thay đổi sepolicy để tạo lại boot-debug.img, đối tác
có thể sử dụng repack_bootimg để cập nhật tệp sepolicy GSI vào boot-debug.img
(hoặc vendor_boot-debug.img nếu thiết bị sử dụng GKI).
Các bước như sau:
Tải
otatools.zipxuống từ https://ci.android.com. Bạn nên tải xuống từ các cấu phần phần mềm bản dựng củaaosp_cf_arm64_only_phone-userdebugtrên nhánhaosp-android-latest-release.Thiết lập môi trường thực thi cho
repack_bootimg:unzip otatools.zip -d otatoolsexport PATH="${PWD}/otatools/bin:${PATH}"repack_bootimg --helpTải
userdebug_plat_sepolicy.cilhoặcboot-with-debug-ramdisk-${KERNEL_VERSION}.imgxuống từ bản dựng GSI mà bạn đang sử dụng. Ví dụ: nếu bạn đang sử dụng GSI arm64 từRJR1.211020.001 (7840830), hãy tải xuống từ https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest.Cập nhật
boot-debug.imghoặcvendor_boot-debug.imgcủa thiết bị bằnguserdebug_plat_sepolicy.cil:repack_bootimg --local --dst_bootimg boot-debug.img \ --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil# If using GKIrepack_bootimg --local --dst_bootimg vendor_boot-debug.img \ --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cilVới
boot-with-debug-ramdisk-${KERNEL_VERSION}.img:repack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \ --dst_bootimg boot-debug.img \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil# If using GKIrepack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \ --dst_bootimg vendor_boot-debug.img \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cilBạn có thể điều chỉnh các đối số của
--ramdisk_addtheo cấu hình thiết bị. Hãy xem phần tiếp theo để biết giải thích chi tiết.
Đường dẫn của sepolicy userdebug
repack_bootimg ở trên sao chép tệp userdebug_plat_sepolicy.cil từ ramdisk của --src_bootimg sang ramdisk của --dst_bootimg. Tuy nhiên, đường dẫn trong ramdisk gỡ lỗi có thể khác nhau ở các phiên bản Android khác nhau. Trong Android 10 và 11, đường dẫn là first_stage_ramdisk/userdebug_plat_sepolicy.cil đối với các thiết bị có androidboot.force_normal_boot=1 trong dòng lệnh kernel. Nếu không, đường dẫn là userdebug_plat_sepolicy.cil.
Chạy lệnh sau để kiểm tra xem có androidboot.force_normal_boot trong dòng lệnh kernel hay không:
adb rootadb shell cat /proc/cmdline | grep force_normal_boot
Trong Android 12 trở lên, đường dẫn trong ramdisk gỡ lỗi luôn là userdebug_plat_sepolicy.cil, bất kể có androidboot.force_normal_boot=1 trong dòng lệnh kernel hay không. Bảng sau đây cho thấy các đường dẫn trong ramdisk gỡ lỗi ở các phiên bản Android khác nhau.
| Hình ảnh gỡ lỗi | Android 10 | Android 11 | Android 12 |
|---|---|---|---|
| GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | Không áp dụng | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
| boot-debug.img dành riêng cho thiết bị | Phụ thuộc vào force_normal_boot | Phụ thuộc vào force_normal_boot | userdebug_plat_sepolicy.cil |
| vendor_boot-debug.img dành riêng cho thiết bị | Không áp dụng | Phụ thuộc vào force_normal_boot | userdebug_plat_sepolicy.cil |
Bạn có thể chỉ định --ramdisk_add để sao chép tệp từ và đến các đường dẫn khác nhau bằng danh sách các cặp src_path:dst_path. Ví dụ: lệnh sau đây sao chép tệp first_stage_ramdisk/userdebug_plat_sepolicy.cil từ boot-with-debug-ramdisk-5.4.img Android 11 sang first_stage_ramdisk/userdebug_plat_sepolicy.cil trong vendor_boot-debug.img Android 11.
repack_bootimg \
--src_bootimg boot-with-debug-ramdisk-5.4.img \
--dst_bootimg vendor_boot-debug.img \
--ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cilNếu không có androidboot.force_normal_boot=1 trong dòng lệnh kernel, thì bạn nên điều chỉnh lệnh như bên dưới để thay đổi đường dẫn đích thành userdebug_plat_sepolicy.cil.
repack_bootimg \
--src_bootimg boot-with-debug-ramdisk-5.4.img \
--dst_bootimg vendor_boot-debug.img \
--ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cilThêm chân trang AVB
Ví dụ: trước khi chạy repack_bootimg, hãy chạy lệnh sau để kiểm tra xem vendor_boot-debug.img có chân trang AVB được liên kết hay không.
avbtool info_image --image vendor_boot-debug.imgNếu ban đầu có chân trang AVB được liên kết, thì bạn cần thêm chân trang AVB sau khi chạy lệnh repack_bootimg. Việc sử dụng bất kỳ khoá kiểm thử nào để ký
vendor_boot-debug.img đều hoạt động vì bạn chỉ có thể sử dụng ramdisk gỡ lỗi khi
thiết bị đã mở khoá. Điều này cho phép các hình ảnh đã ký bằng khoá không phát hành trên phân vùng boot hoặc
vendor_boot.
avbtool add_hash_footer --partition_name vendor_boot \
--partition_size 100663296 \
--algorithm SHA256_RSA4096 \
--key otatools/external/avb/test/data/testkey_rsa4096.pem \
--image vendor_boot-debug.img