استفاده از DebugFS در Android 12

دستگاه‌هایی که با Android 12 عرضه می‌شوند و از نسخه‌های هسته بالاتر از نسخه ۵.۴ استفاده می‌کنند باید با هسته GKI عرضه شوند. برای اینکه شرکا بتوانند در ساخت‌های userdebug به DebugFS دسترسی داشته باشند، درحالی‌که در هسته GKI توسعه می‌دهند، پیکربندی هسته CONFIG_DEBUG_FS در defconfig مربوط به GKI فعال می‌شود. برای دستگاه‌هایی که با Android 12 عرضه می‌شوند، هرگز DebugFS را در ساخت‌های کاربر نصب نکنید.

ساخت‌های Userdebug نسبت‌به ساخت‌های کاربر پوشش آزمایشی بهتری دارند و درطول چرخه توسعه به‌شدت آزمایش می‌شوند. طرح زیر تفاوت بین دو نوع ساخت را ازنظر دسترسی به DebugFS به‌حداقل می‌رساند و این مزایا را ارائه می‌دهد:

  • از وابستگی تصادفی ساخت‌های userdebug به DebugFS برای عملکرد جدید جلوگیری می‌کند
  • اطمینان می‌دهد که هرگونه عملکرد موجود که به‌دلیل نبود DebugFS خراب شده است در اوایل چرخه توسعه شناسایی شود

دسترسی‌های Debugfs در ساخت‌های userdebug به این صورت دسته‌بندی می‌شوند:

  1. ‫DebugFS مقداردهی اولیه فایل درحین راه‌اندازی دستگاه، مثل دسترسی نوشتن به فایلی در DebugFS برای روشن کردن گردآوری داده‌های اشکال‌زدایی.
  2. تولید گزارش اشکال: dumpstate HAL فایل‌های DebugFS را وقتی DumpstateBoard() توسط dumpstate فراخوانی می‌شود می‌خواند. این اطلاعات بخشی از گزارش اشکال می‌شود.
  3. آزمایش و اعتبارسنجی مختص دستگاه.

جدول زیر نحوه پشتیبانی از هریک از این سه دسته را در Android 12 شرح می‌دهد. توجه داشته باشید که مورد زیر فقط برای ساخت‌های userdebug اعمال می‌شود زیرا DebugFS را نمی‌توان در ساخت‌های کاربر نصب کرد.

مورد استفاده ساخت Android 12 userdebug
راه‌اندازی یک‌باره DebugFS فایل، درطول شروع به کار. این دسترسی فقط یک‌بار درطول زمان راه‌اندازی اتفاق می‌افتد. ‫Dumpstate HAL این کار را درطول مقداردهی اولیه HAL انجام می‌دهد. برای فعال کردن همین مورد، init قبل‌از مقداردهی اولیه HAL،‏ DebugFS را در ساخت‌های userdebug سوار می‌کند. Init umount() را در DebugFS فراخوانی می‌کند وقتی راه‌اندازی دستگاه تکمیل شده باشد.
تولید گزارش اشکال: لایه انتزاع سخت‌افزاری dumpstate فایل‌های DebugFS را می‌خواند که بخشی از گزارش اشکال می‌شوند. در DumpstateBoard() پس‌از فراخوانی dumpstate توسط dumpstate HAL انجام شد (DumpstateDevice.cpp). ابزار dumpstate (بخشی از چارچوب Android) تضمین می‌کند که DebugFS درطول فراخوانی نصب شود.
آزمایش و اعتبارسنجی ویژه دستگاه Adb root and shell. DebugFS را از پوسته adb با دسترسی ریشه۱ سوار کنید.

۱برای سوار کردن DebugFS از adb shell با دسترسی ریشه، از این فرمان استفاده کنید:

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

کنش‌های الزامی شریک

شرکا باید موارد زیر را براساس این تغییرات در دستگاه‌های Android 12 اجرا کنند:

  • همه مقداردهی‌های اولیه زمان راه‌اندازی گره‌های DebugFS را درطول مقداردهی اولیه HAL dumpstate انجام دهید. برای مشاهده نمونه‌ای از نحوه انجام این کار، DNM: Example for boot time initialization of DebugFS files را ببینید.
  • دسترسی DebugFS در زمان اجرا مجاز نباشد. استثناهای زیر اعمال می‌شود:
    • تولید گزارش اشکال (از dumpstate HAL می‌آید)
    • آزمایش و اعتبارسنجی (دسترسی‌پذیر توسط adb root و shell - مطمئن شوید که DebugFS ابتدا نصب شده باشد)

توسعه‌دهندگان می‌توانند دارایی ماندگار اشکال‌زدایی را persist.dbg.keep_debugfs_mounted تنظیم کنند تا DebugFs در راه‌اندازی مجدد در ساخت‌های userdebug و eng نصب شود.

آزمایش‌های رعایت استاندارد GTS تضمین می‌کند که سیستم فایل DebugFS در ساخت‌های کاربر نصب نشده باشد. عبارت‌های Sepolicy neverallow تضمین می‌کنند که در دستگاه‌هایی که با Android نسخه ۱۲ یا بالاتر عرضه می‌شوند، به فرایندهای غیرمجاز اجازه دسترسی به DebugFs داده نمی‌شود.