מכשירים שיושקו עם Android 12 באמצעות גרסאות ליבה גבוהות מ-v5.4 חייבים להימכר עם ליבה של GKI. כדי שהשותפים יוכלו לגשת ל-DebugFS
ב-builds של userdebug במהלך הפיתוח בליבה של GKI, הגדרת הליבה CONFIG_DEBUG_FS
מופעלת ב-defconfig של GKI.
לעולם אל תרכיבו את DebugFS
ב-builds של משתמשים במכשירים שיושקו עם Android 12.
לגרסאות build של Userdebug יש כיסוי בדיקות טוב יותר מאשר לגרסאות build של User, והן עוברות בדיקות מקיפות במהלך מחזור הפיתוח. התוכנית הבאה מצמצמת את ההבדל בין שני סוגי ה-build לגבי הגישה ל-DebugFS
, ומספקת את היתרונות הבאים:
- מונעת מ-builds של userdebug להסתמך בטעות על
DebugFS
לצורך פונקציונליות חדשה - מוודאים שכל פונקציונליות קיימת שנפגעת בגלל חוסר DebugFS תהיה ידועה בשלב מוקדם של מחזור הפיתוח
הגישה ל-Debugfs ב-builds של userdebug מסווגת באופן הבא:
DebugFS
הפעלות של קבצים במהלך האתחול של המכשיר, כמו גישה לכתיבה לקובץ ב-DebugFS
כדי להפעיל את איסוף הנתונים לניפוי באגים.- יצירת דוח על באג: ה-HAL של dumpstate קורא קבצים מסוג
DebugFS
כש-dumpstate
מפעיל אתDumpstateBoard()
. המידע הזה יהפוך לחלק מדוח הבאג. - בדיקה ואימות ספציפיים למכשיר.
בטבלה הבאה מוסבר איך כל אחת משלוש הקטגוריות האלה נתמכת ב-Android 12. חשוב לזכור שההוראות הבאות רלוונטיות רק לגרסאות build של userdebug, כי אי אפשר לטעון את DebugFS
בגרסאות build של user.
תרחיש לדוגמה | Android 12 userdebug build |
---|---|
אתחול חד-פעמי של קבצים מסוג DebugFS , במהלך ההפעלה.
הגישה הזו מתרחשת רק פעם אחת במהלך האתחול.
|
ה-HAL של Dumpstate מבצע זאת במהלך האתחול של ה-HAL. כדי להפעיל את התכונה הזו, המערכת מטעינה את DebugFS ב-init ב-builds של userdebug לפני שה-HAL מופעל.
Init קורא ל-umount() ב-DebugFS כשהמכשיר מסיים את תהליך האתחול.
|
יצירת דוח על באג: ה-HAL של dumpstate קורא את הקבצים DebugFS , שהופכים לחלק מדוח הבאג.
|
הפעולה מתבצעת על ידי HAL של dumpstate ב-DumpstateBoard() כשהיא מופעלת על ידי dumpstate
(DumpstateDevice.cpp).
הכלי dumpstate (חלק מה-framework של Android) מוודא ש-DebugFS מצורף במהלך ההפעלה.
|
בדיקה ואימות ספציפיים למכשיר | Adb root ו-shell. מחברים את DebugFS מ-adb shell עם גישה לרמה הבסיסית (root)1.
|
1כדי לטעון את DebugFS
מ-adb shell
עם גישת root, משתמשים בפקודה הבאה:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
הפעולות הנדרשות מהשותפים
השותפים חייבים לבצע את הפעולות הבאות בהתאם לשינויים האלה במכשירי Android 12:
- כל האיניציאליזציות של צמתים מסוג
DebugFS
בזמן האתחול מתרחשות במהלך האיניציאליזציה של HAL ב-dumpstate. דוגמה לאופן ביצוע הפעולה הזו מופיעה במאמר DNM: Example for boot time initialization ofDebugFS
files. - לא לאפשר גישה ל-
DebugFS
במהלך זמן הריצה. יש יוצאים מן הכלל:- יצירת דוח על באג (מגיע מ-HAL של dumpstate)
- בדיקה ואימות (אפשר לגשת אליהם באמצעות
adb root
ו-shell
– חשוב לוודא ש-DebugFS מוצמד קודם)
מפתחים יכולים להגדיר את המאפיין הקבוע של ניפוי הבאגים persist.dbg.keep_debugfs_mounted
כדי שהאחסון DebugFs
יישאר מותקן אחרי הפעלות מחדש ב-userdebug וב-eng build.
בדיקות התאימות ל-GTS מבטיחות שמערכת הקבצים DebugFS
לא תוצמד בגרסאות build של משתמשים. הצהרות neverallow
של Sepolicy מבטיחות שבמכשירים שמריצים Android מגרסה 12 ואילך, תהליכים לא מורשים לא יקבלו גישה ל-DebugFs
.