استخدام DebugFS في Android 12

يجب أن تكون الأجهزة التي تعمل بنظام التشغيل Android 12 باستخدام إصدارات ‎kernel أعلى من الإصدار 5.4 مزوّدة بنواة GKI. لكي يتمكّن الشركاء من الوصول إلى DebugFS في إصدارات userdebug أثناء تطويرهم باستخدام ملف تعريف ‎GKI النواة، يتم تفعيل إعدادات ملف تعريف النواة CONFIG_DEBUG_FS في ملف تعريف GKI defconfig. عدم تركيب DebugFS مطلقًا في إصدارات المستخدمين للأجهزة التي تعمل بالإصدار 12 من Android

توفّر إصدارات Userdebug تغطية اختبار أفضل من إصدارات المستخدمين، ويتم اختبارها بشكل مكثّف طوال دورة التطوير. تعمل الخطة التالية على تقليل الفرق بين نوعَي الإصدار في ما يتعلّق بالوصول إلى DebugFS، وتوفر الفوائد التالية:

  • منع إصدارات userdebug من الاعتماد عن طريق الخطأ على DebugFS للحصول على وظائف جديدة
  • التأكّد من أنّ أي وظيفة حالية تتعذّر بسبب عدم توفّر DebugFS معروفة في وقت مبكر من دورة التطوير

يتم تصنيف عمليات الوصول إلى Debugfs في عمليات إنشاء userdebug على النحو التالي:

  1. عمليات إعداد ملفات DebugFS أثناء تشغيل الجهاز، مثل إذن الوصول للكتابة إلى ملف في DebugFS لتفعيل جمع بيانات تصحيح الأخطاء
  2. إنشاء تقرير أخطاء: يقرأ HAL dumpstate ملفات DebugFS عندما يُستخدَم DumpstateBoard() من قِبل dumpstate. تصبح هذه المعلومات جزءًا من تقرير الخطأ.
  3. الاختبار والتحقّق من الأجهزة

يوضِّح الجدول التالي كيفية إتاحة كل فئة من هذه الفئات الثلاث في الإصدار 12 من نظام التشغيل Android. يُرجى العِلم أنّ الخطوات التالية لا تنطبق إلا على إصدارات userdebug، لأنّه لا يمكن تركيب DebugFS في إصدارات المستخدم.

حالة الاستخدام إصدار userdebug من Android 12
إعداد ملفات DebugFS لمرة واحدة أثناء بدء التشغيل لا يحدث هذا الوصول إلا مرة واحدة أثناء عملية التمهيد. ويعمل Dumpstate HAL على تنفيذ ذلك أثناء عملية إعداد HAL. لتفعيل ذلك، يُثبِّت init DebugFS في إصدارات userdebug قبل بدء HAL. يتصل Init بـ umount() على DebugFS عند اكتمال عملية تشغيل الجهاز.
إنشاء تقرير الخطأ: يقرأ HAL dumpstate ملفّات DebugFS، والتي تصبح جزءًا من تقرير الخطأ. يتم تنفيذ ذلك من خلال HAL dumpstate في غضون DumpstateBoard() عند استدعائه من خلال dumpstate (DumpstateDevice.cpp). تضمن أداة dumpstate (جزء من إطار عمل Android) ربط DebugFS أثناء الاستدعاء.
الاختبار والتحقّق من الأجهزة Adb root وshell شغِّل DebugFS من shell adb باستخدام إذن الوصول إلى الجذر1.

1لتركيب DebugFS من adb shell باستخدام إذن الوصول إلى الجذر، استخدِم الأمر التالي:

adb shell mount -t debugfs debugfs /sys/kernel/debug.

إجراءات الشركاء المطلوبة

على الشركاء تنفيذ ما يلي استنادًا إلى هذه التغييرات في أجهزة Android 12:

  • يجب أن تتم جميع عمليات الإعداد لعقد DebugFS أثناء عملية إعداد HAL لحالة التمهيد. للاطّلاع على مثال على كيفية إجراء ذلك، يُرجى الاطّلاع على DNM: مثال على بدء تشغيل ملفات DebugFS في وقت التشغيل.
  • لا تسمح بالوصول إلى DebugFS أثناء وقت التشغيل. تنطبق الاستثناءات التالية:
    • إنشاء تقرير أخطاء (يأتي من HAL dumpstate)
    • الاختبار والتحقق (يمكن الوصول إليهما من خلال adb root وshell - تأكَّد من تركيب DebugFS أولاً)

يمكن للمطوّرين ضبط السمة الثابتة لتصحيح الأخطاء persist.dbg.keep_debugfs_mounted لإبقاء DebugFs مركّبًا على مستوى عمليات إعادة التشغيل في إصدارَي userdebug وeng.

تضمن اختبارات الامتثال لبرنامج GTS عدم تثبيت نظام الملفات DebugFS في إصدارات المستخدمين. تضمن عبارات neverallow في سياسة الأمان عدم منح العمليات غير المصرَّح بها إذنًا بالوصول إلى DebugFs على الأجهزة التي تعمل بالإصدار 12 من Android أو الإصدارات الأحدث.