يمكن أن تتضمّن عمليات تنفيذ Android ملفًا مضغوطًا لشجرة الجهاز (DTB) لاستخدامه في bootloader. يختلف موقع صورة DTB (وخيارات تحديد مَعلمات صورة DTB) بين إصدارات Android.
في نظام التشغيل Android 11، يجب أن تتيح الأجهزة التي تستخدم صورة النواة العامة (GKI) استخدام قسم التمهيد الخاص بالمورِّد الذي يتضمّن جميع المعلومات الخاصة بالمورِّد والتي تم نقلها من قسم التمهيد. بما أنّ صورة DTB تحتوي على بيانات خاصة بالمورّد، أصبحت الآن جزءًا من قسم التمهيد الخاص بالمورّد. لتحديد مَعلَمات صور DTB، يمكنك الاطّلاع على تمهيد البائع .
في Android 10، يمكن أن تتضمّن الأجهزة صورة DTB في قسم التمهيد. لتحديد مَعلمات صور DTB، يمكنك الاطّلاع على تضمين نموذج DTB في صورة التشغيل
في الإصدار 9 من نظام التشغيل Android والإصدارات الأقدم، يمكن أن تكون صورة DTB متوفّرة في القسم الخاص بها أو يمكن إلحاقها بالنواة
image.gz
لإنشاء ملفboot.img
(الذي يتم تمريره بعد ذلك إلىmkbootimg
لإنشاءboot.img
).
تنسيق صورة DTB
في الإصدار 10 من Android والإصدارات الأحدث، يجب أن تستخدم صورة DTB أحد التنسيقات التالية:
مجموعات DT متسلسلة واحدة تلو الأخرى يستخدم مشغّل الإقلاع حقل
totalsize
في كلّ عنوان FDT لقراءة العنصر المرتبط وتحليله.أقسام DTB/DTBO: ويوفر برنامج الإقلاع طريقة فعالة لتحديد نقطة DT الصحيحة عن طريق فحص بنية
dt_table_entry
(تحتوي علىid
،rev
وcustom
) التي يمكن أن تحتوي على معلومات تعريف الأجهزة للنطاق المدخل. لمعرفة التفاصيل، يُرجى الاطّلاع على DTB/DTBO. الأقسام:
تضمين صورة DTB في صورة التشغيل
يمكن أن تتضمّن الأجهزة التي تعمل بنظام التشغيل Android 10 صورة DTB في
صورة التمهيد. ويؤدي ذلك إلى عدم الحاجة إلى أن يتيح نظام التشغيل Android النصوص البرمجية التي تُلحق
صورة DTB بـ image.gz
في النواة، ويسمح باستخدام اختبار مجموعة اختبارات (VTS) لدى المورّدين للتحقّق من موضع DTB (ووضع معايير له).
علاوة على ذلك، بالنسبة إلى الأجهزة التي لا تستخدم نظام A/B، يكون من الآمن استخدام مقياس DTB كجزء من عملية بدلاً من وضعها في قسم منفصل لمنع حدوث المشكلات التي يتسبب فيها وتعطلت وكالات السفر على الإنترنت. أثناء التحديث عبر الهواء، في حالة حدوث مشكلة بعد إجراء تقسيم DTB (ولكن قبل إكمال التحديث الكامل)، يحاول الجهاز بدء وضع الاسترداد لإكمال التحديث عبر الهواء؛ لأن قسم DTB يحتوي على قد تم تحديثه بالفعل، فقد يحدث عدم تطابق مع صورة الاسترداد (التي تحتوي على لم يتم تحديثها بعد). وجود صورة DTB كجزء من تنسيق صورة التمهيد مثل هذه المشكلات من خلال جعل صورة الاسترداد كافية ذاتيًا (أي لا تعتمد على قسم آخر).
بنية صورة التشغيل
الأجهزة التي تعمل بنظام التشغيل Android 10 قد تتضمّن صورة بحجم DTB باستخدام بنية صورة التمهيد التالية.
قسم صورة تشغيل الجهاز | عدد الصفحات |
---|---|
عنوان التشغيل (صفحة واحدة) | 1 |
النواة (الصفحات الطويلة) | l = (kernel_size + page_size -
1) / page_size |
Ramdisk (صفحات m) | م = (ramdisk_size + page_size -
1) / page_size |
برنامج الإقلاع من المرحلة الثانية (عدد الصفحات) | n = (second_size + page_size -
1) / page_size |
DTBO للاسترداد (صفحات) | o = (recovery_dtbo_size + page_size -
1) / page_size |
DTB (صفحات p) | p = (dtb_size + page_size -
1) / page_size |
مسار صورة DTB
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 10، يمكنك استخدام أداة
mkbootimg.py
والوسيطات التالية لتحديد مسار ملف DTB
.
الوسيطة | الوصف |
---|---|
dtb |
المسار إلى صورة DTB المراد تضمينه في صور التشغيل/الاسترداد. |
dtb_offset |
عند إضافتها إلى الوسيطة base ، يتم توفير التحميل الفعلي.
العنوان لشجرة الأجهزة النهائية. على سبيل المثال، إذا كانت الوسيطة base
هي 0x10000000 وكانت الوسيطة dtb_offset
هي 0x01000000 ، تتم تعبئة dtb_addr_field في عنوان
صورة التمهيد على النحو التالي: 0x11000000 . |
يجب استخدام متغيّر إعدادات اللوحة BOARD_PREBUILT_DTBIMAGE_DIR
لتحديد
المسار المؤدّي إلى صورة DTB. إذا كان هناك أكثر من ملف واحد يحتوي على اللاحقة *.dtb
موجودًا في الدليل BOARD_PREBUILT_DTBIMAGE_DIR
، يُجمِّع نظام إنشاء Android
الملفات لإنشاء صورة DTB النهائية المستخدَمة في
إنشاء صورة التمهيد.
لتمرير الوسيطة dtb
إلى mkbootimg.py
باستخدام صورة DTB من
الدليل المحدد بواسطة BOARD_PREBUILT_DTBIMAGE_DIR
، متغير تكوين اللوحة
يجب ضبط BOARD_INCLUDE_DTB_IN_BOOTIMG
على true
. مثلاً:
BOARD_INCLUDE_DTB_IN_BOOTIMG := true
يمكنك إلحاق الوسيطة dtb_offset
بلوحة BOARD_MKBOOTIMG_ARGS
config مع علامات الإزاحة الأخرى وإصدار العنوان. مثلاً:
BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --dtb_offset $(BOARD_DTB_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
التوافق مع برنامج الإقلاع
لكي يتم تشغيل اختبار الأمان في الوقت الفعلي بنجاح على الأجهزة التي تعمل بنظام Android
10، يجب أن يكون مُشغِّل الإقلاع متوافقًا مع صورة الإقلاع المعدَّلة
ويجب إضافة مَعلمة سطر الأوامر androidboot.dtb_idx
لنظام التشغيل kernel للإشارة
إلى فهرس شجرة الجهاز المحدّدة (DT). يمكنك تحديد خيار واحد فقط (1)
الفهرس على سبيل المثال، تُبلغ المعلمة androidboot.dtb_idx=N
عن N
على أنه
فهرس يستند إلى صفر لشجرة الجهاز المحددة بواسطة برنامج الإقلاع من مجموعة
تتوفّر قيم DTB في صورة التشغيل.