Kể từ Android 10, Hình ảnh hệ thống chung (GSI) dùng để chạy thử nghiệm tuân thủ CTS-on-GSI/VTS đã thay đổi từ userdebug sang loại bản dựng người dùng để được ký phát hành. Đây là sự cố khi kiểm tra VTS vì VTS yêu cầu phải chạy adb root
nhưng adb root
không có sẵn trên thiết bị xây dựng của người dùng.
Đĩa ram gỡ lỗi (hoặc hình ảnh khởi động gỡ lỗi) được giới thiệu để kích hoạt adb root
trên thiết bị xây dựng của người dùng có bộ nạp khởi động được mở khóa . Điều này giúp đơn giản hóa quy trình thử nghiệm 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, vẫn cần phải sử dụng một system.img
OEM gỡ lỗi người dùng khác.img.
Bảng sau đây hiển thị các thay đổi về hình ảnh và loại bản dựng để kiểm tra tính tuân thủ trong Android 10.
Bộ thử nghiệm | Kiểm tra với | Xây dựng | Gỡ lỗi đĩa RAM | gốc adb? | Thay đổi phiên bản bản dựng Android 9 -> 10 |
---|---|---|---|---|---|
CTS | hệ thống của OEM | người dùng | N | N | Không thay đổi |
CTS-trên-GSI | GSI | người dùng | N | N | userdebug -> GSI người dùng đã ký phát hành |
STS | hệ thống của OEM | gỡ lỗi người dùng | N | Y | Mới trong Q |
VTS | GSI | người dùng | Y | Y | 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.img
-
vendor_boot-debug.img
Khi boot-debug.img
được flash 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à 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 system.img
của người dùng (GSI hoặc OEM).
Đố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
, 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 đó, vendor_boot-debug.img
nên được flash vào phân vùng vendor_boot
để tạo điều kiện thuận lợi cho việc gỡ lỗi ramdisk.
Điều kiện tiên quyết để sử dụng ramdisk gỡ lỗi
Đĩa RAM gỡ lỗi được cung cấp bởi OEM đang chạy thử nghiệm tuân thủ. Nó không được ký phát hành và chỉ có thể được sử dụng nếu thiết bị được mở khóa.
Đĩa RAM gỡ lỗi sẽ không được tạo hoặc sử dụng để nâng cấp thiết bị có:
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
đúng -
skip_initramfs
trong dòng lệnh kernel
Android 12 GSI
Không cần hướng dẫn bổ sung để sử dụng đĩa gỡ lỗi với Android 12 GSI.
Bắt đầu từ ngày 29/09/2021, các đĩa ram gỡ lỗi không còn yêu cầu cập nhật bằng công cụ repack_bootimg
nữa. Bản dựng Android 12 GSI sau SGR1.210929.001 (7777720)
kết hợp tệp userdebug_plat_sepolicy.cil
cập nhật trong system.img
và bỏ qua userdebug_plat_sepolicy.cil
khỏi ramdisk gỡ lỗi. Xem CL để biết chi tiết.
Android 11 GSI
Khi boot-debug.img
hoặc vendor_boot-debug.img
được sử dụng, chính sách 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 chính sách cập nhật từ nhánh android11-gsi
để xây dựng lại boot-debug.img
hoặc vendor_boot-debug.img
của bạn.
Ngoài ra, công cụ repack_bootimg
có thể được sử dụng để xây dựng lại boot-debug.img
hoặc vendor_boot-debug.img
với chính sách GSI được cập nhật.
Đóng gói lại một đĩa ram gỡ lỗi
Thay vì kết hợp các thay đổi về chính sách riêng biệt để xây dựng 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 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 xuống
otatools.zip
từ https://ci.android.com . Chúng tôi khuyên bạn nên tải xuống từ các tạo phẩm xây 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 xuống
userdebug_plat_sepolicy.cil
hoặcboot-with-debug-ramdisk-${KERNEL_VERSION}.img
từ bản dựng GSI mà bạn đang sử dụng. Ví dụ: nếu bạn đang sử dụng arm64 GSI từRJR1.211020.001 (7840830)
thì hãy tải xuống từ https://ci.android.com/builds/submit/7840830 / aosp_arm64 -user/latest .Cập nhật thiết bị
boot-debug.img
hoặcvendor_boot-debug.img
vớiuserdebug_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
Các đối số của
--ramdisk_add
có thể được điều chỉnh theo cấu hình thiết bị. Xem phần tiếp theo để được giải thích chi tiết.
Đường dẫn của chính sách gỡ lỗi người dùng
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 đĩa 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
dành cho các thiết bị có androidboot.force_normal_boot=1
trong dòng lệnh kernel. Nếu không thì đườ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 root
adb shell cat /proc/cmdline | grep force_normal_boot
Bắt đầu từ Android 12, đường dẫn trong ramdisk gỡ lỗi luôn là userdebug_plat_sepolicy.cil
, bất kể sự tồn tại của androidboot.force_normal_boot=1
trong dòng lệnh kernel. Bảng sau đây hiển thị các đường dẫn trong đĩ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 |
Nhà cung cấp dành riêng cho thiết bị_boot-debug.img | 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à sang 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 sao chép tệp first_stage_ramdisk/userdebug_plat_sepolicy.cil
từ Android 11 boot-with-debug-ramdisk-5.4.img
sang first_stage_ramdisk/userdebug_plat_sepolicy.cil
trong Android 11 vendor_boot-debug.img
.
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 kernel thì lệnh sẽ được điều chỉ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 được chuyển tới --dst_bootimg
được định cấu hình làm phân vùng có chuỗi AVB thì cần phải 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 bị xích hay không.
avbtool info_image --image vendor_boot-debug.img
Nếu ban đầu nó có chân trang AVB được nối chuỗi thì cần phải thêm chân trang AVB sau khi chạy lệnh repack_bootimg
. Sử dụng bất kỳ khóa kiểm tra nào để ký vào vendor_boot-debug.img
đều hoạt động vì ramdisk gỡ lỗi chỉ có thể được sử dụng khi thiết bị được mở khóa, điều này cho phép các hình ảnh đã ký của khóa 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