বুটলোডার হল ভেন্ডর-মালিকানাধীন ইমেজ যা ডিভাইসে
কার্নেল নিয়ে আসার জন্য দায়ী। বুটলোডার ডিভাইসের অবস্থা রক্ষা করে এবং বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট (TEE)
শুরু করা ও এর বিশ্বস্ততার রুট বাইন্ড করার জন্য
দায়িত্বপ্রাপ্ত। এছাড়াও, কার্নেলে এক্সিকিউশন সরানোর আগে বুটলোডার
boot এবং recovery পার্টিশনের ইন্টিগ্রিটি যাচাই করে।
বুটলোডার ফ্লোয়ের উদাহরণ
এখানে বুটলোডার ফ্লোয়ের একটি উদাহরণ দেওয়া হল:
মেমরি লোড ও ইনিশিয়ালাইজ করা।
যাচাই করা বুট ফ্লো অনুযায়ী ডিভাইস যাচাই করুন।
Verified Boot ফ্লো অনুযায়ী,
boot,dtbo,init_bootএবংrecoveryসহ বুট পার্টিশন যাচাই করুন। এই ধাপের অংশ হিসেবে, বুট ইমেজ হেডার ভার্সন চেক করুন এবং সেই অনুযায়ী হেডার পার্স করুন।A/B আপডেট ব্যবহার করা হলে, বুট করার জন্য বর্তমান স্লট নির্ধারণ করুন।
রিকভারি মোড বুট করা উচিত কিনা তা নির্ধারণ করুন। আরও তথ্যের জন্য, OTA আপডেট সাপোর্ট করা দেখুন।
boot.img,vendor_boot.img,init_boot.imgএবং অন্যান্য প্রোপাইটরি ভেন্ডর বুট ইমেজের মতো বুট ইমেজ লোড করুন। এইসব বুট ইমেজে কার্নেল ও র্যামডিস্ক ইমেজ থাকে।সেল্ফ-এক্সিকিউটেবল কম্প্রেসড বাইনারি হিসেবে কার্নেলকে মেমরিতে লোড করে। কার্নেল নিজেকে ডিকম্প্রেস করে এবং মেমরিতে এক্সিকিউট করা শুরু করে।
initramfsতৈরি করতে, মেমরিতে ramdisks এবং bootconfig বিভাগ লোড করুন।
বুটলোডার সম্পর্কিত অতিরিক্ত ফিচার
নিচে বুটলোডার সম্পর্কিত অতিরিক্ত ফিচারের একটি তালিকা দেওয়া হল যা আপনি ইমপ্লিমেন্ট করতে পারবেন:
ডিভাইস ট্রি ওভারলে (DTO)। ডিভাইস ট্রি ওভারলে বুটলোডারকে বিভিন্ন হার্ডওয়্যার কনফিগারেশন সাপোর্ট করতে দেয়। DTO-কে ডিভাইস ট্রি ব্লব (DTB)-এ কম্পাইল করা হয় যা বুটলোডার ব্যবহার করে।
কার্নেল ইমেজ ভার্চুয়াল অ্যাড্রেস র্যান্ডমাইজেশন। যে ভার্চুয়াল অ্যাড্রেসে কার্নেল ইমেজ লোড করা হয়, বুটলোডার সেটি র্যান্ডমাইজ করতে পারে। ঠিকানা র্যান্ডমাইজ করতে, কার্নেল কনফিগারেশনে
RANDOMIZE_BASE-কেtrue-এ সেট করুন। বুটলোডারকে অবশ্যই/chosen/kaslr-seedডিভাইস ট্রি নোডে একটি র্যান্ডম u64 ভ্যালু পাস করে এন্ট্রপি প্রদান করতে হবে।যাচাই করা বুট। যাচাই করা বুট, বুটলোডারকে নিশ্চিত করতে দেয় যে এক্সিকিউট করা সব কোড বিশ্বস্ত সোর্স থেকে এসেছে।
বুট কনফিগারেশন বুট কনফিগারেশন Android 12 এবং তার পরবর্তী ভার্সনে উপলভ্য এবং এটি বিল্ড ও বুটলোডার থেকে অপারেটিং সিস্টেমে কনফিগারেশন সংক্রান্ত বিবরণ পাস করার একটি মেকানিজম। Android 12-এর আগে, কার্নেল কমান্ড-লাইন প্যারামিটার
androidbootপ্রিফিক্সের সাথে ব্যবহার করা হয়।ওভার-দ্য-এয়ার (OTA) আপডেট। ফিল্ডে থাকা Android ডিভাইস, সিস্টেম, অ্যাপ সফ্টওয়্যার ও টাইম জোন সংক্রান্ত নিয়মের জন্য OTA আপডেট পেতে ও ইনস্টল করতে পারে। এই ফিচারের ফলে আপনার বুটলোডার ইমপ্লিমেন্টেশনের উপর প্রভাব পড়ে। OTA সম্পর্কে সাধারণ তথ্য পেতে, দেখুন OTA আপডেট। বুটলোডার-নির্দিষ্ট OTA প্রয়োগের বিবরণের জন্য, OTA আপডেট কাজ করে দেখুন।
ভার্সন বাইন্ডিং। ভার্সন বাইন্ডিং অপারেটিং সিস্টেম ও প্যাচ লেভেল ভার্সনে সুরক্ষা কী বাইন্ড করে। ভার্সন বাইন্ডিং নিশ্চিত করে যে কোনও আক্রমণকারী যদি সিস্টেম বা TEE সফ্টওয়্যারের কোনও পুরনো ভার্সনে কোনও দুর্বলতা খুঁজে পায়, তাহলে সে ডিভাইসটিকে দুর্বল ভার্সনে রোল ব্যাক করতে এবং নতুন ভার্সনে তৈরি কী ব্যবহার করতে পারবে না। ভার্সন বাইন্ডিংয়ের জন্য বুটলোডারকে নির্দিষ্ট কিছু তথ্য প্রদান করতে হবে। আরও তথ্যের জন্য, AVB প্রপার্টিতে ভার্সন সংক্রান্ত তথ্য দেখুন।
কার্নেল কমান্ড লাইন
নিম্নলিখিত লোকেশন থেকে কার্নেল কমান্ড লাইন কনক্যাটেনেট করুন:
বুটলোডার কমান্ড লাইন: বুটলোডার দ্বারা নির্ধারিত স্ট্যাটিক ও ডায়নামিক প্যারামিটারের সেট
ডিভাইস ট্রি:
chosen/bootargsনোড থেকেdefconfig:CONFIG_CMDLINEথেকেboot.img: কমান্ড লাইন থেকে (অফসেট ও সাইজের জন্য,system/core/mkbootimg/bootimg.hদেখুন
Android 12 থেকে, androidboot.* প্যারামিটারের জন্য,
যা আমাদের Android ইউজারস্পেসে পাস করতে হবে, আমরা
কার্নেল কমান্ড লাইনের পরিবর্তে bootconfig
ব্যবহার করতে পারি।