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