Kể từ Android 10, 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ừ userdebug thành loại bản dựng người dùng để có thể ký bản phát hành. Đây là vấn đề đối với hoạt động 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ị xây dựng của người dùng.
Chúng tôi giới thiệu ramdisk gỡ lỗi (hoặc hình ảnh khởi động gỡ lỗi) để bật adb root
trên thiết bị bản dựng của người dùng có trình tải khởi động đã mở khoá. Việc 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 bản dựng GSI system.img
của người dùng cho CTS-on-GSI và VTS-on-GSI. Để thiết lập STS, bạn vẫn phải sử dụng một system.img
OEM userdebug khác.
Bảng sau đây cho thấy các thay đổi về hình ảnh và loại bản dựng để kiểm thử việc tuân thủ trong Android 10.
Bộ kiểm thử | Kiểm thử bằng | Tạo | Gỡ lỗi ramdisk | 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 trên GSI | GSI (Hình ảnh hệ thống chung) | người dùng | Không | Không | userdebug -> GSI của người dùng ký phát hành |
STS | Hệ thống của nhà sản xuất thiết bị gốc (OEM) | userdebug | Không | Có | Tính năng mới trong Q |
VTS | GSI | người dùng | Có | Có | userdebug -> user GSI bản phát hành đã ký |
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.img
vendor_boot-debug.img
Khi boot-debug.img
được cài đặt ROM 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 của người dùng system.img
(thuộc GSI hoặc OEM của Nhà sản xuất thiết bị gốc).
Đối với Hình ảnh hạt nhân 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 ROM boot-debug.img
vì phân vùng boot
phải được cài đặt ROM bằng hình ảnh GKI được chứng nhận.
Thay vào đó, bạn nên cài đặt ROM vendor_boot-debug.img
vào phân vùng vendor_boot
để hỗ trợ gỡ lỗi ramdisk.
Điều kiện tiên quyết để sử dụng ramdisk gỡ lỗi
Ổ đĩa gỡ lỗi do OEM cung cấp đang chạy các bài kiểm tra tính tuân thủ. tệp này không được ký phát hành và chỉ có thể sử dụng nếu thiết bị được mở khoá.
Tệp ramdisk gỡ lỗi sẽ không được tạo hoặc dùng để nâng cấp các thiết bị có:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
đúngskip_initramfs
trong dòng lệnh hạt nhân
GSI Android 12
Bạn không cần phải hướng dẫn thêm để sử dụng ổ đĩa RAM gỡ lỗi với GSI Android 12.
Kể từ ngày 29/9/2021, bạn không cần cập nhật ổ đĩa RAM bằng công cụ repack_bootimg
để gỡ lỗi nữa. Bản dựng GSI Android 12 sau khi 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 sử dụng boot-debug.img
hoặc vendor_boot-debug.img
, chính sách bảo mật của hệ thống sẽ được tải từ tệp userdebug_plat_sepolicy.cil
trong ổ đĩa RAM 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 mới nhất về chính sách bảo mậ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ể dùng công cụ repack_bootimg
để tạo lại boot-debug.img
hoặc vendor_boot-debug.img
bằng chính sách sepolicy đã cập nhật của GSI.
Đóng gói lại ổ đĩa RAM gỡ lỗi
Thay vì kết hợp các thay đổi về chính sách bảo mật để tạo lại boot-debug.img
, các đối tác có thể sử dụng repack_bootimg
để cập nhật tệp chính sách bảo mật GSI thành boot-debug.img
(hoặc vendor_boot-debug.img
nếu thiết bị sử dụng GKI).
Các bước thực hiện như sau:
Tải
otatools.zip
xuố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_arm64-userdebug
trênaosp-main
.Thiết lập môi trường thực thi cho
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
Tải
userdebug_plat_sepolicy.cil
hoặcboot-with-debug-ramdisk-${KERNEL_VERSION}.img
xuố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.img
hoặcvendor_boot-debug.img
củ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 GKI
repack_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.cil
Vớ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 GKI
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.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
Bạn có thể điều chỉnh các đối số của
--ramdisk_add
theo cấu hình thiết bị. Hãy xem phần tiếp theo để biết nội dung giải thích chi tiết.
Đường dẫn của chính sách bảo mật userdebug
repack_bootimg
ở trên sao chép tệp userdebug_plat_sepolicy.cil
từ
ramdisk của --src_bootimg
vào ramdisk của --dst_bootimg
. Tuy nhiên, đường dẫn trong ổ đĩa gỡ lỗi có thể khác nhau tuỳ theo phiên bản Android. 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 hạt nhân. Nếu không, đường dẫn sẽ là userdebug_plat_sepolicy.cil
.
Chạy lệnh sau để kiểm tra xem có androidboot.force_normal_boot
trong dòng lệnh hạt nhân hay không:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
Kể từ Android 12, đường dẫn trong một ổ đĩa RAM gỡ lỗi luôn là userdebug_plat_sepolicy.cil
, bất kể androidboot.force_normal_boot=1
có tồn tại trong dòng lệnh hạt nhân hay không. Bảng sau đây cho thấy các đường dẫn trong một ổ đĩa RAM gỡ lỗi trong 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 |
Provider_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 một danh sách các cặp src_path:dst_path
. Ví dụ: lệnh sau đây sẽ sao chép tệp first_stage_ramdisk/userdebug_plat_sepolicy.cil
từ boot-with-debug-ramdisk-5.4.img
của Android 11 sang first_stage_ramdisk/userdebug_plat_sepolicy.cil
trong vendor_boot-debug.img
của 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.cil
Nếu không có androidboot.force_normal_boot=1
trong dòng lệnh hạt nhân, 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.cil
Thêm chân trang AVB
Nếu hình ảnh truyền đến --dst_bootimg
được định cấu hình dưới dạng phân vùng chuỗi AVB, thì bạn cần thêm chân trang AVB sau khi chạy lệnh repack_bootimg
.
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 theo chuỗi hay không.
avbtool info_image --image vendor_boot-debug.img
Nếu ban đầu có chân trang AVB theo chuỗi, 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ị được mở khoá, cho phép hình ảnh được 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