GBL স্থাপন করুন

এই পৃষ্ঠায় জেনেরিক বুটলোডার (GBL) বাইনারিটি কীভাবে স্থাপন করতে হয় তা ব্যাখ্যা করা হয়েছে।

বুট ফার্মওয়্যারের প্রয়োজনীয়তা

GBL ব্যবহার করার জন্য, বুট ফার্মওয়্যারকে নিম্নলিখিত শর্তগুলো পূরণ করতে হবে:

  • ইউনিফাইড এক্সটেনসিবল ফার্মওয়্যার ইন্টারফেস (UEFI) এর সাথে সঙ্গতিপূর্ণ হতে হবে। ফার্মওয়্যারটিকে অবশ্যই প্রয়োজনীয় UEFI প্রোটোকলগুলো বাস্তবায়ন ও ব্যবহার করতে হবে। এছাড়াও, ফার্মওয়্যারটিকে অবশ্যই সংজ্ঞায়িত UEFI প্রোটোকল ব্যবহার করে ভেন্ডর-নির্দিষ্ট এক্সটেনশনের সুযোগ দিতে হবে।

  • নিরাপত্তা। ফার্মওয়্যারটিকে অবশ্যই অ্যান্ড্রয়েড ভেরিফাইড বুট (AVB)-এর সমস্ত প্রয়োজনীয়তা পূরণ করতে হবে, যা GBL-কে বুট ইমেজ প্রমাণীকরণে সক্ষম করে।

  • বুট মোড। বাইনারিটি বিভিন্ন বুট মোড, যেমন নরমাল বুট, রিকভারি বুট এবং ফাস্টবুট পরিচালনা করতে সক্ষম হওয়া উচিত।

  • ডাইনামিক পার্টিশনিং। বুট ফার্মওয়্যারকে অবশ্যই স্লট সিলেকশন লজিক প্রয়োগ করতে হবে, যাতে এটি সঠিক A/B বুট স্লট পড়তে পারে এবং ডাইনামিক পার্টিশন ও সুপার-এ থাকা ইউজারডেটার সাথে সামঞ্জস্যপূর্ণ হয়।

  • ওএস কনফিগারেশন। ডিভাইসটি বুট করার জন্য প্রয়োজনীয় OEM কাস্টমাইজেশন সহ কার্নেল কমান্ড লাইন, ডিভাইস ট্রি (DTB), এবং বুটকনফিগ পরিবর্তন করতে ফার্মওয়্যারটিকে সক্ষম হতে হবে।

  • সুরক্ষিত ভিএম লোডিং। সুরক্ষিত ভিএম-এর উপস্থিতিতে, বাইনারিটি অ্যান্ড্রয়েড কার্নেলের আগে পূর্ব-যাচাইকৃত সুরক্ষিত ভিএম ফার্মওয়্যার সঠিকভাবে লোড করবে। আরও তথ্যের জন্য, মাইক্রোড্রয়েড বুট সিকোয়েন্স দেখুন।

  • মেমরি ব্যবস্থাপনা। বুট ফার্মওয়্যারকে অবশ্যই UEFI মেমরি অ্যালোকেশন API সমর্থন করতে হবে।

বাস্তবায়নের প্রয়োজনীয়তা

আপনার ডিভাইসে GBL সঠিকভাবে প্রয়োগ করার জন্য, আপনাকে নিম্নলিখিত শর্তগুলো পূরণ করতে হবে:

  • আপনার ডিভাইসে অবশ্যই android_esp_a এবং android_esp_b নামে ৮ মেগাবাইট (বা তার চেয়ে বড়) আকারের দুটি FAT পার্টিশন থাকতে হবে, যা SOC দ্বারা অ্যাক্সেসযোগ্য একটি ব্লক ডিভাইসে অবস্থিত।

    • ব্লক ডিভাইস হলো এমন একটি স্টোরেজ ডিভাইস যেখান থেকে ব্লক এককে ডেটা পড়া বা লেখা যায়। এর উদাহরণ হলো UFS, eMMC এবং SD কার্ড ডিভাইস।
    • FAT ব্যবহার করা হয় কারণ এটি একটি সর্বব্যাপী এবং সহজবোধ্য ফাইল সিস্টেম।
    • আমরা আপনাকে FAT12, FAT16 এবং FAT32 থেকে আপনার প্রয়োজন অনুযায়ী উপযুক্ত FAT ফাইল সিস্টেমটি বেছে নেওয়ার পরামর্শ দিই।
    • এই অ্যান্ড্রয়েড সংস্করণটির সাপোর্ট উইন্ডো চলাকালীন ওভার-দ্য-এয়ার (OTA) আপডেট এবং রোলব্যাকের জন্য উভয় পার্টিশনই প্রয়োজন।
    • আনকম্প্রেসড অবস্থায় GBL-এর সাইজ প্রায় ২ মেগাবাইট। আগামী সাত বছরে অতিরিক্ত ফিচার যুক্ত হওয়ার কারণে যে কোনো বৃদ্ধির জন্য ৮ মেগাবাইট যথেষ্ট।
    • GBL আপডেটের ক্ষেত্রে, আপনাকে অবশ্যই সম্পূর্ণ android_esp_${SLOT_SUFFIX} পার্টিশনটি আপডেট করতে হবে। শুধুমাত্র GBL-এর আপডেট Android OTA দ্বারা সমর্থিত নয়।
    • উভয় FAT পার্টিশনের জন্য ব্যবহৃত পার্টিশন টাইপ GUID অবশ্যই EFI সিস্টেম পার্টিশন GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B এর সাথে মিলতে হবে।
  • ডেপ্লয় করা GBL-এর ভার্সনটি অবশ্যই সংশ্লিষ্ট GBL রিলিজ ব্রাঞ্চের সর্বশেষ সার্টিফায়েড প্রোডাকশন বিল্ড হতে হবে। আমরা সুপারিশ করি যে, আপনি আপনার পছন্দের সাইনিং সলিউশন ব্যবহার করে GBL-এর গুগল-সার্টিফায়েড কপিটি সাইন করুন এবং এর ফলে প্রাপ্ত বিল্ড ও সিগনেচার মেটাডেটা android_esp_${SLOT_SUFFIX} পার্টিশনের ভিতরে সংরক্ষণ করুন।

    • OEM স্বাক্ষরের মাধ্যমে GBL সার্টিফিকেটটি অবশ্যই অক্ষত রাখতে হবে এবং বাইনারিতে কোনো হেডার যুক্ত করা যাবে না।
    • ডেভেলপার জিবিএল বিল্ডটি শুধুমাত্র উন্নয়ন এবং ডিবাগিংয়ের উদ্দেশ্যে ব্যবহৃত হয়। এই বিল্ডটি শিপ করা যাবে না এবং গুগল কর্তৃক প্রত্যয়িতও হবে না।
  • GBL অবশ্যই FAT পার্টিশনের মধ্যে /EFI/BOOT/BOOTAA64.EFI পাথে সংরক্ষণ করতে হবে।

  • GBL সমর্থন করার জন্য প্রয়োজনীয় UEFI এবং Android UEFI প্রোটোকলগুলো প্রয়োগ করুন। এই ইন্টারফেসগুলো সমর্থিত না হলে GBL-এর প্রোডাকশন বিল্ড বুট হতে ব্যর্থ হয়।

    • EFI_BLOCK_IO_PROTOCOL অথবা EFI_BLOCK_IO2_PROTOCOL ডিস্ক থেকে বুট ইমেজ এবং pvmfw ইমেজগুলো সংগ্রহ করে।
    • স্ট্যাক ক্যানারি, KASLR সিড এবং RNG সিডের জন্য EFI_RNG_PROTOCOL
    • AVB এবং DICE গণনা সম্পাদনের জন্য স্ক্র্যাচ মেমরি বরাদ্দের মেমরি বরাদ্দ পরিষেবা
    • EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL নো-অপ ইমপ্লিমেন্টেশনের জন্য একটি অপশন প্রদান করে, কিন্তু GBL ডিফল্টরূপে এই প্রোটোকলের মাধ্যমেই লগ করে।
    • GBL_EFI_AVB_PROTOCOL বুট ইমেজ যাচাই করার জন্য পাবলিক কী এবং রোলব্যাক ইনডেক্স অ্যাক্সেস করে।
    • GBL_EFI_BOOT_CONTROL_PROTOCOL ফার্মওয়্যার থেকে স্লট মেটাডেটা এবং বুটের কারণ সংগ্রহ করে।
    • GBL_EFI_AVF_PROTOCOL DICE চেইন থেকে AVF কনফিগারেশন ডেটা তৈরি করে।
  • GBL ইন্টিগ্রেট করার সময় যে UEFI প্রোটোকলগুলো জোরালোভাবে সুপারিশ করা হয়, সেগুলো GBL UEFI Protocols- এ নথিভুক্ত করা আছে।

বুট ফার্মওয়্যার সমর্থন

পূর্ববর্তী বিভাগে উল্লিখিত প্রয়োজনীয়তাগুলো পূরণের জন্য প্রয়োজনীয় পরিবর্তনসহ, নিম্নলিখিত UEFI ফার্মওয়্যার বাস্তবায়নগুলো GBL-এর সাথে কাজ করে:

  • EDK2 (Tianocore) হলো একটি জনপ্রিয় ওপেন-সোর্স UEFI ইমপ্লিমেন্টেশন। EDK2-ভিত্তিক বুটলোডারগুলোর জন্য GBL সাপোর্টের প্রয়োজন, এবং এতে UEFI সাপোর্ট আগে থেকেই বিদ্যমান।
  • ইউ-বুট (U-Boot ) একটি নমনীয় এবং বহুল ব্যবহৃত ওপেন-সোর্স বুটলোডার প্রজেক্ট, যা জিবিএল (GBL) ব্যবহারের জন্য ইউইএফআই (UEFI) সামঞ্জস্যতা অর্জন করছে।
  • লিটলকার্নেল (এলকে) . একটি ওপেন-সোর্স বুটলোডার যা কিছু বিক্রেতা ব্যবহার করে।

রান জিবিএল

আপনি চালানোর জন্য আগে থেকে তৈরি GBL বাইনারি সংগ্রহ করতে পারেন অথবা নিজের বাইনারি তৈরি করে চালাতে পারেন।

GBL বাইনারিটি সংগ্রহ করে চালান।

GBL একটি একক UEFI অ্যাপ বাইনারি হিসেবে বিতরণ করা হয়। আপনি অ্যান্ড্রয়েডের সাধারণ আপডেট প্রক্রিয়া ব্যবহার করে ডিভাইসের মূল ফার্মওয়্যার থেকে স্বাধীনভাবে এই বাইনারিটি আপডেট করতে পারেন।

অ্যান্ড্রয়েড ১৬ থেকে শুরু করে, আপনি যদি ARM-64 চিপসেটের উপর ভিত্তি করে তৈরি কোনো ডিভাইস সরবরাহ করেন, তাহলে আমরা আপনাকে GBL-এর সর্বশেষ গুগল-অনুমোদিত সংস্করণটি স্থাপন করতে এবং এটিকে আপনার বুট চেইনে একীভূত করার জন্য দৃঢ়ভাবে সুপারিশ করছি।

জিবিএল তৈরি করুন

জিবিএল তৈরি করতে:

  1. আপনার রিপো টুল এবং বেজেল বুটস্ট্র্যাপ ইনস্টল করা আছে কিনা তা যাচাই করুন:

    sudo apt install repo bazel-bootstrap
    
  2. uefi-gbl-mainline ম্যানিফেস্ট ফাইলটি ব্যবহার করে সোর্স কন্ট্রোলের জন্য আপনার বর্তমান ডিরেক্টরিটি ইনিশিয়ালাইজ করুন:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. UEFI অ্যাপটি তৈরি করুন:

    tools/bazel run //bootable/libbootloader:gbl_efi_dist
    

অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইসে GBL পরীক্ষা করুন

  1. কাটলফিশের মধ্যে GBL চালান:

    cvd start --android_efi_loader=path_to_the_UEFI_app ...
    

    সরাসরি অ্যান্ড্রয়েড বুট করার পরিবর্তে, এই cvd start কমান্ডটি অ্যান্ড্রয়েড বুট করার জন্য UEFI অ্যাপ ব্যবহার করে।

ত্রুটিগুলো নথিভুক্ত করুন এবং বুটলোডার টিমের সাথে যোগাযোগ করুন।

GBL-এর কোনো বাগ রিপোর্ট করতে, Buganizer-এ থাকা Android Generic Bootloader কম্পোনেন্টটিতে যান।

কোনো প্রশ্ন থাকলে GBL টিমের সাথে যোগাযোগ করুন, অথবা android-gbl@google.com ঠিকানায় ইমেইল পাঠান।