डीबग रैमडिस्क के साथ वीटीएस टेस्टिंग

Android 10 के बाद से, चलाने के लिए इस्तेमाल की जाने वाली जेनरिक सिस्टम इमेज (जीएसआई) सीटीएस-ऑन-जीएसआई/वीटीएस अनुपालन टेस्टिंग में बदलाव किया गया रिलीज़ साइन किए जाने के लिए, userdebug से उपयोगकर्ता बिल्ड टाइप तक. यह है वीटीएस टेस्टिंग के लिए समस्या, क्योंकि वीटीएस की ज़रूरत है दौड़ना adb root है, लेकिन उपयोगकर्ता के बिल्ड डिवाइस पर adb root उपलब्ध नहीं है.

डीबग रैमडिस्क (या डीबग बूट इमेज) की शुरुआत की गई है, ताकि adb root को उपयोगकर्ता का बनाया हुआ डिवाइस जिसका बूटलोडर है अनलॉक किया गया है. इससे टेस्टिंग आसान हो जाती है सीटीएस-ऑन-जीएसआई के लिए उसी उपयोगकर्ता बिल्ड जीएसआई system.img का इस्तेमाल करके फ़्लो और जीएसआई पर वीटीएस. एसटीएस सेटअप के लिए, किसी अन्य यूज़रडीबग OEM system.img का इस्तेमाल अब भी किया जा सकता है आवश्यक.

नीचे दी गई टेबल में, नियमों का पालन करने से जुड़ी जांच के लिए, इमेज और बिल्ड टाइप में बदलाव किए गए हैं Android 10.

टेस्ट सुइट इनसे जांच करें बनाएं रैम डिस्क को डीबग करें adb रूट? Android 9 -> बिल्ड के 10 वैरिएंट में बदलाव
सीटीएस OEM का सिस्टम उपयोगकर्ता नहीं नहीं कोई बदलाव नहीं
जीएसआई पर सीटीएस जीएसआई उपयोगकर्ता नहीं नहीं

उपयोगकर्ताडीबग -> उपयोगकर्ता जीएसआई

रिलीज़ हस्ताक्षर किया गया

एसटीएस OEM का सिस्टम उपयोगकर्ता डीबग नहीं Y Q में नया
वीटीएस जीएसआई उपयोगकर्ता Y Y

उपयोगकर्ताडीबग -> उपयोगकर्ता जीएसआई

रिलीज़ हस्ताक्षर किया गया

खास जानकारी

ये अतिरिक्त इमेज फ़ाइलें बिल्ड फ़ोल्डर के तहत जनरेट की जाती हैं (${ANDROID_PRODUCT_OUT}):

  • boot-debug.img
  • vendor_boot-debug.img

जब डिवाइस के boot पार्टिशन पर boot-debug.img फ़्लैश किया जाता है, तो सिस्टम सेनीति फ़ाइल का उपयोगकर्ता डीबग वर्शन और एक अतिरिक्त प्रॉपर्टी फ़ाइल, adb_debug.prop लोड हो गए हैं. इससे यूज़र बिल्ड के साथ adb root का इस्तेमाल किया जा सकता है system.img (जीएसआई या OEM का).

इसके लिए जेनरिक कर्नेल इमेज (जीकेआई) उन डिवाइस का उपयोग कर रहे हैं जिनमें vendor_boot विभाजन है, boot-debug.img नहीं होना चाहिए फ़्लैश किया गया, क्योंकि boot विभाजन को प्रमाणित GKI इमेज के साथ फ़्लैश किया जाना चाहिए. इसके बजाय, vendor_boot-debug.img को vendor_boot पर फ़्लैश किया जाना चाहिए विभाजन.

डीबग रैमडिस्क का इस्तेमाल करने की ज़रूरी शर्तें

डीबग रैमडिस्क, OEM उपलब्ध कराता है जो अनुपालन की जांच कर रहा है. यह रिलीज़ को साइन इन नहीं किया जाना चाहिए. इसका इस्तेमाल सिर्फ़ डिवाइस के अनलॉक होने पर ही किया जा सकता है.

डीबग रैम डिस्क जनरेट नहीं की जा सकेगी. इसके अलावा, इसे इन सुविधाओं वाले डिवाइसों को अपग्रेड करने के लिए इस्तेमाल नहीं किया जा सकेगा:

  • BOARD_BUILD_SYSTEM_ROOT_IMAGE सही
  • कर्नेल कमांड लाइन में skip_initramfs

Android 12 जीएसआई

Android 12 जीएसआई के साथ डीबग रैम डिस्क का इस्तेमाल करने के लिए, किसी और निर्देश की ज़रूरत नहीं है.

डीबग रैम डिस्क को 29/09/2021 से, repack_bootimg टूल. Android 12 जीएसआई SGR1.210929.001 (7777720) के बाद के बिल्ड में अप-टू-डेट जानकारी शामिल होती है system.img में userdebug_plat_sepolicy.cil फ़ाइल मौजूद है और इसे अनदेखा कर देता है डीबग रैम डिस्क से userdebug_plat_sepolicy.cil. ज़्यादा जानकारी के लिए, इसके लिए CLs विवरण.

Android 11 जीएसआई

boot-debug.img या vendor_boot-debug.img का इस्तेमाल करने पर, सिस्टम sepolicy डीबग में userdebug_plat_sepolicy.cil फ़ाइल से लोड होती है boot-debug.img या vendor_boot-debug.img की रैम डिस्क. जीएसआई को चालू करने के लिए है, तो कृपया हमेशा android11-gsi ब्रांच का इस्तेमाल करके, अपने boot-debug.img या vendor_boot-debug.img को फिर से बनाएं.

इसके अलावा, repack_bootimg टूल का इस्तेमाल करके, boot-debug.img या vendor_boot-debug.img, जीएसआई की अपडेट की गई नीति के साथ.

डीबग रैम डिस्क को रीपैक करें

boot-debug.img को फिर से बनाने के लिए, नीति में किए गए बदलावों को शामिल करने के बजाय, पार्टनर जीएसआई की सेवा नीति फ़ाइल को boot-debug.img में अपडेट करने के लिए, repack_bootimg का इस्तेमाल किया जा सकता है (या अगर डिवाइस जीकेआई का इस्तेमाल करता है, तो vendor_boot-debug.img).

इसका तरीका यहां बताया गया है:

  1. otatools.zip से डाउनलोड करें https://ci.android.com. हमारा सुझाव है कि आप aosp_arm64-userdebug के बिल्ड आर्टफ़ैक्ट से डाउनलोड करें aosp-main को.

  2. repack_bootimg के लिए एक्ज़ीक्यूशन एनवायरमेंट सेटअप करें:

    unzip otatools.zip -d otatools
    export PATH="${PWD}/otatools/bin:${PATH}"
    repack_bootimg --help
    
  3. userdebug_plat_sepolicy.cil डाउनलोड करें या आपको जीएसआई बिल्ड से boot-with-debug-ramdisk-${KERNEL_VERSION}.img मिला है का उपयोग करके. उदाहरण के लिए, अगर आपने आर्म64 जीएसआई का इस्तेमाल RJR1.211020.001 (7840830), फिर यहां से डाउनलोड करें https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest.

  4. 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 के आर्ग्युमेंट को डिवाइस के हिसाब से अडजस्ट किया जा सकता है कॉन्फ़िगरेशन. ज़्यादा जानकारी के लिए अगला सेक्शन देखें करें.

उपयोगकर्ता डीबग sepolicy का पाथ

ऊपर दी गई repack_bootimg फ़ाइल, userdebug_plat_sepolicy.cil --src_bootimg की रैम डिस्क और --dst_bootimg की रैम डिस्क. हालांकि, जिस पाथ अलग-अलग 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 और उसके बाद के वर्शन में, डीबग का पाथ ramdisk हमेशा userdebug_plat_sepolicy.cil होती है, भले ही वह मौजूद हो androidboot.force_normal_boot=1 कर्नेल कमांड लाइन में. नीचे दिए गए टेबल में, Android के अलग-अलग वर्शन के डीबग रैम डिस्क के पाथ दिखाए गए हैं.

इमेज डीबग करें Android 10 Android 11 Android 12
जीकेआई बूट-विद-debug-ramdisk-${KERNEL_VERSION}.img लागू नहीं first_stage_ramdisk/userdebug_plat_sepolicy.cil userdebug_plat_sepolicy.cil
डिवाइस के लिए बूट-debug.img यह force_normal_boot पर निर्भर करता है यह force_normal_boot पर निर्भर करता है userdebug_plat_sepolicy.cil
डिवाइस के हिसाब से वेंडर_boot-debug.img लागू नहीं यह force_normal_boot पर निर्भर करता है userdebug_plat_sepolicy.cil

--ramdisk_add का इस्तेमाल करके, अलग-अलग पाथ से फ़ाइलों को कॉपी किया जा सकता है. src_path:dst_path जोड़े की सूची. उदाहरण के लिए, नीचे दी गई कमांड कॉपी Android 11 boot-with-debug-ramdisk-5.4.img से लेकर first_stage_ramdisk/userdebug_plat_sepolicy.cil तक 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

अगर --dst_bootimg को भेजी गई इमेज, एवीबी-चेन सेगमेंट में, repack_bootimg चलाने के बाद AVB फ़ुटर को जोड़ना ज़रूरी है आदेश.

उदाहरण के लिए, repack_bootimg चलाने से पहले, नीचे दिए गए निर्देश को देखें कि vendor_boot-debug.img में एक चेन वाला AVB फ़ुटर है या नहीं.

avbtool info_image --image vendor_boot-debug.img

अगर इसमें मूल रूप से चेन किया गया AVB फ़ुटर है, तो एक एवीबी फ़ुटर जोड़ना ज़रूरी है repack_bootimg कमांड चलाने के बाद. साइन करने के लिए किसी भी परीक्षण कुंजी का उपयोग करना 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