Android 10 以降、 CTS-on-GSI/VTSコンプライアンス テストの実行に使用される汎用システム イメージ(GSI) は、リリース署名されるために userdebug からユーザー ビルド タイプに変更されました。 VTS の実行にはadb root
必要ですが、ユーザー ビルド デバイスではadb root
使用できないため、これは VTS テストにとって問題です。
デバッグ RAM ディスク (またはデバッグ ブート イメージ) は、ブートローダーがロック解除されているユーザー ビルド デバイスでadb root
有効にするために導入されました。これにより、CTS-on-GSI と VTS-on-GSI に同じユーザー ビルド GSI system.img
を使用することにより、テスト フローが簡素化されます。 STS セットアップの場合は、別の userdebug OEM system.img
を使用する必要があります。
次の表は、Android 10 でのコンプライアンス テストのイメージとビルド タイプの変更を示しています。
テストスイート | でテストします | 建てる | RAMディスクをデバッグする | adbルート? | Android 9 -> 10 ビルド バリアントの変更 |
---|---|---|---|---|---|
CTS | OEMのシステム | ユーザー | N | N | 変化なし |
CTS-on-GSI | 地理院 | ユーザー | N | N | ユーザーデバッグ -> ユーザー GSI リリース署名済み |
STS | OEMのシステム | ユーザーデバッグ | N | Y | Qの新機能 |
VTS | 地理院 | ユーザー | Y | Y | ユーザーデバッグ -> ユーザー GSI リリース署名済み |
概要
これらの追加のイメージ ファイルは、ビルド フォルダー ( ${ANDROID_PRODUCT_OUT}
) の下に生成されます。
-
boot-debug.img
-
vendor_boot-debug.img
boot-debug.img
デバイスのboot
パーティションにフラッシュされると、システム sepolicy ファイルの userdebug バージョンと追加のプロパティ ファイルadb_debug.prop
がロードされます。これにより、ユーザー build system.img
(GSI または OEM のいずれか) でのadb root
が許可されます。
ブート パーティションは認定された GKI イメージでフラッシュする必要があるため、 vendor_boot
パーティションを持つデバイスを使用する汎用カーネル イメージ (GKI)の場合、 boot
boot-debug.img
をフラッシュしてはなりません。代わりに、ramdisk のデバッグを容易にするために、 vendor_boot-debug.img
vendor_boot
パーティションにフラッシュする必要があります。
デバッグ RAM ディスクを使用するための前提条件
デバッグ RAM ディスクは、コンプライアンス テストを実行する OEM によって提供されます。リリース署名されていてはならず、デバイスがロック解除されている場合にのみ使用できます。
デバッグ RAM ディスクは、次のデバイスをアップグレードするために生成または使用されません。
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
true - カーネルコマンドラインの
skip_initramfs
アンドロイド12GSI
Android 12 GSI でデバッグ RAM ディスクを使用するために追加の指示は必要ありません。
2021 年 9 月 29 日以降、デバッグ RAM ディスクはrepack_bootimg
ツールを使用して更新する必要がなくなりました。 SGR1.210929.001 (7777720)
以降の Android 12 GSI ビルドでは、最新のuserdebug_plat_sepolicy.cil
ファイルがsystem.img
に組み込まれ、デバッグ RAM ディスクのuserdebug_plat_sepolicy.cil
が無視されます。詳細についてはCL を参照してください。
アンドロイド11GSI
boot-debug.img
またはvendor_boot-debug.img
が使用される場合、システム sepolicy は、 boot-debug.img
またはvendor_boot-debug.img
のデバッグ RAM ディスク内のuserdebug_plat_sepolicy.cil
ファイルからロードされます。 GSI イメージをブートするには、常にandroid11-gsi
ブランチから最新の sepolicy 変更を組み込み、 boot-debug.img
またはvendor_boot-debug.img
を再構築してください。
あるいは、 repack_bootimg
ツールを使用して、更新された GSI sepolicy でboot-debug.img
またはvendor_boot-debug.img
を再構築することもできます。
デバッグ RAM ディスクを再パックする
sepolicy の変更を組み込んでboot-debug.img
を再構築する代わりに、パートナーはrepack_bootimg
を使用して GSI sepolicy ファイルをboot-debug.img
(デバイスが GKI を使用している場合はvendor_boot-debug.img
) に更新できます。
手順は次のとおりです。
https://ci.android.comから
otatools.zip
をダウンロードします。aosp-main
のaosp_arm64-userdebug
のビルド アーティファクトからダウンロードすることをお勧めします。repack_bootimg
の実行環境をセットアップします。unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
使用している GSI ビルドから
userdebug_plat_sepolicy.cil
またはboot-with-debug-ramdisk-${KERNEL_VERSION}.img
をダウンロードします。たとえば、RJR1.211020.001 (7840830)
の arm64 GSI を使用している場合は、 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
の引数は、デバイスの構成に応じて調整できます。詳細な説明については、次のセクションを参照してください。
userdebug sepolicy のパス
上記のrepack_bootimg
、ファイルuserdebug_plat_sepolicy.cil
を--src_bootimg
の RAM ディスクから--dst_bootimg
の RAM ディスクにコピーします。ただし、デバッグ RAM ディスク内のパスは Android バージョンによって異なる場合があります。 Android 10 および 11 では、カーネル コマンド ラインでandroidboot.force_normal_boot=1
が設定されているデバイスのパスは、 first_stage_ramdisk/userdebug_plat_sepolicy.cil
です。それ以外の場合、パスはuserdebug_plat_sepolicy.cil
です。
次のコマンドを実行して、カーネル コマンド ラインにandroidboot.force_normal_boot
があるかどうかを確認します。
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
Android 12 以降、カーネル コマンド ラインにandroidboot.force_normal_boot=1
が存在するかどうかに関係なく、デバッグ RAM ディスク内のパスは常にuserdebug_plat_sepolicy.cil
になります。次の表は、さまざまな Android バージョンのデバッグ RAM ディスク内のパスを示しています。
デバッグイメージ | アンドロイド10 | アンドロイド11 | アンドロイド12 |
---|---|---|---|
デバッグ RAM ディスクを使用した GKI ブート-${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 |
デバイス固有のvendor_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 フッターがある場合は、 repack_bootimg
コマンドの実行後にAVB フッターを追加する必要があります。デバッグ RAM ディスクはデバイスのロックが解除されている場合にのみ使用できるため、任意のテスト キーを使用してvendor_boot-debug.img
に署名すると機能します。これにより、 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