Android 10 以降、 CTS-on-GSI/VTSコンプライアンス テストの実行に使用されるGeneric System Image (GSI) は、リリース署名するために userdebug からユーザー ビルド タイプに変更されました。 VTS を実行するにはadb root
が必要ですが、ユーザー ビルド デバイスではadb root
を使用できないため、これは VTS テストの問題です。
ブートローダーがロック解除されているユーザー ビルド デバイスでadb root
を有効にするために、デバッグ RAM ディスク (またはデバッグ ブート イメージ) が導入されました。これにより、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 | GSI | ユーザー | N | N | userdebug -> ユーザー GSI リリース署名済み |
STS | OEMのシステム | ユーザーデバッグ | N | よ | Q の新機能 |
VTS | GSI | ユーザー | よ | よ | userdebug -> ユーザー GSI リリース署名済み |
概要
これらの追加のイメージ ファイルは、ビルド フォルダー ( ${ANDROID_PRODUCT_OUT}
) の下に生成されます。
-
boot-debug.img
-
vendor_boot-debug.img
boot-debug.img
がデバイスのboot
パーティションにフラッシュされると、システム sepolicy ファイルの userdebug バージョンと追加のプロパティ ファイルadb_debug.prop
が読み込まれます。これにより、ユーザー ビルドsystem.img
(GSI または OEM) でadb root
が許可されます。
vendor_boot
パーティションを持つデバイスを使用するGeneric Kernel Image (GKI)の場合、 boot
パーティションは認定された GKI イメージでフラッシュする必要があるため、 boot-debug.img
をフラッシュする必要はありません。代わりに、デバッグ RAM ディスクを容易にするために、 vendor_boot-debug.img
をvendor_boot
パーティションにフラッシュする必要があります。
デバッグ RAM ディスクを使用するための前提条件
デバッグ RAM ディスクは、コンプライアンス テストを実行する OEM によって提供されます。リリース署名されていてはならず、デバイスのロックが解除されている場合にのみ使用できます。
デバッグ ramdisk は生成されず、次のデバイスのアップグレードには使用されません。
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
真 - カーネルコマンドラインの
skip_initramfs
Android 12 GSI
Android 12 GSI でデバッグ RAM ディスクを使用するために、追加の指示は必要ありません。
2021 年 9 月 29 日以降、デバッグ RAM ディスクをrepack_bootimg
ツールで更新する必要がなくなりました。 SGR1.210929.001 (7777720)
以降の Android 12 GSI ビルドでは、 system.img
に最新のuserdebug_plat_sepolicy.cil
ファイルが組み込まれ、デバッグ RAM ディスクからuserdebug_plat_sepolicy.cil
が無視されます。詳細については、 CLを参照してください。
Android 11 GSI
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-master
の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 の ramdisk から--src_bootimg
の ramdisk に--dst_bootimg
します。ただし、デバッグ 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 バージョンのデバッグ ramdisk 内のパスを示しています。
デバッグ画像 | アンドロイド 10 | 人造人間11号 | 人造人間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 |
デバイス固有の 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 フッターを追加する必要があります。テスト キーを使用してvendor_boot-debug.img
に署名すると、デバイスのロックが解除されている場合にのみデバッグ RAM ディスクを使用でき、 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