يمكن أن تتضمّن عمليات تنفيذ Android صورة لملف ثنائي كبير لشجرة الأجهزة (DTB) ليستخدمها برنامج التشغيل. يختلف موقع صورة DTB (وخيارات تحديد مَعلمات صورة DTB) بين إصدارات Android.
في نظام التشغيل Android 11، يجب أن تتوافق الأجهزة التي تستخدم صورة النواة العامة (GKI) مع قسم vendor boot، الذي يتضمّن جميع المعلومات الخاصة بالمورِّد والتي تم نقلها من قسم boot. بما أنّ صورة DTB تحتوي على بيانات خاصة بالمورّد، أصبحت الآن جزءًا من قسم التشغيل الخاص بالمورّد. لتحديد مَعلمات صورة DTB، يُرجى الاطّلاع على عنوان قسم التشغيل الخاص بالمورّد.
في نظام التشغيل Android 10، يمكن أن تتضمّن الأجهزة صورة DTB في قسم التشغيل. لتحديد مَعلمات صورة DTB، راجِع تضمين صورة DTB في صورة التشغيل.
في الإصدار 9 من نظام التشغيل Android والإصدارات الأقدم، يمكن أن توجد صورة DTB في قسم خاص بها أو يمكن إلحاقها بنواة
image.gz
لإنشاء صورة النواة + DTB (التي يتم تمريرها بعد ذلك إلىmkbootimg
لإنشاءboot.img
).
تنسيق صورة DTB
في الإصدار 10 من نظام التشغيل Android والإصدارات الأحدث، يجب أن تستخدم صورة DTB أحد التنسيقات التالية:
تتم إضافة كتل DT الواحدة تلو الأخرى. يستخدم برنامج التحميل الحقل
totalsize
في كل رأس FDT لقراءة وتحليل النقطة الثنائية المقابلة.أقسام DTB/DTBO: يوفّر برنامج التحميل طريقة فعّالة لاختيار حزمة DT الصحيحة من خلال فحص بنية
dt_table_entry
(التي تحتوي على الحقولid
وrev
وcustom
) التي يمكنها الاحتفاظ بمعلومات تعريف الأجهزة الخاصة بالإدخال. لمزيد من التفاصيل، يُرجى الاطّلاع على أقسام DTB/DTBO.
تضمين صورة DTB في صورة التشغيل
يمكن أن تتضمّن الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android صورة DTB في صورة التشغيل. ويؤدي ذلك إلى عدم الحاجة إلى أن يتيح نظام التشغيل Android النصوص البرمجية التي تضيف صورة DTB إلى image.gz
في النواة، كما يتيح استخدام اختبار مجموعة اختبارات المورّدين (VTS) للتحقّق من موضع DTB (وتوحيده).
بالإضافة إلى ذلك، بالنسبة إلى الأجهزة غير المتوافقة مع نظام التشغيل A/B، من الأفضل أن يكون DTB جزءًا من صورة الاسترداد بدلاً من أن يكون في قسم منفصل لتجنُّب المشاكل الناتجة عن عمليات OTA التي تم إيقافها. أثناء التحديث عبر شبكة غير سلكية (OTA)، إذا حدثت مشكلة بعد تعديل قسم DTB (ولكن قبل إكمال التحديث الكامل)، سيحاول الجهاز التشغيل في وضع الاسترداد لإكمال التحديث عبر شبكة غير سلكية. ومع ذلك، بما أنّه تم تعديل قسم DTB، قد يحدث عدم تطابق مع صورة الاسترداد (التي لم يتم تعديلها بعد). يؤدي تضمين صورة DTB كجزء من تنسيق صورة التمهيد إلى تجنُّب هذه المشاكل من خلال جعل صورة الاسترداد مكتفية ذاتيًا (أي أنّها لا تعتمد على قسم آخر).
بنية صورة التشغيل
يمكن أن تتضمّن الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android صورة DTB باستخدام بنية صورة التشغيل التالية.
قسم "صورة التشغيل" | عدد الصفحات |
---|---|
رأس التمهيد (صفحة واحدة) | 1 |
النواة (ل صفحات) | l = (kernel_size + page_size -
1) / page_size |
Ramdisk (صفحات m) | m = (ramdisk_size + page_size -
1) / page_size |
برنامج الإقلاع في المرحلة الثانية (عدد الصفحات) | n = (second_size + page_size -
1) / page_size |
Recovery DTBO (o pages) | o = (recovery_dtbo_size + page_size -
1) / page_size |
DTB (صفحات p) | p = (dtb_size + page_size -
1) / page_size |
مسار صورة DTB
بالنسبة إلى الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android، يمكنك استخدام
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
board
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)
توافُق برنامج الإقلاع
لكي يتم تشغيل VTS بنجاح على الأجهزة التي تعمل بنظام التشغيل Android 10، يجب أن يتيح برنامج التحميل صورة التشغيل المعدَّلة، ويجب إضافة المَعلمة androidboot.dtb_idx
لسطر أوامر النواة للإشارة إلى فهرس شجرة الأجهزة (DT) المحدّدة. يمكنك تحديد فهرس واحد فقط. على سبيل المثال، تعرض المَعلمة androidboot.dtb_idx=N
القيمة N
كفهرس يبدأ من الصفر لشجرة الأجهزة التي اختارها برنامج التحميل من مجموعة جداول وصف الأجهزة (DTB) المتوفّرة في صورة التشغيل.