বুটলোডার ওভারভিউ

একটি বুটলোডার একটি ডিভাইসে কার্নেল আনার জন্য দায়ী একটি বিক্রেতা-মালিকানামূলক চিত্র। বুটলোডার ডিভাইসের অবস্থা রক্ষা করে এবং ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (TEE) শুরু করার জন্য এবং এর বিশ্বাসের মূলকে আবদ্ধ করার জন্য দায়ী। বুটলোডার কার্নেলে এক্সিকিউশন সরানোর আগে boot এবং recovery পার্টিশনের অখণ্ডতা যাচাই করে।

বুটলোডার প্রবাহের উদাহরণ

এখানে একটি উদাহরণ বুটলোডার প্রবাহ:

  1. মেমরি লোড এবং আরম্ভ করুন।

  2. ভেরিফাইড বুট ফ্লো অনুযায়ী ডিভাইসটি যাচাই করুন।

  3. boot , dtbo , init_boot , এবং recovery সহ বুট পার্টিশন যাচাই করুন, যাচাইকৃত বুট প্রবাহ অনুসারে। এই ধাপের অংশ হিসেবে, বুট ইমেজ হেডার ভার্সন চেক করুন এবং সেই অনুযায়ী হেডার পার্স করুন।

  4. A/B আপডেট ব্যবহার করা হলে, বুট করার জন্য বর্তমান স্লট নির্ধারণ করুন।

  5. রিকভারি মোড বুট করা উচিত কিনা তা নির্ধারণ করুন। আরও তথ্যের জন্য, সাপোর্টিং OTA আপডেট দেখুন।

  6. বুট ইমেজ লোড করুন, যেমন boot.img , vendor_boot.img , init_boot.img , এবং অন্যান্য মালিকানাধীন বিক্রেতা বুট ইমেজ। এই বুট ইমেজ কার্নেল এবং রামডিস্ক ইমেজ ধারণ করে।

    1. একটি স্ব-নির্বাহযোগ্য সংকুচিত বাইনারি হিসাবে মেমরিতে কার্নেল লোড করুন। কার্নেল নিজেকে ডিকম্প্রেস করে এবং মেমরিতে এক্সিকিউট করা শুরু করে।

    2. initramfs তৈরি করতে ramdisks এবং bootconfig বিভাগটি মেমরিতে লোড করুন।

অতিরিক্ত বুটলোডার-সম্পর্কিত বৈশিষ্ট্য

নিম্নলিখিত অতিরিক্ত বুটলোডার-সম্পর্কিত বৈশিষ্ট্যগুলির একটি তালিকা যা আপনি প্রয়োগ করতে পারেন:

  • ডিভাইস ট্রি ওভারলে (DTO)। একটি ডিভাইস ট্রি ওভারলে বুটলোডারকে বিভিন্ন হার্ডওয়্যার কনফিগারেশন সমর্থন করতে দেয়। একটি DTO একটি ডিভাইস ট্রি ব্লব (DTB) এ কম্পাইল করা হয় যা বুটলোডার দ্বারা ব্যবহৃত হয়।

  • কার্নেল ইমেজ ভার্চুয়াল ঠিকানা র্যান্ডমাইজেশন. বুটলোডার কার্নেল ইমেজ লোড করা ভার্চুয়াল ঠিকানা র্যান্ডমাইজ করতে সমর্থন করে। ঠিকানা র্যান্ডমাইজ করতে, কার্নেল কনফিগারেশনে RANDOMIZE_BASE কে true সেট করুন। বুটলোডারকে অবশ্যই /chosen/kaslr-seed ডিভাইস ট্রি নোডে একটি এলোমেলো u64 মান পাস করে এনট্রপি প্রদান করতে হবে।

  • যাচাইকৃত বুট। ভেরিফাইড বুট বুটলোডারকে নিশ্চিত করতে দেয় যে সমস্ত এক্সিকিউটেড কোড একটি বিশ্বস্ত উৎস থেকে এসেছে।

  • বুট কনফিগারেশন। বুট কনফিগারেশন অ্যান্ড্রয়েড 12 এবং উচ্চতর সংস্করণে উপলব্ধ এবং এটি বিল্ড এবং বুটলোডার থেকে অপারেটিং সিস্টেমে কনফিগারেশনের বিবরণ পাস করার একটি প্রক্রিয়া। Android 12-এর আগে, androidboot এর উপসর্গ সহ কার্নেল কমান্ড-লাইন প্যারামিটার ব্যবহার করা হয়।

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

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

কার্নেল কমান্ড লাইন

নিম্নলিখিত অবস্থান থেকে কার্নেল কমান্ড লাইন সংযুক্ত করুন:

  • বুটলোডার কমান্ড লাইন: বুটলোডার দ্বারা নির্ধারিত স্ট্যাটিক এবং ডাইনামিক প্যারামিটারের সেট

  • ডিভাইস ট্রি: chosen/bootargs নোড থেকে

  • defconfig : CONFIG_CMDLINE থেকে

  • boot.img : কমান্ড লাইন থেকে (অফসেট এবং আকারের জন্য, system/core/mkbootimg/bootimg.h দেখুন

অ্যান্ড্রয়েড 12 অনুযায়ী, androidboot.* প্যারামিটার যা আমাদের অ্যান্ড্রয়েড ইউজারস্পেসে পাস করতে হবে, আমরা কার্নেল কমান্ড লাইনের পরিবর্তে বুটকনফিগ ব্যবহার করতে পারি।