ডিবাগ রামডিস্ক সহ VTS পরীক্ষা

Android 10 থেকে, CTS-on-GSI/VTS কমপ্লায়েন্স টেস্টিং চালানোর জন্য ব্যবহৃত জেনেরিক সিস্টেম ইমেজ (GSI) ইউজারডিবাগ থেকে ইউজার বিল্ড টাইপে পরিবর্তিত হয়েছে যাতে রিলিজ স্বাক্ষরিত হয়। এটি ভিটিএস পরীক্ষার জন্য একটি সমস্যা কারণ ভিটিএস চালানোর জন্য adb root প্রয়োজন, কিন্তু ব্যবহারকারী বিল্ড ডিভাইসে adb root উপলব্ধ নয়।

ডিবাগ র‌্যামডিস্ক (বা ডিবাগ বুট ইমেজ) একটি ব্যবহারকারী বিল্ড ডিভাইসে adb root সক্রিয় করার জন্য চালু করা হয়েছে যার বুটলোডার আনলক করা আছে। এটি CTS-on-GSI এবং VTS-on-GSI-এর জন্য একই ব্যবহারকারী বিল্ড GSI system.img ব্যবহার করে পরীক্ষার প্রবাহকে সহজ করে। STS সেটআপের জন্য, অন্য userdebug OEM system.img ব্যবহার করা এখনও প্রয়োজন।

নিম্নলিখিত সারণীটি Android 10-এ সম্মতি পরীক্ষার জন্য চিত্র এবং বিল্ড টাইপের পরিবর্তনগুলি দেখায়৷

পরীক্ষা স্যুট সঙ্গে পরীক্ষা নির্মাণ করুন রামডিস্ক ডিবাগ করুন adb root? Android 9 -> 10 বিল্ড ভেরিয়েন্ট পরিবর্তন
সিটিএস OEM এর সিস্টেম ব্যবহারকারী এন এন পরিবর্তন নেই
CTS-অন-GSI জিএসআই ব্যবহারকারী এন এন

userdebug -> ব্যবহারকারী জিএসআই

মুক্তি স্বাক্ষরিত

এসটিএস OEM এর সিস্টেম userdebug এন Y প্রশ্নে নতুন
ভিটিএস জিএসআই ব্যবহারকারী Y Y

userdebug -> ব্যবহারকারী জিএসআই

মুক্তি স্বাক্ষরিত

ওভারভিউ

এই অতিরিক্ত চিত্র ফাইলগুলি বিল্ড ফোল্ডারের অধীনে তৈরি করা হয় ( ${ANDROID_PRODUCT_OUT} ):

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

যখন boot-debug.img ডিভাইসের boot পার্টিশনে ফ্ল্যাশ করা হয়, তখন সিস্টেম সেপলিসি ফাইলের userdebug সংস্করণ এবং একটি অতিরিক্ত সম্পত্তি ফাইল, adb_debug.prop লোড হয়। এটি ব্যবহারকারী বিল্ড system.img (হয় GSI এর বা OEM এর) সাথে adb root অনুমতি দেয়।

একটি vendor_boot পার্টিশন আছে এমন ডিভাইস ব্যবহার করে জেনেরিক কার্নেল ইমেজ (GKI) এর জন্য, boot-debug.img ফ্ল্যাশ করা উচিত নয়, কারণ boot পার্টিশন অবশ্যই একটি প্রত্যয়িত GKI ইমেজ দিয়ে ফ্ল্যাশ করা উচিত। পরিবর্তে vendor_boot-debug.img ডিবাগ ramdisk সুবিধার জন্য vendor_boot পার্টিশনে ফ্ল্যাশ করা উচিত।

একটি ডিবাগ রামডিস্ক ব্যবহার করার পূর্বশর্ত

ডিবাগ র‍্যামডিস্কটি কমপ্লায়েন্স পরীক্ষা চালানো OEM দ্বারা সরবরাহ করা হয়। এটি অবশ্যই স্বাক্ষরিত প্রকাশ করা উচিত নয় এবং ডিভাইসটি আনলক করা থাকলেই এটি ব্যবহার করা যেতে পারে৷

ডিবাগ রামডিস্ক তৈরি করা হবে না বা ডিভাইস আপগ্রেড করার জন্য ব্যবহার করা হবে না:

  • BOARD_BUILD_SYSTEM_ROOT_IMAGE সত্য
  • কার্নেল কমান্ড লাইনে skip_initramfs

অ্যান্ড্রয়েড 12 জিএসআই

অ্যান্ড্রয়েড 12 জিএসআই-এর সাথে ডিবাগ রামডিস্ক ব্যবহার করার জন্য কোনও অতিরিক্ত নির্দেশের প্রয়োজন নেই।

09/29/2021 থেকে শুরু করে, ডিবাগ রামডিস্কের আর repack_bootimg টুল দিয়ে আপডেট করার প্রয়োজন নেই। SGR1.210929.001 (7777720) এর পরে Android 12 GSI বিল্ড আপ-টু-ডেট userdebug_plat_sepolicy.cil ফাইলটিকে তার system.img এ অন্তর্ভুক্ত করে এবং ডিবাগ রামডিস্ক থেকে userdebug_plat_sepolicy.cil উপেক্ষা করে। বিস্তারিত জানার জন্য CLs দেখুন।

অ্যান্ড্রয়েড 11 জিএসআই

যখন boot-debug.img বা vendor_boot-debug.img ব্যবহার করা হয়, boot-debug.img বা vendor_boot-debug.img এর ডিবাগ রামডিস্কে userdebug_plat_sepolicy.cil ফাইল থেকে সিস্টেম সেপলিসি লোড হয়। GSI ইমেজ বুট করার জন্য, অনুগ্রহ করে সবসময় আপনার boot-debug.img বা vendor_boot-debug.img পুনর্নির্মাণ করতে android11-gsi শাখা থেকে আপ-টু-ডেট সেপলিসি পরিবর্তনগুলি অন্তর্ভুক্ত করুন।

বিকল্পভাবে, repack_bootimg টুলটি আপডেট করা GSI সেপলিসি সহ একটি boot-debug.img বা vendor_boot-debug.img পুনর্নির্মাণ করতে ব্যবহার করা যেতে পারে।

একটি ডিবাগ রামডিস্ক পুনরায় প্যাক করুন

boot-debug.img পুনঃনির্মাণে সেপলিসি পরিবর্তনগুলি অন্তর্ভুক্ত করার পরিবর্তে, অংশীদাররা repack_bootimg ব্যবহার করে GSI সেপলিসি ফাইলটিকে boot-debug.img (অথবা vendor_boot-debug.img ডিভাইসটি GKI ব্যবহার করলে) আপডেট করতে পারে।

নিম্নরূপ পদক্ষেপ:

  1. https://ci.android.com থেকে otatools.zip ডাউনলোড করুন। আমরা aosp-mainaosp_arm64-userdebug এর বিল্ড আর্টিফ্যাক্ট থেকে ডাউনলোড করার পরামর্শ দিই।

  2. repack_bootimg এর জন্য এক্সিকিউশন এনভায়রনমেন্ট সেটআপ করুন:

    unzip otatools.zip -d otatools
    export PATH="${PWD}/otatools/bin:${PATH}"
    repack_bootimg --help
    
  3. আপনি যে 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 থেকে ডাউনলোড করুন।

  4. userdebug_plat_sepolicy.cil দিয়ে ডিভাইস boot-debug.img বা vendor_boot-debug.img আপডেট করুন :

    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 এর রামডিস্কে কপি করে। যাইহোক, বিভিন্ন 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

অ্যান্ড্রয়েড 12 থেকে শুরু করে, কার্নেল কমান্ড লাইনে androidboot.force_normal_boot=1 এর অস্তিত্ব নির্বিশেষে একটি ডিবাগ র‌্যামডিস্কের পাথ সর্বদা userdebug_plat_sepolicy.cil হয়। নিম্নলিখিত সারণী বিভিন্ন Android সংস্করণে একটি ডিবাগ র‌্যামডিস্কের মধ্যে পথ দেখায়।

ছবি ডিবাগ করুন অ্যান্ড্রয়েড 10 অ্যান্ড্রয়েড 11 অ্যান্ড্রয়েড 12
GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img N/A first_stage_ramdisk/userdebug_plat_sepolicy.cil userdebug_plat_sepolicy.cil
ডিভাইস-নির্দিষ্ট boot-debug.img force_normal_boot এর উপর নির্ভর করে force_normal_boot এর উপর নির্ভর করে userdebug_plat_sepolicy.cil
ডিভাইস-নির্দিষ্ট বিক্রেতা_boot-debug.img N/A force_normal_boot এর উপর নির্ভর করে userdebug_plat_sepolicy.cil

আপনি src_path:dst_path জোড়ার তালিকা সহ বিভিন্ন পাথ থেকে ফাইল কপি করতে --ramdisk_add নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি একটি Android 11 boot-with-debug-ramdisk-5.4.img থেকে first_stage_ramdisk first_stage_ramdisk/userdebug_plat_sepolicy.cil ফাইল first_stage_ramdisk/userdebug_plat_sepolicy.cil অনুলিপি করে একটি 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

যদি কার্নেল কমান্ড লাইনে কোনো 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 এ পাস করা ইমেজটি যদি 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 সাইন করার জন্য যেকোন টেস্ট কী ব্যবহার করা কাজ করে কারণ ডিবাগ র‍্যামডিস্ক শুধুমাত্র তখনই ব্যবহার করা যেতে পারে যখন একটি ডিভাইস আনলক করা থাকে, যা 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