এই পৃষ্ঠায় জেনেরিক বুটলোডার (GBL) বাইনারি কীভাবে স্থাপন করতে হয় তা ব্যাখ্যা করা হয়েছে।
বুট ফার্মওয়্যারের প্রয়োজনীয়তা
GBL ব্যবহার করার জন্য, বুট ফার্মওয়্যারকে নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করতে হবে:
ইউনিফাইড এক্সটেনসিবল ফার্মওয়্যার ইন্টারফেস (UEFI) সম্মতি। ফার্মওয়্যারটিকে অবশ্যই প্রয়োজনীয় UEFI প্রোটোকল বাস্তবায়ন এবং ব্যবহার করতে হবে। ফার্মওয়্যারটিকে অবশ্যই সংজ্ঞায়িত UEFI প্রোটোকল ব্যবহার করে বিক্রেতা-নির্দিষ্ট এক্সটেনশনের অনুমতি দিতে হবে।
নিরাপত্তা। ফার্মওয়্যারটিকে অবশ্যই অ্যান্ড্রয়েড যাচাইকৃত বুট (AVB) এর জন্য সমস্ত প্রয়োজনীয়তা বাস্তবায়ন করতে হবে, যা GBL কে বুট চিত্রগুলি প্রমাণীকরণ করতে সক্ষম করবে।
বুট মোড। বাইনারিটি বিভিন্ন বুট মোড পরিচালনা করতে সক্ষম হওয়া উচিত, যেমন সাধারণ বুট, পুনরুদ্ধার বুট এবং ফাস্টবুট।
ডায়নামিক পার্টিশনিং। বুট ফার্মওয়্যারকে অবশ্যই স্লট সিলেকশন লজিক প্রয়োগ করতে হবে যাতে এটি সঠিক A/B বুট স্লট পড়তে সহায়তা করে এবং সুপারে ডায়নামিক পার্টিশন এবং ব্যবহারকারীর ডেটার সাথে সামঞ্জস্যপূর্ণ হয়।
অপারেটিং সিস্টেম কনফিগারেশন। ফার্মওয়্যারটি অবশ্যই কার্নেল কমান্ড লাইন, ডিভাইস ট্রি (DTB) এবং বুটকনফিগকে ডিভাইস বুট করার জন্য প্রয়োজনীয় OEM কাস্টমাইজেশন সহ পরিবর্তন করতে সক্ষম হতে হবে।
সুরক্ষিত VM লোড হচ্ছে। সুরক্ষিত VM এর উপস্থিতিতে Android কার্নেলের আগে বাইনারিটি সঠিকভাবে পূর্ব-যাচাইকৃত সুরক্ষিত VM ফার্মওয়্যার লোড করবে। আরও তথ্যের জন্য, মাইক্রোড্রয়েড বুট সিকোয়েন্স দেখুন।
মেমোরি ব্যবস্থাপনা। বুট ফার্মওয়্যারটি অবশ্যই UEFI মেমোরি অ্যালোকেশন API সমর্থন করবে।
বাস্তবায়নের প্রয়োজনীয়তা
আপনার ডিভাইসে GBL সঠিকভাবে প্রয়োগ করার জন্য, আপনাকে নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করতে হবে:
আপনার ডিভাইসে SOC দ্বারা অ্যাক্সেসযোগ্য একটি ব্লক ডিভাইসে
android_esp_aএবংandroid_esp_bনামক 4 MB (বা তার চেয়ে বড়) আকারের দুটি FAT32 পার্টিশন থাকতে হবে।- ব্লক ডিভাইস হল একটি স্টোরেজ ডিভাইস যা ব্লকের ইউনিট থেকে পড়া বা লেখা যায়। উদাহরণগুলির মধ্যে রয়েছে UFS, eMMC, এবং SD কার্ড ডিভাইস।
- FAT32 ব্যবহার করা হয় কারণ এটি একটি সর্বব্যাপী এবং সহজবোধ্য ফাইল সিস্টেম।
- এই অ্যান্ড্রয়েড সংস্করণের সাপোর্ট উইন্ডোর সময়কালের জন্য ওভার-দ্য-এয়ার (OTA) আপডেট এবং রোলব্যাকের জন্য উভয় পার্টিশনই প্রয়োজন।
- জিবিএল প্রায় ২ এমবি আনকম্প্রেসড। পরবর্তী সাত বছরে অতিরিক্ত বৈশিষ্ট্যের কারণে যেকোনো বৃদ্ধির জন্য ৪ এমবি যথেষ্ট।
- GBL আপডেটের ক্ষেত্রে, আপনাকে সম্পূর্ণ
android_esp_${SLOT_SUFFIX}পার্টিশনটি আপডেট করতে হবে। শুধুমাত্র GBL আপডেট Android OTA দ্বারা সমর্থিত নয়।
GBL-এর মোতায়েন করা সংস্করণটি অবশ্যই সংশ্লিষ্ট GBL রিলিজ শাখা থেকে সর্বশেষ সার্টিফাইড প্রোডাকশন বিল্ড হতে হবে। আমরা সুপারিশ করছি যে আপনি আপনার পছন্দের সাইনিং সলিউশন ব্যবহার করে GBL-এর Google-প্রত্যয়িত কপিটি স্বাক্ষর করুন এবং ফলাফল বিল্ড এবং স্বাক্ষর মেটাডেটা
android_esp_${SLOT_SUFFIX}পার্টিশনের ভিতরে সংরক্ষণ করুন।- GBL সার্টিফিকেটটি OEM স্বাক্ষর দ্বারা অক্ষত থাকতে হবে এবং বাইনারিতে কোনও হেডার প্রয়োগ করা যাবে না।
- ডেভেলপার GBL বিল্ডটি কেবল ডেভেলপমেন্ট এবং ডিবাগিংয়ের জন্য ব্যবহৃত হয়। বিল্ডটি পাঠানো যাবে না এবং Google দ্বারা প্রত্যয়িত হবে না।
GBL অবশ্যই FAT32 পার্টিশনের মধ্যে
/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_PROTOCOLDICE চেইন থেকে AVF কনফিগারেশন ডেটা তৈরি করে
-
GBL ইন্টিগ্রেট করার সময় যে UEFI প্রোটোকলগুলি জোরালোভাবে সুপারিশ করা হয় সেগুলি GBL UEFI প্রোটোকলগুলিতে নথিভুক্ত করা হয়েছে।
বুট ফার্মওয়্যার সাপোর্ট
পূর্ববর্তী বিভাগে প্রয়োজনীয়তাগুলি সমর্থন করার জন্য প্রয়োজনীয় পরিবর্তনগুলি সহ, নিম্নলিখিত UEFI ফার্মওয়্যার বাস্তবায়নগুলি GBL-এর সাথে কাজ করে:
- EDK2 (Tianocore) । EDK2 হল একটি জনপ্রিয় ওপেন-সোর্স UEFI বাস্তবায়ন। EDK2-ভিত্তিক বুটলোডারগুলির জন্য GBL সমর্থন প্রয়োজন, এবং UEFI সমর্থন ইতিমধ্যেই উপস্থিত রয়েছে।
- U-Boot । একটি নমনীয় এবং বহুল ব্যবহৃত ওপেন-সোর্স বুটলোডার প্রকল্প যা GBL ব্যবহারের জন্য UEFI সামঞ্জস্য অর্জন করছে।
- লিটল কার্নেল (এলকে) । কিছু বিক্রেতাদের দ্বারা ব্যবহৃত একটি ওপেন-সোর্স বুটলোডার।
GBL চালান
আপনি চালানোর জন্য একটি পূর্বনির্মিত GBL বাইনারি পেতে পারেন অথবা আপনার নিজস্ব তৈরি করে চালাতে পারেন।
GBL বাইনারিটি সংগ্রহ করুন এবং চালান
GBL একটি একক UEFI অ্যাপ বাইনারি হিসেবে বিতরণ করা হয়। আপনি অ্যান্ড্রয়েডের স্ট্যান্ডার্ড আপডেট মেকানিজম ব্যবহার করে ডিভাইসের বেস ফার্মওয়্যার থেকে স্বাধীনভাবে এই বাইনারি আপডেট করতে পারেন।
অ্যান্ড্রয়েড ১৬ থেকে শুরু করে, যদি আপনি ARM-64 চিপসেট-ভিত্তিক কোনও ডিভাইস পাঠান, তাহলে আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি GBL-এর সর্বশেষ Google-প্রত্যয়িত সংস্করণটি ব্যবহার করুন এবং এটি আপনার বুট চেইনে সংহত করুন।
জিবিএল তৈরি করুন
GBL তৈরি করতে:
আপনার কাছে রেপো টুল এবং ব্যাজেল বুটস্ট্র্যাপ ইনস্টল করা আছে কিনা তা যাচাই করুন:
sudo apt install repo bazel-bootstrapuefi-gbl-mainlineম্যানিফেস্ট ফাইল ব্যবহার করে সোর্স নিয়ন্ত্রণের জন্য আপনার বর্তমান ডিরেক্টরিটি আরম্ভ করুন:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16UEFI অ্যাপ তৈরি করুন:
tools/bazel run //bootable/libbootloader:gbl_efi_dist
অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইসে GBL পরীক্ষা করুন
কাটলফিশের মধ্যে GBL চালান:
cvd start --android_efi_loader=path_to_the_UEFI_app ...সরাসরি অ্যান্ড্রয়েড বুট করার পরিবর্তে, এই
cvd startকমান্ডটি অ্যান্ড্রয়েড বুট করার জন্য UEFI অ্যাপ ব্যবহার করে।
বাগ ফাইল করুন এবং বুটলোডার টিমের সাথে যোগাযোগ করুন
GBL-এর জন্য কোনও বাগ রিপোর্ট করতে, Buganizer-এর Android Generic Bootloader কম্পোনেন্টে যান।
প্রশ্নের জন্য, GBL টিমের সাথে যোগাযোগ করুন, android-gbl@google.com এ একটি ইমেল পাঠান।