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

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

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

নিম্নলিখিত টেবিলটি অ্যান্ড্রয়েড ১০-এ কমপ্লায়েন্স পরীক্ষার জন্য চিত্র এবং বিল্ড ধরণের পরিবর্তনগুলি দেখায়।

টেস্ট স্যুট এর সাথে পরীক্ষা করুন নির্মাণ করুন র‍্যামডিস্ক ডিবাগ করুন অ্যাডবি রুট? অ্যান্ড্রয়েড ৯ -> ১০ বিল্ড ভেরিয়েন্টে পরিবর্তন
সিটিএস OEM এর সিস্টেম ব্যবহারকারী কোন পরিবর্তন নেই
সিটিএস-অন-জিএসআই জিএসআই ব্যবহারকারী

ইউজারডিবাগ -> ইউজার জিএসআই

স্বাক্ষরিত রিলিজ

এসটিএস OEM এর সিস্টেম ইউজারডিবাগ Q তে নতুন
ভিটিএস জিএসআই ব্যবহারকারী

ইউজারডিবাগ -> ইউজার জিএসআই

স্বাক্ষরিত রিলিজ

সংক্ষিপ্ত বিবরণ

এই অতিরিক্ত চিত্র ফাইলগুলি বিল্ড ফোল্ডারের অধীনে তৈরি করা হয় ( ${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 অনুমতি দেয়।

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

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

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

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

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

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

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

০৯/২৯/২০২১ থেকে, ডিবাগ র‍্যামডিস্কগুলিকে আর repack_bootimg টুল দিয়ে আপডেট করার প্রয়োজন হবে না। SGR1.210929.001 (7777720) এর পরে অ্যান্ড্রয়েড 12 GSI বিল্ডটি তার system.img এ আপ-টু-ডেট userdebug_plat_sepolicy.cil ফাইলটি অন্তর্ভুক্ত করে এবং ডিবাগ র‍্যামডিস্ক থেকে userdebug_plat_sepolicy.cil উপেক্ষা করে। বিস্তারিত জানার জন্য CL গুলি দেখুন।

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

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

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

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

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

ধাপগুলো নিম্নরূপ:

  1. https://ci.android.com থেকে otatools.zip ডাউনলোড করুন। আমরা aosp-android-latest-release শাখায় aosp_cf_arm64_only_phone-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 এর ramdisk এ কপি করে। তবে, বিভিন্ন Android সংস্করণে একটি ডিবাগ ramdisk এর মধ্যে পাথ ভিন্ন হতে পারে। 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

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

ছবি ডিবাগ করুন অ্যান্ড্রয়েড ১০ অ্যান্ড্রয়েড ১১ অ্যান্ড্রয়েড ১২
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

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