نظرة عامة على برنامج الإقلاع

برنامج الإقلاع هو صورة مملوكة للمورّد مسؤولة عن تشغيل النواة على الجهاز. يحمي برنامج الإقلاع حالة الجهاز ويكون مسؤولاً عن تهيئة بيئة تنفيذ موثوقة (TEE) وربط جذر الثقة بها. يتحقّق مشغّل الإقلاع أيضًا من سلامة القسمين boot وrecovery قبل نقل التنفيذ إلى النواة.

مثال على مسار برنامج الإقلاع

في ما يلي مثال على مسار برنامج الإقلاع:

  1. تحميل الذاكرة وإعدادها

  2. عليك إثبات ملكية الجهاز وفقًا لخطوات التشغيل المتحقَّق منه.

  3. تحقَّق من أقسام التمهيد، بما في ذلك boot وdtbo وinit_boot و recovery، وفقًا لخطوات ميزة "التشغيل المتحقّق منه". كجزء من هذه الخطوة، تحقَّق من إصدار عنوان صورة التمهيد وحلِّل العنوان وفقًا لذلك.

  4. في حال استخدام التحديثات A/B، حدِّد الشريحة الحالية لبدء التشغيل.

  5. تحديد ما إذا كان يجب تشغيل وضع الاسترداد لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إتاحة التحديثات عبر الهواء.

  6. تحميل صور التشغيل، مثل boot.img وvendor_boot.img init_boot.img وصور التشغيل الأخرى الخاصة بالمورّدين تحتوي صور التمهيد هذه على صور النواة وذاكرة القرص.

    1. تحميل النواة في الذاكرة كملف ثنائي مضغوط قابل للتنفيذ الذاتي يزيل نواة النظام الضغط عن نفسها وتبدأ في التنفيذ في الذاكرة.

    2. حمِّل ملفات ramdisks وقسم Bootconfig إلى الذاكرة لإنشاء initramfs.

ميزات إضافية متعلقة ببرنامج التمهيد

في ما يلي قائمة بالميزات الإضافية التي يمكنك الاستفادة منها المرتبطة ببرنامج الإقلاع:

  • تداخل شجرة الأجهزة (DTO) تتيح الصورة المتراكبة لشجرة الجهاز لمسؤول التمهيد إتاحة إعدادات الأجهزة المختلفة. يتم تجميع ملف DTO في ملف ‎device tree blob (DTB) الذي يستخدمه مشغّل الإقلاع.

  • تخصيص عناوين افتراضية عشوائية لصورة النواة: يتيح أداة تحميل البرامج التمهيدية اختيار عنوان افتراضي عشوائي لتحميل صورة النواة. لترتيب العنوان عشوائيًا، يجب ضبط RANDOMIZE_BASE على true في إعدادات النواة. يجب أن يقدّم برنامج الإقلاع عنصرًا عشوائيًا من خلال تمرير قيمة u64 عشوائية في ملف node /chosen/kaslr-seed في شجرة الجهاز.

  • التشغيل المتحقّق منه: تتيح ميزة التشغيل المتحقّق منه لمشغِّل الإقلاع التأكّد من أنّ جميع الرموز البرمجية التي يتم تنفيذها مصدرها موثوق به.

  • إعدادات التشغيل تتوفّر إعدادات التمهيد في الإصدار Android 12 والإصدارات الأحدث، وهي آلية لنقل تفاصيل الضبط من الإصدار ومُشغِّل الإقلاع إلى نظام التشغيل. قبل الإصدار 12 من Android، كان يتم استخدام مَعلمات سطر أوامر kernel التي تحتوي على البادئة androidboot.

  • التحديثات عبر شبكة غير سلكية (OTA) يمكن لأجهزة Android في الميدان تلقّي تحديثات عبر شبكة غير سلكيّة (OTA) و تثبيتها على النظام وبرامج التطبيقات و قواعد المنطقة الزمنية. لهذه الميزة تأثيرات على تنفيذ bootloader. للحصول على معلومات عامة عن التحديثات عبر الهواء، يُرجى الاطّلاع على مقالة التحديثات عبر الهواء. للاطّلاع على تفاصيل تنفيذ التحديثات عبر الهواء الخاصة بوظيفة أداة تحميل البرامج، يُرجى الاطّلاع على مقالة إتاحة التحديثات عبر الهواء.

  • ربط الإصدار: تؤدي عملية ربط الإصدار إلى ربط مفاتيح الأمان بنظام التشغيل ومستوى تصحيح الأمان. يضمن ربط الإصدارات أن المهاجم الذي يكتشف نقطة ضعف في إصدار قديم من النظام أو برنامج TEE لا يمكنه إعادة الجهاز إلى الإصدار الذي يحتوي على ثغرة أمنية واستخدام المفاتيح التي تم إنشاؤها مع الإصدار الأحدث. يجب أن يوفر برنامج الإقلاع معلومات محددة لدعم ربط الإصدار. لمزيد من المعلومات، يُرجى الاطّلاع على معلومات الإصدار في سمات AVB.

سطر أوامر النواة

اربط سطر أوامر kernel من المواقع التالية:

  • سطر أوامر برنامج الإقلاع: مجموعة من المعلمات الثابتة والديناميكية التي يحددها برنامج الإقلاع

  • شجرة الجهاز: من عقدة chosen/bootargs

  • defconfig: من CONFIG_CMDLINE

  • boot.img: من سطر الأوامر (للعيوب والحجم، يُرجى الرجوع إلى system/core/mkbootimg/bootimg.h

اعتبارًا من Android 12، بالنسبة إلى مَعلمات androidboot.* التي علينا تمريرها إلى مساحة المستخدم في Android، يمكننا استخدام bootconfig بدلاً من سطر أوامر kernel.