Android 10 ও এর পরের যেকোনও ভার্সনে, রিলিজ সাইন করার জন্য
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 এখনও
প্রয়োজন।
নিচের সারণীতে Android 10-এ কমপ্লায়েন্স টেস্টিংয়ের জন্য ইমেজ ও বিল্ডের ধরনের পরিবর্তন দেখানো হয়েছে।
| টেস্ট স্যুট | এটি দিয়ে টেস্ট করুন | বিল্ড | Debug ramdisk | adb root? | Android 9 -> 10 বিল্ড ভ্যারিয়েন্ট পরিবর্তন |
|---|---|---|---|---|---|
| CTS | OEM-এর সিস্টেম | ব্যবহারকারী | না | না | কোনও পরিবর্তন হয়নি |
| CTS-on-GSI | GSI | ব্যবহারকারী | না | না | userdebug -> user GSI রিলিজ স্বাক্ষরিত হয়েছে |
| STS | OEM-এর সিস্টেম | userdebug | না | Y | Q ভার্সনে নতুন |
| VTS | GSI | ব্যবহারকারী | Y | Y | userdebug -> user GSI রিলিজ সাইন করা হয়েছে |
এক নজরে
এইসব অতিরিক্ত ছবির ফাইল বিল্ড ফোল্ডারে তৈরি করা হয়
(${ANDROID_PRODUCT_OUT}):
boot-debug.imgvendor_boot-debug.img
ডিভাইসের boot পার্টিশনে boot-debug.img ফ্ল্যাশ করা হলে, সিস্টেম sepolicy ফাইলের userdebug ভার্সন এবং একটি অতিরিক্ত প্রপার্টি ফাইল,
adb_debug.prop, লোড করা হয়। এটি ব্যবহারকারীর বিল্ড
system.img (GSI বা OEM) সহ adb root-কে অনুমতি দেয়।
vendor_boot পার্টিশন আছে এমন ডিভাইস ব্যবহার করে
জেনেরিক কার্নেল ইমেজ (GKI)-এর জন্য
boot-debug.img ফ্ল্যাশ করা যাবে না, কারণ boot পার্টিশনকে অবশ্যই সার্টিফায়েড GKI ইমেজ দিয়ে ফ্ল্যাশ করতে হবে।
এর পরিবর্তে, vendor_boot-debug.img-কে vendor_boot
পার্টিশনে ফ্ল্যাশ করতে হবে যাতে debug ramdisk-এর সুবিধা পাওয়া যায়।
ডিবাগ র্যামডিস্ক ব্যবহার করার জন্য পূর্বশর্ত
কমপ্লায়েন্স টেস্ট চালানো OEM-এর মাধ্যমে ডিবাগ রামডিস্ক প্রদান করা হয়। এটি রিলিজ সাইন করা হলে চলবে না এবং ডিভাইস আনলক করা থাকলেই শুধুমাত্র এটি ব্যবহার করা যাবে।
এইসব ডিভাইসের ক্ষেত্রে ডিবাগ র্যামডিস্ক তৈরি বা ব্যবহার করা হবে না:
BOARD_BUILD_SYSTEM_ROOT_IMAGEটি সত্যskip_initramfsকার্নেল কমান্ড লাইনে
Android 12 GSI
Android 12 GSI-এর সাথে debug ramdisk ব্যবহার করার জন্য কোনও অতিরিক্ত নির্দেশাবলী প্রয়োজন নেই।
২৯/০৯/২০২১ থেকে, ডিবাগ র্যামডিস্ককে আর
repack_bootimg টুল দিয়ে আপডেট করতে হবে না। Android 12 GSI
SGR1.210929.001 (7777720)-এর পরে তৈরি করা ভার্সনে system.img-এ আপ-টু-ডেট
userdebug_plat_sepolicy.cil ফাইল অন্তর্ভুক্ত করা হয় এবং debug ramdisk থেকে userdebug_plat_sepolicy.cil উপেক্ষা করা হয়।
বিস্তারিত জানতে
CL দেখুন।
Android 11 GSI
boot-debug.img বা vendor_boot-debug.img ব্যবহার করা হলে, সিস্টেম
sepolicy boot-debug.img বা vendor_boot-debug.img-এর ডিবাগ
র্যামডিস্কের userdebug_plat_sepolicy.cil ফাইল থেকে লোড হয়। GSI
ইমেজ বুট করার জন্য, আপনার boot-debug.img বা vendor_boot-debug.img রিবিল্ড করতে, সবসময়
android11-gsi
ব্রাঞ্চ থেকে আপ-টু-ডেট sepolicy পরিবর্তন অন্তর্ভুক্ত করুন।
অথবা, আপডেট করা GSI sepolicy সহ boot-debug.img বা vendor_boot-debug.img রিবিল্ড করতে repack_bootimg টুল ব্যবহার করা যেতে পারে।
ডিবাগ রামডিস্ক আবার প্যাক করা
boot-debug.img রিবিল্ড করার জন্য sepolicy পরিবর্তন অন্তর্ভুক্ত করার পরিবর্তে, পার্টনাররা
boot-debug.img-এ GSI sepolicy ফাইল আপডেট করতে repack_bootimg ব্যবহার করতে পারেন
(অথবা ডিভাইস GKI ব্যবহার করলে vendor_boot-debug.img)।
ধাপগুলি নিচে উল্লেখ করা হল:
otatools.zipথেকে https://ci.android.com ডাউনলোড করুন। আমরাaosp-android-latest-releaseব্র্যাঞ্চেaosp_cf_arm64_only_phone-userdebug-এর বিল্ড আর্টিফ্যাক্ট থেকে ডাউনলোড করার সাজেশন দিই।repack_bootimg-এর জন্য এক্সিকিউশন এনভায়রনমেন্ট সেট-আপ করুন:unzip otatools.zip -d otatoolsexport 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 GKIrepack_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.cilboot-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 GKIrepack_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-এর
র্যামডিস্ক থেকে --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 rootadb shell cat /proc/cmdline | grep force_normal_boot
Android 12 ও এর পরের যেকোনও ভার্সনে, debug
ramdisk-এর মধ্যে পাথ সবসময় userdebug_plat_sepolicy.cil হয়, কার্নেল কমান্ড লাইনে
androidboot.force_normal_boot=1 থাকুক বা না থাকুক। নিচের
টেবিলে বিভিন্ন Android ভার্সনে একটি ডিবাগ র্যামডিস্কের মধ্যে পাথ দেখানো হয়েছে।
| ডিবাগ ছবি | Android 10 | Android 11 | Android 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 |
| ডিভাইস-নির্দিষ্ট vendor_boot-debug.img | N/A | force_normal_boot-এর উপর নির্ভর করে | userdebug_plat_sepolicy.cil |
আপনি --ramdisk_add নির্দিষ্ট করতে পারেন যাতে src_path:dst_path পেয়ারের তালিকা সহ বিভিন্ন পাথ থেকে এবং বিভিন্ন পাথে ফাইল কপি করা যায়। যেমন, নিম্নলিখিত কমান্ডটি
Android 11 থেকে
first_stage_ramdisk/userdebug_plat_sepolicy.cil ফাইলfirst_stage_ramdisk/userdebug_plat_sepolicy.cil কপি করে
boot-with-debug-ramdisk-5.4.img 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.cilAVB ফুটার যোগ করা
--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