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

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

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

في ما يلي مثال على مسار أداة تحميل التشغيل:

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

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

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

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

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

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

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

    2. حمِّل أقراص RAM وقسم bootconfig في الذاكرة لإنشاء initramfs.

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

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

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

  • توزيع عشوائي للعنوان الافتراضي لصورة النواة: يتيح أداة تحميل البرامج التمهيدية اختيار عنوان افتراضي عشوائي لتحميل صورة النواة. لتحديد العنوان بشكل عشوائي، اضبط RANDOMIZE_BASE على true في إعدادات kernel. يجب أن يقدّم برنامج الإقلاع عنصرًا عشوائيًا من خلال تمرير قيمة 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.