জেনেরিক সিস্টেম ইমেজ

একটি জেনেরিক সিস্টেম ইমেজ (GSI) হল অ্যান্ড্রয়েড ডিভাইসের জন্য সামঞ্জস্যপূর্ণ কনফিগারেশন সহ একটি সিস্টেম ইমেজ। এটিকে অপরিবর্তিত অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) কোড সহ একটি বিশুদ্ধ অ্যান্ড্রয়েড বাস্তবায়ন হিসাবে বিবেচনা করা হয় যা অ্যান্ড্রয়েড 9 বা উচ্চতর সংস্করণে চলমান যেকোনো অ্যান্ড্রয়েড ডিভাইস সফলভাবে চালাতে পারে।

VTS এবং CTS-on-GSI পরীক্ষা চালানোর জন্য GSI ব্যবহার করা হয়। একটি অ্যান্ড্রয়েড ডিভাইসের সিস্টেম ইমেজ একটি GSI দিয়ে প্রতিস্থাপিত হয় এবং তারপর ভেন্ডর টেস্ট স্যুট (VTS) এবং কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) দিয়ে পরীক্ষা করা হয় যাতে নিশ্চিত করা যায় যে ডিভাইসটি অ্যান্ড্রয়েডের সর্বশেষ সংস্করণের সাথে সঠিকভাবে ভেন্ডর ইন্টারফেস প্রয়োগ করে।

GSI গুলি দিয়ে শুরু করতে, GSI কনফিগারেশন (এবং অনুমোদিত বৈচিত্র্য) এবং প্রকার সম্পর্কে বিস্তারিত জানতে নিম্নলিখিত বিভাগগুলি পর্যালোচনা করুন। যখন আপনি একটি GSI ব্যবহার করার জন্য প্রস্তুত হন, তখন আপনার ডিভাইস টার্গেটের জন্য GSI ডাউনলোড এবং তৈরি করুন , তারপর একটি Android ডিভাইসে GSI ফ্ল্যাশ করুন

জিএসআই কনফিগারেশন এবং তারতম্য

বর্তমান অ্যান্ড্রয়েড জিএসআই-এর নিম্নলিখিত কনফিগারেশন রয়েছে:

বর্তমান অ্যান্ড্রয়েড জিএসআই-তে নিম্নলিখিত প্রধান বৈচিত্রগুলি অন্তর্ভুক্ত রয়েছে:

  • CPU আর্কিটেকচার। বিভিন্ন CPU নির্দেশাবলী (ARM, x86, ইত্যাদি) এবং CPU বিটনেস (32 বিট বা 64 বিট) এর জন্য সমর্থন।

ট্রেবল কমপ্লায়েন্স পরীক্ষার জন্য জিএসআই লক্ষ্যমাত্রা নির্ধারণ করে

কমপ্লায়েন্স পরীক্ষার জন্য ব্যবহৃত GSI ডিভাইসটি যে অ্যান্ড্রয়েড সংস্করণ দিয়ে চালু হবে তার উপর নির্ভর করে নির্ধারিত হয়।

ডিভাইসের ধরণ লক্ষ্য তৈরি করুন
অ্যান্ড্রয়েড ১৫ এর সাথে লঞ্চ হওয়া ডিভাইসগুলি gsi_$arch-user (স্বাক্ষরিত)
অ্যান্ড্রয়েড ১৪ এর সাথে লঞ্চ হওয়া ডিভাইসগুলি gsi_$arch-user (স্বাক্ষরিত)
অ্যান্ড্রয়েড ১৩ এর সাথে লঞ্চ হওয়া ডিভাইসগুলি gsi_$arch-user (স্বাক্ষরিত)
Android 12L এর সাথে লঞ্চ হওয়া ডিভাইসগুলি gsi_$arch-user (স্বাক্ষরিত)
অ্যান্ড্রয়েড ১২ এর সাথে লঞ্চ হওয়া ডিভাইসগুলি gsi_$arch-user (স্বাক্ষরিত)
অ্যান্ড্রয়েড ১১ এর সাথে লঞ্চ হওয়া ডিভাইসগুলি gsi_$arch-user (স্বাক্ষরিত)

সমস্ত GSI গুলি Android 12 কোডবেস থেকে তৈরি, এবং প্রতিটি CPU আর্কিটেকচারের একটি সংশ্লিষ্ট GSI বাইনারি রয়েছে ( Building GSI গুলিতে বিল্ড টার্গেটের তালিকা দেখুন)।

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

অ্যান্ড্রয়েড ১২ এর সাথে লঞ্চ হওয়া বা আপডেট হওয়া ডিভাইসগুলিকে কমপ্লায়েন্স পরীক্ষার জন্য অ্যান্ড্রয়েড ১২ জিএসআই ব্যবহার করতে হবে। এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:

  • টার্গেট নাম। কমপ্লায়েন্স পরীক্ষার জন্য GSI টার্গেট নামটি gsi_$arch এ পরিবর্তন করা হয়েছে। টার্গেট নাম aosp_$arch সহ GSI অ্যান্ড্রয়েড অ্যাপ ডেভেলপারদের জন্য রাখা হয়েছে। ভেন্ডর ইন্টারফেস পরীক্ষা করার জন্য CTS-on-GSI পরীক্ষা পরিকল্পনাটিও ছোট করা হয়েছে।
  • লিগ্যাসি GSI ধাপে ধাপে বন্ধ করা হচ্ছে। GSI 12 সম্পূর্ণরূপে ট্রেবলাইজড নয় এমন Android 8.0 বা 8.1 ডিভাইসগুলির জন্য সমাধানগুলি সরিয়ে দেয়।
  • Userdebug SEPolicy। GSI gsi_$arch userdebug_plat_sepolicy.cil থাকে। OEM-নির্দিষ্ট vendor_boot-debug.img অথবা boot-debug.img ফ্ল্যাশ করার সময়, /system/bin/init GSI system.img থেকে userdebug_plat_sepolicy.cil লোড করবে। বিস্তারিত জানার জন্য ডিবাগ Ramdisk দিয়ে VTS টেস্টিং দেখুন।

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

অ্যান্ড্রয়েড ১১ দিয়ে লঞ্চ হওয়া বা আপডেট হওয়া ডিভাইসগুলিকে কমপ্লায়েন্স পরীক্ষার জন্য অ্যান্ড্রয়েড ১১ জিএসআই ব্যবহার করতে হবে। এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:

  • system_ext কন্টেন্ট। অ্যান্ড্রয়েড ১১ একটি নতুন পার্টিশন system_ext সংজ্ঞায়িত করে। GSI সিস্টেম এক্সটেনশন কন্টেন্টগুলিকে system/system_ext ফোল্ডারের অধীনে রাখে।
  • APEX। GSI তে সমতল এবং সংকুচিত উভয় APEX থাকে। কোনটি ব্যবহার করবেন তা রান টাইমে ভেন্ডর পার্টিশনে সিস্টেম প্রোপার্টি ro.apex.updatable দ্বারা নির্ধারিত হয়। রেফারেন্স বিস্তারিত জানার জন্য APEX আপডেট সমর্থন করার জন্য সিস্টেম কনফিগার করা

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

অ্যান্ড্রয়েড ১০ দিয়ে লঞ্চ হওয়া বা আপডেট হওয়া ডিভাইসগুলিকে কমপ্লায়েন্স টেস্টিংয়ের জন্য অ্যান্ড্রয়েড ১০ জিএসআই ব্যবহার করতে হবে। এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:

  • ইউজার বিল্ড। GSI-তে অ্যান্ড্রয়েড ১০ থেকে ইউজার বিল্ড আছে। অ্যান্ড্রয়েড ১০-এ, ইউজার বিল্ড GSI CTS-on-GSI/VTS কমপ্লায়েন্স টেস্টিং-এ ব্যবহার করা যেতে পারে। বিস্তারিত জানার জন্য ডিবাগ র‍্যামডিস্কের সাহায্যে VTS টেস্টিং দেখুন।
  • অস্পার্সড ফর্ম্যাট। লক্ষ্যবস্তু সহ GSI aosp_$arch আনস্পার্সড ফর্ম্যাট দিয়ে তৈরি। প্রয়োজনে অস্পার্সড GSI কে স্পার্স ফর্ম্যাটে রূপান্তর করতে আপনি img2simg ব্যবহার করতে পারেন।
  • সিস্টেম-এজ-রুট। aosp_$arch_a নামক লিগ্যাসি GSI বিল্ড টার্গেটটি পর্যায়ক্রমে বন্ধ করে দেওয়া হয়েছে। ramdisk এবং নন-system-as-root সহ Android 8 বা 8.1 থেকে Android 10 এ আপগ্রেড করা ডিভাইসগুলির জন্য, লিগ্যাসি GSI aosp_$arch_ab ব্যবহার করুন। ramdisk-এ আপগ্রেড করা init সিস্টেম-এজ-রুট লেআউট সহ OEM system.img সমর্থন করে।
  • বুট যাচাই করুন। GSI ব্যবহার করে আপনাকে কেবল ডিভাইসটি আনলক করতে হবে। যাচাই বুট অক্ষম করার প্রয়োজন নেই।

অ্যান্ড্রয়েড ৯ জিএসআই পরিবর্তন

অ্যান্ড্রয়েড ৯ এর সাথে লঞ্চ হওয়া বা আপডেট হওয়া ডিভাইসগুলিকে কমপ্লায়েন্স পরীক্ষার জন্য অ্যান্ড্রয়েড ৯ জিএসআই ব্যবহার করতে হবে। এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:

  • GSI এবং এমুলেটর একত্রিত করে। GSI গুলি এমুলেটর পণ্যের সিস্টেম চিত্র থেকে তৈরি করা হয়, উদাহরণস্বরূপ, aosp_arm64 এবং aosp_x86
  • সিস্টেম-অ্যাজ-রুট। অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, যেসব ডিভাইস A/B আপডেট সমর্থন করত না তারা /system ডিরেক্টরির অধীনে সিস্টেম ইমেজ মাউন্ট করতে পারত। অ্যান্ড্রয়েড 9-এ, সিস্টেম ইমেজের রুট ডিভাইসের রুট হিসাবে মাউন্ট করা হয়।
  • ৬৪-বিট বাইন্ডার ইন্টারফেস। অ্যান্ড্রয়েড ৮.এক্স-এ, ৩২-বিট জিএসআই ৩২-বিট বাইন্ডার ইন্টারফেস ব্যবহার করত। অ্যান্ড্রয়েড ৯ ৩২-বিট বাইন্ডার ইন্টারফেস সমর্থন করে না, তাই ৩২-বিট জিএসআই এবং ৬৪-বিট জিএসআই উভয়ই ৬৪-বিট বাইন্ডার ইন্টারফেস ব্যবহার করে।
  • VNDK প্রয়োগ। Android 8.1-এ, VNDK ঐচ্ছিক ছিল। Android 9 থেকে শুরু করে, VNDK বাধ্যতামূলক, তাই BOARD_VNDK_VERSION সেট করতে হবে
  • সামঞ্জস্যপূর্ণ সিস্টেম প্রপার্টি। Android 9 একটি সামঞ্জস্যপূর্ণ সিস্টেম প্রপার্টির অ্যাক্সেস চেক সক্ষম করে ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true )।

অ্যান্ড্রয়েড ৯ কীমাস্টারে পরিবর্তন

অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, Keymaster 3 বা তার নিচের সংস্করণগুলি বাস্তবায়নকারী ডিভাইসগুলিকে যাচাই করতে হত যে চলমান সিস্টেম দ্বারা রিপোর্ট করা সংস্করণ তথ্য ( ro.build.version.release এবং ro.build.version.security_patch ) বুটলোডার দ্বারা রিপোর্ট করা সংস্করণ তথ্যের সাথে মিলেছে কিনা। এই তথ্য সাধারণত বুট ইমেজ হেডার থেকে পাওয়া যেত।

অ্যান্ড্রয়েড ৯ এবং তার পরবর্তী সংস্করণে, বিক্রেতাদের একটি GSI বুট করার জন্য এই প্রয়োজনীয়তা পরিবর্তন করা হয়েছে। বিশেষ করে, Keymaster যাচাইকরণ করা উচিত নয় কারণ GSI দ্বারা রিপোর্ট করা সংস্করণের তথ্য বিক্রেতার বুটলোডার দ্বারা রিপোর্ট করা সংস্করণের তথ্যের সাথে মেলে না। Keymaster 3 বা তার পরবর্তী সংস্করণ বাস্তবায়নকারী ডিভাইসগুলির জন্য, যাচাইকরণ এড়িয়ে যাওয়ার জন্য (অথবা Keymaster 4 এ আপগ্রেড করার জন্য) বিক্রেতাদের Keymaster বাস্তবায়ন পরিবর্তন করতে হবে। Keymaster সম্পর্কে বিস্তারিত জানতে, হার্ডওয়্যার-সমর্থিত Keystore দেখুন।

জিএসআই ডাউনলোড করুন

আপনি ci.android.com- এ AOSP কন্টিনিউয়াস ইন্টিগ্রেশন (CI) ওয়েবসাইট থেকে প্রি-বিল্ট GSI ডাউনলোড করতে পারেন। যদি আপনার হার্ডওয়্যার প্ল্যাটফর্মের জন্য GSI টাইপ ডাউনলোডের জন্য অনুপলব্ধ থাকে, তাহলে নির্দিষ্ট লক্ষ্যবস্তুর জন্য GSI তৈরির বিশদ বিবরণের জন্য নিম্নলিখিত বিভাগটি পড়ুন।

জিএসআই তৈরি করুন

অ্যান্ড্রয়েড ৯ থেকে শুরু করে, প্রতিটি অ্যান্ড্রয়েড সংস্করণের AOSP-তে DESSERT -gsi নামে একটি GSI শাখা রয়েছে (উদাহরণস্বরূপ, android12-gsi হল অ্যান্ড্রয়েড ১২-তে GSI শাখা)। GSI শাখাগুলিতে সমস্ত সুরক্ষা প্যাচ এবং প্রয়োগ করা GSI প্যাচ সহ অ্যান্ড্রয়েডের সামগ্রী অন্তর্ভুক্ত থাকে।

একটি GSI তৈরি করতে, একটি GSI শাখা থেকে ডাউনলোড করে এবং একটি GSI build target নির্বাচন করে Android সোর্স ট্রি সেট আপ করুন। আপনার ডিভাইসের জন্য সঠিক GSI সংস্করণ নির্ধারণ করতে নীচের বিল্ড টার্গেট টেবিলগুলি ব্যবহার করুন। বিল্ড সম্পূর্ণ হওয়ার পরে, GSI হল সিস্টেম ইমেজ (অর্থাৎ, system.img ) এবং আউটপুট ফোল্ডার out/target/product/ generic_arm64 এ প্রদর্শিত হবে।

উদাহরণস্বরূপ, GSI শাখা android12-gsi তে GSI বিল্ড টার্গেট gsi_arm64-userdebug তৈরি করতে, নিম্নলিখিত কমান্ডগুলি চালান।

$ repo init -u https://android.googlesource.com/platform/manifest -b android12-gsi
$ repo sync -cq
$ source build/envsetup.sh
$ lunch gsi_arm64-userdebug
$ make -j4

অ্যান্ড্রয়েড জিএসআই বিল্ড টার্গেট

নিম্নলিখিত GSI বিল্ড লক্ষ্যগুলি Android 9 বা তার উচ্চতর সংস্করণে লঞ্চ হওয়া ডিভাইসগুলির জন্য।

জিএসআই নাম সিপিইউ আর্চ বাইন্ডার ইন্টারফেস বিটনেস সিস্টেম-অ্যাজ-রুট লক্ষ্য তৈরি করুন
gsi_arm বাহু ৩২ gsi_arm-user
gsi_arm-userdebug
gsi_arm64 ARM64 সম্পর্কে ৬৪ gsi_arm64-user
gsi_arm64-userdebug
gsi_x86 x86 সম্পর্কে ৩২ gsi_x86-user
gsi_x86-userdebug
gsi_x86_64 x86-64 সম্পর্কে ৬৪ gsi_x86_64-user
gsi_x86_64-userdebug

জিএসআই ফ্ল্যাশ করার জন্য প্রয়োজনীয়তা

অ্যান্ড্রয়েড ডিভাইসের ডিজাইন বিভিন্ন রকম হতে পারে, তাই সকল ডিভাইসে GSI ফ্ল্যাশ করার জন্য কোনও সাধারণ কমান্ড বা নির্দেশাবলীর সেট প্রয়োগ করা হয় না। স্পষ্ট ফ্ল্যাশিং নির্দেশাবলীর জন্য অ্যান্ড্রয়েড ডিভাইসের প্রস্তুতকারকের সাথে যোগাযোগ করুন। সাধারণ নির্দেশিকা হিসাবে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন:

  1. নিশ্চিত করুন যে ডিভাইসটিতে নিম্নলিখিতগুলি রয়েছে:
    • ত্রিভুজযুক্ত
    • ডিভাইস আনলক করার একটি পদ্ধতি (যাতে fastboot ব্যবহার করে ফ্ল্যাশ করা যায়)
    • fastboot মাধ্যমে ফ্ল্যাশ করার জন্য একটি আনলক করা অবস্থা (আপনার কাছে fastboot সর্বশেষ সংস্করণ আছে কিনা তা নিশ্চিত করতে, এটি অ্যান্ড্রয়েড সোর্স ট্রি থেকে তৈরি করুন।)
  2. বর্তমান সিস্টেম পার্টিশনটি মুছে ফেলুন, তারপর সিস্টেম পার্টিশনে GSI ফ্ল্যাশ করুন।
  3. ব্যবহারকারীর ডেটা মুছে ফেলুন এবং অন্যান্য প্রয়োজনীয় পার্টিশন থেকে ডেটা মুছে ফেলুন (উদাহরণস্বরূপ, ব্যবহারকারীর ডেটা এবং সিস্টেম পার্টিশন)।
  4. ডিভাইসটি রিবুট করুন।

উদাহরণস্বরূপ, যেকোনো পিক্সেল ডিভাইসে একটি GSI ফ্ল্যাশ করতে:

  1. fastboot মোডে বুট করুন এবং বুটলোডার আনলক করুন
  2. fastbootd সাপোর্ট করা ডিভাইসগুলিকে fastbootd বুট করতে হবে নিম্নলিখিত উপায়ে:
    $ fastboot reboot fastboot
  3. সিস্টেম পার্টিশনে GSI মুছে ফেলুন এবং ফ্ল্যাশ করুন:
    $ fastboot erase system
    $ fastboot flash system system.img
  4. যদি আপনার ডিভাইসটি অ্যান্ড্রয়েড ভার্চুয়াল ফ্রেমওয়ার্ক সমর্থন করে, তাহলে প্রোটেক্টেড ভার্চুয়াল মেশিন ফার্মওয়্যারটি ফ্ল্যাশ করুন:
    $ fastboot flash pvmfw pvmfw.img
    
  5. ব্যবহারকারীর ডেটা মুছুন এবং অন্যান্য প্রয়োজনীয় পার্টিশন থেকে ডেটা সাফ করুন (উদাহরণস্বরূপ, ব্যবহারকারীর ডেটা এবং সিস্টেম পার্টিশন):
    $ fastboot -w
  6. বুটলোডারে পুনরায় বুট করুন:
    $ fastboot reboot-bootloader
  7. প্রদত্ত vbmeta ফ্ল্যাশ করার সময় যাচাইকৃত বুট যাচাইকরণ অক্ষম করুন:
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  8. Reboot:
    $ fastboot reboot
অ্যান্ড্রয়েড ১০ বা নতুন ডিভাইসগুলিতে যাদের সিস্টেম পার্টিশন ছোট, GSI ফ্ল্যাশ করার সময় নিম্নলিখিত ত্রুটি বার্তাটি প্রদর্শিত হতে পারে:
    Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
    fastboot: error: Command failed
পণ্য পার্টিশনটি মুছে ফেলতে এবং সিস্টেম পার্টিশনের জন্য জায়গা খালি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন। এটি GSI ফ্ল্যাশ করার জন্য অতিরিক্ত জায়গা প্রদান করে:
$ fastboot delete-logical-partition product_a
পোস্টফিক্স _a সিস্টেম পার্টিশনের স্লট আইডির সাথে মিলবে, যেমন এই উদাহরণে system_a

জিএসআই-তে অবদান রাখুন

GSI উন্নয়নে আপনার অবদানকে Android স্বাগত জানায়। আপনি নিম্নলিখিতভাবে GSI উন্নত করতে এবং এতে অংশগ্রহণ করতে পারেন:

  • একটি GSI প্যাচ তৈরি করা। DESSERT -gsi কোনও ডেভেলপমেন্ট শাখা নয় এবং এটি শুধুমাত্র AOSP সর্বশেষ রিলিজ শাখা ( android16-qpr1-release ) থেকে চেরিপিক গ্রহণ করে, তাই একটি GSI প্যাচ জমা দেওয়ার জন্য, আপনাকে অবশ্যই:
    1. AOSP android16-qpr1-release শাখায় প্যাচটি জমা দিন।
    2. DESSERT -gsi তে প্যাচটি চেরি পিক করুন।
    3. চেরিপিক পর্যালোচনা করার জন্য একটি বাগ ফাইল করুন।
  • GSI বাগ রিপোর্ট করা অথবা অন্যান্য পরামর্শ দেওয়া। বাগ রিপোর্টিং এর নির্দেশাবলী পর্যালোচনা করুন, তারপর GSI বাগ ব্রাউজ করুন বা ফাইল করুন।

পরামর্শ

adb ব্যবহার করে নেভিগেশন বার মোড পরিবর্তন করুন

GSI দিয়ে বুট করার সময়, নেভিগেশন বার মোডটি ভেন্ডর ওভাররাইডিং দ্বারা কনফিগার করা হয়। রানটাইমে নিম্নলিখিত adb কমান্ডটি চালিয়ে আপনি নেভিগেশন বার মোডটি পরিবর্তন করতে পারেন।

adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode

যেখানে mode threebutton , twobutton , gestural , ইত্যাদি হতে পারে।