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