في نظام Android 12، تحل ميزة Bootconfig محل
خيارات androidboot.*
kernel cmdline قيد الاستخدام على Android 11
وأدنى. ميزة Bootconfig هي آلية لتمرير الإعدادات
تفاصيل من الإصدار وبرنامج الإقلاع إلى Android 12.
توفّر هذه الميزة طريقة لفصل مَعلمات الإعدادات لنظام التشغيل Android.
مساحة المستخدم من تلك الخاصة بالنواة. نقل نواة androidboot.*
الطويلة
إلى ملف Bootconfig على إنشاء مساحة على kernel cmdline ويجعل
المتاح للتوسع في المستقبل.
يجب أن تكون النواة (kernel) ومساحة المستخدم في Android متوافقة مع bootconfig
.
- الإصدار الأول الذي يتوافق مع هذا الإصدار: Android 12
- إصدار النواة الأول الذي يوفر هذا الدعم: النواة 12-5.4.xx kernel
تنفيذ ميزة التمهيد للأجهزة الجديدة التي تعمل بنظام تشغيل من 12 إلى 5.10.xx إصدار النواة. ولا تحتاج إلى تنفيذ ذلك في حال ترقية الأجهزة.
الأمثلة والمصدر
وعند عرض الأمثلة ورمز المصدر في هذا القسم، لاحظ أن تنسيق
يختلف قليلاً عن رمز bootconfig
عن تنسيق
kernel cmdline المستخدَم في Android 11 والإصدارات الأقدم.
ومع ذلك، يعد الاختلاف التالي مهمًا لاستخدامك:
- يجب فصل المعلَمات بتسلسل هروب السطر الجديد
\n
، وليس مسافات.
مثال على برنامج الإقلاع
للاطّلاع على مثال عن برنامج الإقلاع، يُرجى مراجعة برنامج الإقلاع المرجعي على شكل U-boot الخاص بـ Cuttlefish التنفيذ. في ما يلي تعهدان في المرجع. الارتفاعات الأولى يدعم إصدار رأس التشغيل إلى أحدث إصدار. في المثال، الالتزام بتحديثات (أو رفع) دعم الإصدار إلى الإصدار التالي، الإصدار 4. الفرصة الثانية يفعل شيئين؛ ويضيف التعامل مع تهيئة التمهيد، ويوضح إضافة المعلمات في وقت التشغيل:
مثال على الإصدار
في ما يتعلق بمثال إصدار يعرض تغييرات mkbootimg
لإنشاء
vendor_boot.img
مع الإصدار 4 من رأس تشغيل المورّد، يُرجى الاطّلاع على mkbootimg changes for
bootconfig
.
انظر تغير الحبار لتنفيذ ما يلي:
- استخدام (أو تحسين) إصدار رأس تشغيل المورد الإصدار 4
- أضِف bootconfig إلى kernel cmdline وانقل المَعلمات المختارة إلى Bootconfig.
التنفيذ
على الشركاء إضافة الدعم إلى برامج الإقلاع ونقل وقت الإنشاء
مَعلمات "androidboot.*
" من kernel cmdline إلى Bootconfig
الملف. وأفضل طريقة لتنفيذ هذا التغيير هي إجراء ذلك بشكل تدريجي؛ اطّلِع على
قسم التنفيذ والتحقّق المتزايد
للحصول على معلومات حول اتباع عملية تدريجية.
إذا كانت لديك تغييرات تبحث في ملف /proc/cmdline عن androidboot.*
يمكنك توجيهها إلى ملف /proc/bootconfig
بدلاً من ذلك. ro.boot.*
يتم ضبط الخصائص باستخدام قيم bootconfig
الجديدة، لذلك لن تحتاج إلى
التغييرات في التعليمات البرمجية باستخدام هذه الخصائص.
إجراء التغييرات
أولاً، عليك ترقية إصدار رأس التشغيل إلى الإصدار 4:
- BOARD_BOOT_HEADER_VERSION := 3
+ BOARD_BOOT_HEADER_VERSION := 4
أضِف المَعلمة bootconfig
kernel cmdline. وهذا يجعل النواة تبحث عن
قسم التمهيد:
BOARD_KERNEL_CMDLINE += bootconfig
يتم إنشاء معلمات التمهيد من المعلمات في
BOARD_BOOTCONFIG
، مثل kernel cmdline، يتم إنشاؤه من
BOARD\_KERNEL\_CMDLINE
يمكن نقل أي مَعلمات androidboot.*
كما هو، على النحو التالي:
- BOARD_KERNEL_CMDLINE += androidboot..selinux=enforcing
+ BOARD_BOOTCONFIG += androidboot..selinux=enforcing
التغييرات التي طرأت على برنامج الإقلاع
يعمل برنامج الإقلاع على إعداد initramfs
قبل الانتقال إلى النواة على الإنترنت. تسمح لك النواة
إعدادات التشغيل
وتبحث عن قسم Bootconfig، وتبحث عن أنها في نهاية
initramfs,
مع المقطع الدعائي المتوقّع.
يحصل برنامج الإقلاع على معلومات تنسيق vendor_boot.img
من المورِّد.
عنوان صورة بدء التشغيل.
الشكل 1. تخصيص الذاكرة التي تم ضبطها لتمهيد بدء نظام التشغيل Android 12
ينشئ برنامج الإقلاع قسم Bootconfig في الذاكرة. قسم Bootconfig على تخصيصات الذاكرة لما يلي:
- المعلمات
- حجم 4 مليار
parameters size
- حجم 4 مليار
parameters checksum
- سلسلة سحرية لـ Bootconfig 12 B (
#BOOTCONFIG\n
)
تأتي المعاملات من مصدرين: المَعلمات المعروفة في وقت الإصدار. غير المعروفة في وقت الإنشاء. يجب إضافة مَعلمات غير معروفة.
يتم تجميع المَعلمات المعروفة في وقت الإصدار في نهاية vendor_boot
.
صورة في قسم Bootconfig. يتم تخزين حجم القسم (بالبايت).
في حقل رأس تشغيل البائع vendor_bootconfig_size
.
ولا تُعرف المعلمات غير المعروفة في وقت الإصدار إلا في وقت التشغيل في برنامج الإقلاع. يجب إضافتها إلى نهاية قسم مَعلمات Bootconfig قبل تطبيق المقطع الدعائي لـ Bootconfig.
إذا كنت بحاجة إلى إضافة أي معلمات بعد تطبيق المقطع الدعائي لـ Bootconfig، استبدال المقطع الدعائي وإعادة تطبيقه
التنفيذ التزايدي والتحقق من الصحة
يمكنك تنفيذ ميزة Bootconfig بشكل تدريجي من خلال اتّباع العملية الموضّحة في هذا القسم. اترك معلمات kernel cmdline دون تغيير أثناء تتم إضافة معلمات Bootconfig.
في ما يلي خطوات التنفيذ التدريجي مع التحقّق من الصحة:
- أجرِ برنامج الإقلاع وأنشئ التغييرات، ثم نفِّذ ما يلي:
- استخدام المتغيّر
BOARD_BOOTCONFIG
لإضافة إعدادات تمهيد جديدة . - احتفظ بمعلمات kernel cmdline كما هي، بحيث لا من مواصلة بدء التشغيل بشكل صحيح. يجعل ذلك تصحيح الأخطاء والتحقق من الصحة كثيرًا.
- استخدام المتغيّر
- يمكنك إثبات صحة عملك من خلال التحقّق من محتوى
/proc/bootconfig
. إثبات الهوية ستظهر لك المَعلمة المضافة حديثًا بعد تشغيل الجهاز. - نقل مَعلمات
androidboot.*
من kernel cmdline إلى Bootconfig، باستخدام المتغيرBOARD_BOOTCONFIG
وبرنامج الإقلاع. - تحقّق من وجود كل مَعلمة في
/proc/bootconfig
وأنّ ذلك فهي ليست في/proc/cmdline
. إذا تمكنت من إثبات صحة تفاصيل الدخول هذه، سيتم كان ناجحًا.
اعتبارات الترقية والرجوع إلى إصدار سابق من "وكالات السفر على الإنترنت"
عندما تدير الترقيات عبر الهواء والرجوع إلى الإصدارات السابقة من يجب توخي الحذر خاصّة من خلال نظام التشغيل Android أو إصدارات النواة المختلفة.
Android 12 هو أول إصدار يتضمّن تهيئة والدعم. في حالة الرجوع إلى أي إصدار سابق، فإن معلمات kernel cmdline يجب استخدامه بدلاً من Bootconfig.
تدعم إصدارات النواة 12 إلى 5.4 والإصدارات الأحدث التكوين. في حال الرجوع إلى إصدار سابق إلى أي إصدار قبل ذلك(بما في ذلك 11-5.4)، يجب أن تكون معلمات kernel cmdline استخدام البيانات المختلفة.
يمكن إجراء عمليات ترقية من نظام التشغيل Android 11 والإصدارات الأقدم إلى Android 12 والإصدارات الأحدث لمواصلة استخدام التطبيقات. معلمات kernel cmdline. الأمر نفسه ينطبق على ترقية إصدارات النواة.
تحديد المشاكل وحلّها
عند تنفيذ خطوة التحقّق، في حال عدم ظهور المَعلمات المتوقعة
في /proc/bootconfig
، يمكنك التحقّق من سجلّات النواة في logcat
. هناك دائمًا سجل
وجود إدخال لتكوين التمهيد إذا كانت الكيرنل (النواة) تدعمه.
مثال على ناتج السجلّ
$ adb logcat | grep bootconfig
02-24 17:00:07.610 0 0 I Load bootconfig: 128 bytes 9 nodes
في حالة عرض سجل أخطاء، فإن هناك مشكلة في تحميل Bootconfig. لمعرفة أنواع الأخطاء المختلفة، يمكنك عرض init/main.c