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

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

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

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

GSI কনফিগারেশন এবং ভিন্নতা

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

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

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

ট্রেবল সম্মতি পরীক্ষার জন্য GSI লক্ষ্য

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

ডিভাইসের ধরন লক্ষ্য তৈরি করুন
Android 12 এর সাথে ডিভাইসগুলি চালু হচ্ছে gsi_$arch-user (স্বাক্ষরিত)
অ্যান্ড্রয়েড 11 এর সাথে ডিভাইসগুলি চালু হচ্ছে৷ gsi_$arch-user (স্বাক্ষরিত)
Android 10 এর সাথে ডিভাইসগুলি চালু হচ্ছে gsi_$arch-user (স্বাক্ষরিত)
Android 9 এর সাথে ডিভাইসগুলি চালু হচ্ছে৷ gsi_$arch-userdebug

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

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

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

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

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

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

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

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

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

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

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

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

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

Android 9 Keymaster পরিবর্তন

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

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

জিএসআই ডাউনলোড করা হচ্ছে

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

জিএসআই তৈরি করা

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

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

উদাহরণস্বরূপ, GSI শাখা android12-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 বা উচ্চতর সংস্করণে লঞ্চ হওয়া ডিভাইসগুলির জন্য।

জিএসআই নাম CPU খিলান বাইন্ডার ইন্টারফেস বিটনেস সিস্টেম-হিসেবে-রুট লক্ষ্য তৈরি করুন
gsi_arm এআরএম 64 Y gsi_arm-user
gsi_arm-userdebug
gsi_arm64 ARM64 64 Y gsi_arm64-user
gsi_arm64-userdebug
gsi_x86 x86 64 Y gsi_x86-user
gsi_x86-userdebug
gsi_x86_64 x86-64 64 Y gsi_x86_64-user
gsi_x86_64-userdebug

GSI ফ্ল্যাশ করার জন্য প্রয়োজনীয়তা

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

  1. ডিভাইসে নিম্নলিখিত আছে তা নিশ্চিত করুন:
    • Treblized
    • ডিভাইস আনলক করার একটি পদ্ধতি (তাই 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 -w
  5. রিবুট করুন:
    $ fastboot reboot
অ্যান্ড্রয়েড 10 বা নতুন ডিভাইসে যেগুলির ছোট সিস্টেম পার্টিশন রয়েছে, 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 এই উদাহরণে।

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

Android GSI উন্নয়নে আপনার অবদানকে স্বাগত জানায়। আপনি এতে জড়িত হতে পারেন এবং GSI উন্নত করতে সাহায্য করতে পারেন:

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

পরামর্শ

অ্যাডবি ব্যবহার করে নেভিগেশন বার মোড পরিবর্তন করা হচ্ছে

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

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

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