從 Android 10 開始,
用來執行的通用系統映像檔 (GSI)
GSI/VTS 的 CTS 法規遵循測試已變更
以便進行簽署。這是
因為 VTS 需要
要執行 adb root
,但
使用者組建裝置不支援 adb root
。
我們導入了偵錯 ramdisk (或偵錯開機映像檔),以啟用 adb root
上的
系統啟動載入程式,
解鎖。因此能簡化測試程序
資料流,方法是針對 CTS-on-GSI 使用相同的使用者建構 GSI system.img
採用 GSI 的 VTS。設定 STS 時,使用其他使用者偵錯原始設備製造商 (OEM) system.img
仍
這通常代表交易
不會十分要求關聯語意
下表顯示為了合規性測試而實施的映像檔和建構類型變更。 Android 10。
測試套件 | 測試 | 建構 | 偵錯 ramdisk | ADB 根? | Android 9 ->10 項建構變數變更 |
---|---|---|---|---|---|
康乃狄克州 | 原始設備製造商 (OEM) 的系統 | 使用者 | 否 | 否 | 沒有變化 |
GSI 的 CTS | GSI | 使用者 | 否 | 否 | 使用者偵錯 ->使用者 GSI 已簽署的版本 |
STS | 原始設備製造商 (OEM) 的系統 | 使用者偵錯 | 否 | 是 | 第 季新功能 |
VTS | GSI | 使用者 | 是 | 是 | 使用者偵錯 ->使用者 GSI 已簽署的版本 |
總覽
這些額外映像檔檔案會在 build 資料夾中產生
(${ANDROID_PRODUCT_OUT}
):
boot-debug.img
vendor_boot-debug.img
當 boot-debug.img
刷新到裝置的 boot
分區時,
系統 sepolicy 檔案以及其他屬性檔案的使用者偵錯版本
已載入 adb_debug.prop
。這樣一來,adb root
就能包含使用者建構作業
system.img
(GSI 或原始設備製造商 (OEM))。
適用對象
通用核心映像檔 (GKI)
使用含有 vendor_boot
分區的裝置,則不得 boot-debug.img
閃爍,因為 boot
分區必須使用通過認證的 GKI 映像檔刷新。
請改為將 vendor_boot-debug.img
刷新到 vendor_boot
以便處理 ramdisk 偵錯作業。
使用偵錯 ramdisk 的必要條件
偵錯 ramdisk 是由執行法規遵循測試的原始設備製造商 (OEM) 提供。這項服務 且不得發布簽署,且只能在裝置解鎖時使用。
如果裝置符合以下條件,系統就不會產生偵錯 ramdisk,或使用以下方法:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
是- 核心指令列中的
skip_initramfs
Android 12 GSI
在 Android 12 GSI 中使用偵錯 ramdisk 時不需要額外指示。
自 2021 年 9 月 29 日起,偵錯 ramdisks 不再需要使用
repack_bootimg
工具。Android 12 GSI
SGR1.210929.001 (7777720)
之後的建構整合了
由 system.img
中的 userdebug_plat_sepolicy.cil
檔案並忽略
userdebug_plat_sepolicy.cil
來自偵錯 ramdisk。詳情請參閱
CLs:
詳細資料。
Android 11 GSI
使用 boot-debug.img
或 vendor_boot-debug.img
時,系統會
已從偵錯的 userdebug_plat_sepolicy.cil
檔案載入 Sepolicy
boot-debug.img
或 vendor_boot-debug.img
的 ramdisk。為了啟動 GSI
圖像,請務必遵守
android11-gsi
敬上
即可重新建構 boot-debug.img
或 vendor_boot-debug.img
。
或者,repack_bootimg
工具可用來重新建構
boot-debug.img
或 vendor_boot-debug.img
搭配更新後的 GSI 通用政策。
重新封裝偵錯 ramdisk
合作夥伴不是為了重建 boot-debug.img
而導入季節性變更
可以使用 repack_bootimg
將 GSI 的加密檔案更新為 boot-debug.img
(如果裝置使用 GKI,則為 vendor_boot-debug.img
)。
相關步驟如下:
從以下位置下載
otatools.zip
: https://ci.android.com。 建議您從aosp_arm64-userdebug
的建構構件下載 日期:aosp-main
。設定
repack_bootimg
的執行環境:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
下載
userdebug_plat_sepolicy.cil
或 能讓您的 GSI 版本產生boot-with-debug-ramdisk-${KERNEL_VERSION}.img
使用方式。例如,假設您在某個 VM 中RJR1.211020.001 (7840830)
,然後從以下應用程式下載: https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest。使用以下裝置更新裝置
boot-debug.img
或vendor_boot-debug.img
:userdebug_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
透過
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
可根據裝置調整
--ramdisk_add
的引數 儲存空間設定詳情請參閱下一節 解釋。
使用者偵錯政策的路徑
以上repack_bootimg
複製 userdebug_plat_sepolicy.cil
檔案,
--src_bootimg
的 ramdisk 到 --dst_bootimg
的 ramdisk。不過路徑
偵錯 ramdisk 內的 Android 版本可能會有所不同。於
Android 10 和 11 的路徑
first_stage_ramdisk/userdebug_plat_sepolicy.cil
適用於符合下列條件的裝置:
androidboot.force_normal_boot=1
。否則,
路徑為 userdebug_plat_sepolicy.cil
。
執行下列指令,檢查是否有 androidboot.force_normal_boot
編寫程式碼:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
從 Android 12 開始,偵錯中的路徑
無論userdebug_plat_sepolicy.cil
androidboot.force_normal_boot=1
。下列
表格,顯示偵錯 ramdisk 在不同 Android 版本中的路徑。
對圖片進行偵錯 | Android 10 | Android 11 | Android 12 |
---|---|---|---|
GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | 無 | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
裝置專屬的 boot-debug.img | 取決於 force_normal_boot | 取決於 force_normal_boot | userdebug_plat_sepolicy.cil |
裝置專屬的 provider_boot-debug.img | 無 | 取決於 force_normal_boot | userdebug_plat_sepolicy.cil |
您可以指定 --ramdisk_add
,以使用
列出 src_path:dst_path
配對組合。舉例來說,下列指令
將 first_stage_ramdisk/userdebug_plat_sepolicy.cil
檔案從 Android 11 boot-with-debug-ramdisk-5.4.img
傳送至
Android 11 vendor_boot-debug.img
中的 first_stage_ramdisk/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:first_stage_ramdisk/userdebug_plat_sepolicy.cil
如果核心指令列中沒有 androidboot.force_normal_boot=1
,
那麼指令應如下調整,將目的地路徑變更為
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
新增 AVB 頁尾
如果傳遞至 --dst_bootimg
的映像檔已設定為
AVB 鏈結
因此,執行 repack_bootimg
後,必須新增 AVB 頁尾
指令
例如,在執行 repack_bootimg
「之前」,請執行下列指令,
檢查 vendor_boot-debug.img
是否含有鏈結 AVB 頁尾。
avbtool info_image --image vendor_boot-debug.img
如果原本使用鏈結 AVB 頁尾,則須新增 AVB 頁尾
在執行 repack_bootimg
指令之後。使用任一測試金鑰簽署
vendor_boot-debug.img
正常運作,因為偵錯 ramdisk 只能在
裝置已解鎖,因此允許在 boot
或
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