استخدام DebugFS في الإصدار 12 من Android

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

توفِّر إصدارات Userdebug اختبارًا أفضل من إصدارات المستخدمين وتحصل على اختباره طوال دورة التطوير. تخفض الخطة التالية الفرق بين نوعَي الإصدار في ما يتعلّق بإمكانية الوصول إلى DebugFS تقدّم المزايا التالية:

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

يتم تصنيف عمليات الوصول إلى برامج تصحيح الأخطاء في إصدارات userdebug على أنها التالي:

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

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

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

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

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

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

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

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

يمكن للمطوّرين ضبط خاصية تصحيح الأخطاء الدائمة persist.dbg.keep_debugfs_mounted لإبقاء DebugFs مثبتة على على صعيد تصحيح أخطاء المستخدم والهندسة.

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