דף זה מכסה כיצד להגדיר תכונת ליבה חדשה כמודול GKI או להגדיר תכונת ליבה מובנית קיימת כמודול GKI.
הגדר תכונה חדשה כמודול GKI
עבור התכונה החדשה, ערוך את
gki_defconfig
והגדר את פריט התצורה של תכונת הליבה הנדרשת מ-n
ל-m
(=m
). הגדר הגדרה זו גם ב-arch/arm64/configs/gki_defconfig
וגםarch/x86/configs/gki_defconfig
.הוסף את קובצי ה-KO (
.ko
) שנוצרו עבור התכונה למקטעCOMMON_GKI_MODULES_LIST
שלcommon/modules.bzl
. הוסף את הקבצים בסדר ממוין. אם אינך בטוח בכל הקבצים שנוצרו, ה-build נכשל ומפרט את כל קבצי ה-KO הדרושים להוספה לרשימה.הוסף את אותה קבוצה של קבצי KO משלב 2, ממוינים בסדר עולה עבור חיפוש בינארי בזמן ריצה, אל
common/android/gki_{ARCH}_protected_modules
כדי לייעד את המודול כמודול GKI מוגן. עדכן את רשימת הייצוא המוגנים כדי לכלול כאלה מהמודול החדש שנוסף ב-common/android/abi_gki_protected_exports_{ARCH}
באמצעותtools/bazel run //common:kernel_aarch64_abi_update_protected_exports
עבורaarch64
. מודולים המוגדרים כמודולי GKI מוגנים עדיין חייבים להיות מאושרים על ידי Google כדי להיות מודולים מוגנים רשמיים.ודא שקבצי KO שנוספו לאחרונה משלב 2 מועתקים ל-
out/<androidX-YZ>/dist/system_dlkm.img
של הליבה ו-out/ androidX-YZ /dist/system_dlkm_staging_archive.tar.gz
. מודולים בארכיוןsystem_dlkm_staging_archive.tar.gz
יכולים לשמש כקלט ליצירתsystem_dlkm.img
בבניית הפלטפורמה.שלח את השינויים שלך לבדיקה. מודולי GKI הם תכונת ליבה של אנדרואיד בלבד, כך שאין צורך לשלוח תיקוני המרת מודולים במעלה הזרם. עם זאת, עליך לפעול לפי הנחיות אחרות כדי לשלוח תיקוני Android Common Kernel (ACK) .
הגדר תכונה מובנית של ליבה כמודול GKI
עבור תכונת ליבה מובנית קיימת, ערוך את
gki_defconfig
והגדר את פריט התצורה של תכונת הקרנל הנדרשת מ-y
ל-m
(=m
). הגדר הגדרה זו גם ב-arch/arm64/configs/gki_defconfig
וגםarch/x86/configs/gki_defconfig
.הוסף את קובצי ה-KO (
.ko
) שנוצרו עבור התכונה למקטעCOMMON_GKI_MODULES_LIST
שלcommon/modules.bzl
. הוסף את הקבצים בסדר ממוין. אם אינך בטוח בכל הקבצים שנוצרו, ה-build נכשל ומפרט את כל קבצי ה-KO הדרושים להוספה לרשימה.הוסף את אותה קבוצה של קבצי KO משלב 2, ממוינים בסדר עולה עבור חיפוש בינארי בזמן ריצה, אל
common/android/gki_{ARCH}_protected_modules
כדי לייעד את המודול כמודול GKI מוגן. עדכן את רשימת הייצוא המוגנים כדי לכלול כאלה מהמודול החדש שנוסף ב-common/android/abi_gki_protected_exports_{ARCH}
באמצעותtools/bazel run //common:kernel_aarch64_abi_update_protected_exports
עבורaarch64
. מודולים המוגדרים כמודולי GKI מוגנים עדיין חייבים להיות מאושרים על ידי Google כדי להיות מודולים מוגנים רשמיים.ודא שקובצי KO של מודול שהומרו לאחרונה משלב 2 מועתקים ל-
out/<androidX-YZ>/dist/system_dlkm.img
ו-out/ androidX-YZ /dist/system_dlkm_staging_archive.tar.gz
הליבה. מודולים בארכיוןsystem_dlkm_staging_archive.tar.gz
יכולים לשמש כקלט ליצירתsystem_dlkm.img
בבניית הפלטפורמה.שלח את השינויים שלך לבדיקה. מודולי GKI הם תכונת ליבה של אנדרואיד בלבד, כך שאין צורך לשלוח תיקוני המרת מודולים במעלה הזרם. עם זאת, עליך לפעול לפי ההנחיות האחרות כדי לשלוח תיקוני Android Common Kernel (ACK) .
המר מודול GKI מוגן לבלתי מוגן
הסר את המודול שמומר ממוגן ללא מוגן מרשימת המודולים המוגנים ב-
common/android/gki_protected_modules
.עדכן את רשימת היצואים המוגנים כדי לא לכלול כאלה מהמודול הלא מוגן שהומר לאחרונה ב-
common/android/abi_gki_protected_exports_{ARCH}
באמצעותtools/bazel run //common:kernel_aarch64_abi_update_protected_exports
עבורaarch64
.שלח את השינויים שלך לבדיקה. מודולי GKI הם תכונת ליבה של אנדרואיד בלבד, כך שאין צורך לשלוח תיקוני המרת מודולים במעלה הזרם. עם זאת, עליך לפעול לפי ההנחיות האחרות כדי לשלוח תיקוני Android Common Kernel (ACK) .
מדריך מהיר לפתרון הפרת סמל מודולי GKI
כאשר מודולים לא חתומים מפרים את הגנת הסמלים הקיימת עבור מודולי GKI, ייתכן שתיתקל בשני סוגים של שגיאות במהלך טעינת המודול, וכתוצאה מכך כשל.
1. מודול לא חתום באמצעות הסמל המוגן
שְׁגִיאָה:
module: Protected symbol: some_kernel_function (err -13)
גורם:
הקובץ module.ko
הוא מודול ספק לא חתום ומנסה לפתור את הסמל המיוצא של מודול GKI some_kernel_function
במהלך הטעינה, מבלי להיות רשום ברשימת סמלי הספק.
פתרון הבעיה:
אם module.ko
אינו מודול GKI מוגן, עדכון רשימת הסמלים יפתור את השגיאה על ידי הכללת some_kernel_function
ברשימת הסמלים של הספק. לחלופין, השתמש בגרסת GKI של module.ko
.
2. מודול לא חתום מייצא את הסמל המוגן
שְׁגִיאָה:
module: exports protected symbol some_kernel_function
גורם:
המודול המייצא את some_kernel_function
הוא מודול GKI מוגן, ו- module.ko
הוא כנראה גרסה מותאמת אישית לא חתומה של אותו מודול. כאשר module.ko
מנסה לייצא some_kernel_function
, שניתן לייצא רק על ידי מודול GKI חתום, הטעינה נכשלת עם הודעה זו.
פתרון הבעיה:
ניתן לתקן זאת על ידי שימוש בגרסת GKI של המודול שמייצא some_kernel_function
, אם המודול הלא חתום הוא גרסה מותאמת אישית.