שימוש ב-DebugFS באנדרואיד 12

מכשירים המופעלים עם אנדרואיד 12 באמצעות גרסאות ליבה גבוהות מגרסה 5.4 נדרשים לשלוח עם ליבת GKI. כדי ששותפים יוכלו לגשת DebugFS ב-userdebug builds בזמן שהם מפתחים על ליבת GKI, תצורת הליבה CONFIG_DEBUG_FS מופעלת ב-GKI defconfig. לעולם אל תעלה DebugFS ב-builds של משתמש עבור מכשירים המופעלים ב-Android 12.

ל-Userdebug builds יש כיסוי בדיקות טוב יותר מאשר ל-User builds ונבחנים כבדים לאורך מחזור הפיתוח. התוכנית הבאה ממזערת את ההבדל בין שני סוגי הבנייה ביחס לגישה DebugFS , ומספקת את היתרונות האלה:

  • מונעת מ-userdebug בונה תלויה בטעות ב- DebugFS לפונקציונליות חדשה
  • מבטיח שכל פונקציונליות קיימת שנשברה בגלל היעדר DebugFS ידועה בשלב מוקדם של מחזור הפיתוח

גישה ל-debugfs ב-userdebug builds מסווגות באופן הבא:

  1. אתחולי קבצי DebugFS במהלך אתחול המכשיר, כגון גישת כתיבה לקובץ ב- DebugFS כדי להפעיל איסוף נתוני ניפוי באגים.
  2. יצירת דיווח באגים: ה-dumpstate HAL קורא קבצי DebugFS כאשר DumpstateBoard() מופעל על ידי dumpstate . מידע זה הופך לחלק מדוח הבאגים.
  3. בדיקה ואימות ספציפיים למכשיר.

הטבלה הבאה מתארת ​​כיצד כל אחת משלוש הקטגוריות הללו נתמכת ב-Android 12. שים לב שהדברים הבאים חלים רק על בניית userdebug מכיוון שלא ניתן לטעון DebugFS ב-builds של משתמש.

מקרה שימוש בניית באגים ל-Android 12
אתחול קבצי DebugFS חד פעמי, במהלך ההפעלה . גישה זו מתרחשת רק פעם אחת במהלך זמן האתחול. Dumpstate HAL מבצע זאת במהלך אתחול HAL. כדי לאפשר את אותו הדבר, init מעלה DebugFS ב-userdebug builds לפני אתחול ה-HAL. Init קורא ל- umount() ב- DebugFS כשהמכשיר השלים את האתחול.
יצירת דיווח באגים : ה-dumpstate HAL קורא קבצי DebugFS , שהופכים לחלק מדוח הבאג. נעשה על ידי dumpstate HAL בתוך DumpstateBoard() כאשר מופעל על ידי dumpstate ( DumpstateDevice.cpp ). כלי ה-dumpstate (חלק ממסגרת האנדרואיד) מבטיח שה- DebugFS נטען במהלך ההפעלה.
בדיקה ואימות ספציפיים למכשיר אדב שורש וקליפה. הר DebugFS ממעטפת adb עם גישת שורש 1 .

1 כדי לטעון DebugFS מ- adb shell עם גישת שורש, השתמש בפקודה זו:

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

פעולות שותף נדרשות

שותפים חייבים לחוקק את הדברים הבאים בהתבסס על השינויים האלה במכשירי Android 12:

  • הפוך את כל האתחולים בזמן האתחול של צמתי DebugFS לקרות במהלך אתחול HAL של מצב dump. לדוגמא כיצד לעשות זאת, ראה DNM: דוגמה לאתחול זמן אתחול של קבצי DebugFS .
  • אל תאפשר גישה DebugFS במהלך זמן ריצה. החריגים הבאים חלים:
    • יצירת דיווח באגים (מגיע מ-HAL של dumpstate)
    • בדיקה ואימות (נגישים על ידי adb root shell ודא שה-DebugFS מותקן תחילה)

מפתחים יכולים להגדיר את מאפיין ה-persistent debug persist.dbg.keep_debugfs_mounted כדי לשמור על DebugFs רכובים על פני אתחולים מחדש ב-userdebug ו-eng builds.

בדיקות תאימות ל-GTS מבטיחות שמערכת הקבצים DebugFS אינה מותקנת בבתי משתמש. הצהרות Sepolicy neverallow מבטיחות שבמכשירים המופעלים ב-Android 12 ומעלה, תהליכים לא מורשים אינם ניתנים לגישה ל- DebugFs .