سوالات متداول کرنل اندروید

این سند حاوی سوالات متداول درباره هسته اندروید است که به عنوان هسته تصویر هسته عمومی (GKI) نیز شناخته می شود. اگر با اصطلاحات هسته GKI و GKI آشنا نیستید، به نمای کلی Kernel مراجعه کنید.

آیا می توان لیست نمادهای رابط ماژول هسته (KMI) را در یک هسته پایدار تغییر داد؟

تغییراتی که بر KMI موجود تأثیر نمی‌گذارند، می‌توانند به هسته‌هایی که فریز شده‌اند اضافه شوند. این تغییرات شامل توابع جدید صادر شده و ورودی های لیست نمادها می شود. برای جزئیات، به مدیریت لیست نمادها مراجعه کنید.

آیا می توانم ساختارهای استفاده شده توسط ماژول های فروشنده را در یک هسته پایدار تغییر دهم؟

ساختارهایی که بخشی از یک رابط KMI هستند را نمی توان در هسته با KMI منجمد تغییر داد. قبل از فریز KMI، این ساختارها را می توان تغییر داد.

آیا می توانم تا زمانی که سازگاری باینری یا منبع را خراب نکنم، هسته را تغییر دهم؟

تغییراتی که KMI را تحت تأثیر قرار نمی‌دهند، می‌توانند همانطور که در وصله‌های مخصوص Android توضیح داده شده است ایجاد شوند.

چگونه GKI پیکربندی هسته را مدیریت می کند؟

برای اطلاعات در مورد پیکربندی هسته، به تغییرات در gki_defconfig مراجعه کنید.

چگونه می توانم رفع اشکال بالادستی را برای بازنویسی به ماژول های GKI موجود مدیریت کنم؟

اگر یک ماژول فروشنده بر اساس یک درایور در هسته مشترک Android (ACK) ایجاد می‌کنید، این به شما بستگی دارد که اطمینان حاصل کنید که رفع اشکال از بالادست و ACK به ماژول شما منتشر می‌شود. به طور کلی، استفاده از هسته GKI و ماژول‌های GKI بدون تغییر به نفع شماست، بنابراین این به‌روزرسانی‌ها به‌طور مداوم توسط Google ارائه می‌شوند.

آیا تست های خاص GKI وجود دارد؟

تست‌های مجموعه تست فروشنده (VTS) وجود دارد که تأیید می‌کند یک ساخت GKI تأیید شده نصب شده است و همچنین برای اجرای الزامات GKI هر نسخه. به عنوان مثال، تست‌های Android 12 VTS برای هدر بوت نسخه 3 و تأیید وجود پارتیشن‌های مورد نیاز در دستگاهی که دارای هسته 5.10 است، وجود دارد.

چگونه می توانم فایل قطعه قطعه defconfig پروژه را برای ساخت دستگاه ایجاد کنم؟

بسیاری از دستگاه‌های سازگار با GKI از یک قطعه پیکربندی برای توصیف گزینه‌های پیکربندی مورد نیاز، علاوه بر gki_defconfig ، برای ساخت ماژول‌های فروشنده استفاده می‌کنند. نمونه هایی که بخشی از پایگاه کد ACK هستند عبارتند از Cuttlefish و DB845c. هیچ راهی برای اجتناب از بررسی دستی گزینه‌های پیکربندی برای بهینه‌سازی قطعه وجود ندارد، اما scripts/diffconfig از منابع هسته برای مقایسه نتایج gki_defconfig و gki_defconfig+device.fragment مفید است.

آیا راه حلی برای درمان modprobe - و _ به عنوان معادل وجود دارد؟

صفحه modprobe man حاوی این توضیحات است: " modprobe به طور هوشمند یک ماژول را از هسته لینوکس اضافه یا حذف می کند: توجه داشته باشید که برای راحتی، هیچ تفاوتی بین _ و - در نام ماژول ها وجود ندارد (تبدیل خودکار زیر خط انجام می شود). تیم GKI به کنوانسیون استاندارد بالادستی پایبند است، بنابراین ابزارهای فروشنده یا قراردادهای نامگذاری ماژول باید این پایبندی را در نظر بگیرند.

چگونه می توانم اشکال زدایی را برای استفاده داخلی فعال کنم؟

برای جزئیات در مورد فعال کردن اشکال‌زدایی، به ویژگی‌های مزاحم اشکال‌زدایی پایین‌دستی مراجعه کنید.

چگونه می توانم ABI های ناسازگار بین هسته GKI را با یک پیکربندی ماژول خاص فعال کنم؟

ABI های نامتناسب بین پیکربندی هسته و ماژول GKI یک وابستگی ضمنی پیکربندی ماژول را نشان می دهد، جایی که فعال کردن یک ماژول باعث می شود یک پیکربندی باینری در تصویر هسته حاصل ساخته شود. برای تعیین مسیر رو به جلو، با تیم هسته Android ( kernel-team@android.com ) تماس بگیرید. پس از مشخص شدن لیست نمادها، یک اشکال در ردیاب مشکل ایجاد کنید و تغییری را در لیست نمادها آپلود کنید.

من دستگاه‌های سازگار با GKI 1.0 را در این زمینه دارم که از هسته 5.4 استفاده می‌کنند که با اندروید 11 و 12 راه‌اندازی شده است. چه گزینه‌های ارتقای هسته در دسترس هستند، و چگونه می‌توانم این دستگاه‌ها را هنگام ارتقا به اندروید 12 و 13 آزمایش کنم؟

برای لیستی از نسخه های هسته پشتیبانی شده برای نسخه های راه اندازی و ارتقا به ماتریس سازگاری مراجعه کنید. در اینجا دو نمونه ارتقا آورده شده است:

مثال 1: کاربر با دستگاهی که با Android 11 با هسته android11-5.4 ( GKI 1.0 ) راه اندازی می شود، می تواند هنگام ارتقاء به Android 12 یکی از این گزینه ها را انتخاب کند:

  • به هسته android12-5.10 GKI 2.0 ارتقا دهید (اکیداً توصیه می شود).

  • هسته android11-5.4 را حفظ کنید.

  • به هسته android12-5.4 ارتقا دهید.

مثال 2: کاربری با دستگاهی که با Android 12 با هسته android12-5.4 یا android12-5.10 راه اندازی می شود، می تواند هنگام ارتقاء به Android 13 یکی از این گزینه ها را انتخاب کند:

  • به هسته android13-5.10 یا android13-5.15 GKI 2.0 ارتقا دهید (اکیداً توصیه می شود).

  • هسته android12-5.4 GKI 1.0 را حفظ کنید.

  • هسته android12-5.10 GKI 2.0 را حفظ کنید.

به طور خاص برای تست انطباق Treble، توصیه می کنیم یکی از موارد زیر را انجام دهید:

  • هسته شریک را با هسته گواهی شده GKI 1.0 ( android11-5.4 یا android12-5.4 ) جایگزین کنید.

  • بسته به انتخاب شما، هسته گواهی شده GKI 2.0 ( android12-5.10 ، android13-5.10 یا android13-5.15 ) را ارسال کنید.

می‌توانید ساخت‌های GKI 2.0 را از نسخه‌های منتشر شده Generic Kernel Image (GKI) دانلود کنید.

،

این سند حاوی سوالات متداول درباره هسته اندروید است که به عنوان هسته تصویر هسته عمومی (GKI) نیز شناخته می شود. اگر با اصطلاحات هسته GKI و GKI آشنا نیستید، به نمای کلی Kernel مراجعه کنید.

آیا می توان لیست نمادهای رابط ماژول هسته (KMI) را در یک هسته پایدار تغییر داد؟

تغییراتی که بر KMI موجود تأثیر نمی‌گذارند، می‌توانند به هسته‌هایی که فریز شده‌اند اضافه شوند. این تغییرات شامل توابع جدید صادر شده و ورودی های لیست نمادها می شود. برای جزئیات، به مدیریت لیست نمادها مراجعه کنید.

آیا می توانم ساختارهای استفاده شده توسط ماژول های فروشنده را در یک هسته پایدار تغییر دهم؟

ساختارهایی که بخشی از یک رابط KMI هستند را نمی توان در هسته با KMI منجمد تغییر داد. قبل از فریز KMI، این ساختارها را می توان تغییر داد.

آیا می توانم تا زمانی که سازگاری باینری یا منبع را خراب نکنم، هسته را تغییر دهم؟

تغییراتی که KMI را تحت تأثیر قرار نمی‌دهند، می‌توانند همانطور که در وصله‌های مخصوص Android توضیح داده شده است ایجاد شوند.

چگونه GKI پیکربندی هسته را مدیریت می کند؟

برای اطلاعات در مورد پیکربندی هسته، به تغییرات در gki_defconfig مراجعه کنید.

چگونه می توانم رفع اشکال بالادستی را برای بازنویسی به ماژول های GKI موجود مدیریت کنم؟

اگر یک ماژول فروشنده بر اساس یک درایور در هسته مشترک Android (ACK) ایجاد می‌کنید، این به شما بستگی دارد که اطمینان حاصل کنید که رفع اشکال از بالادست و ACK به ماژول شما منتشر می‌شود. به طور کلی، استفاده از هسته GKI و ماژول‌های GKI بدون تغییر به نفع شماست، بنابراین این به‌روزرسانی‌ها به‌طور مداوم توسط Google ارائه می‌شوند.

آیا تست های خاص GKI وجود دارد؟

تست‌های مجموعه تست فروشنده (VTS) وجود دارد که تأیید می‌کند یک ساخت GKI تأیید شده نصب شده است و همچنین برای اجرای الزامات GKI هر نسخه. به عنوان مثال، تست‌های Android 12 VTS برای هدر بوت نسخه 3 و تأیید وجود پارتیشن‌های مورد نیاز در دستگاهی که دارای هسته 5.10 است، وجود دارد.

چگونه می توانم فایل قطعه قطعه defconfig پروژه را برای ساخت دستگاه ایجاد کنم؟

بسیاری از دستگاه‌های سازگار با GKI از یک قطعه پیکربندی برای توصیف گزینه‌های پیکربندی مورد نیاز، علاوه بر gki_defconfig ، برای ساخت ماژول‌های فروشنده استفاده می‌کنند. نمونه هایی که بخشی از پایگاه کد ACK هستند عبارتند از Cuttlefish و DB845c. هیچ راهی برای اجتناب از بررسی دستی گزینه‌های پیکربندی برای بهینه‌سازی قطعه وجود ندارد، اما scripts/diffconfig از منابع هسته برای مقایسه نتایج gki_defconfig و gki_defconfig+device.fragment مفید است.

آیا راه حلی برای درمان modprobe - و _ به عنوان معادل وجود دارد؟

صفحه modprobe man حاوی این توضیحات است: " modprobe به طور هوشمند یک ماژول را از هسته لینوکس اضافه یا حذف می کند: توجه داشته باشید که برای راحتی، هیچ تفاوتی بین _ و - در نام ماژول ها وجود ندارد (تبدیل خودکار زیر خط انجام می شود). تیم GKI به کنوانسیون استاندارد بالادستی پایبند است، بنابراین ابزارهای فروشنده یا قراردادهای نامگذاری ماژول باید این پایبندی را در نظر بگیرند.

چگونه می توانم اشکال زدایی را برای استفاده داخلی فعال کنم؟

برای جزئیات در مورد فعال کردن اشکال‌زدایی، به ویژگی‌های مزاحم اشکال‌زدایی پایین‌دستی مراجعه کنید.

چگونه می توانم ABI های ناسازگار بین هسته GKI را با یک پیکربندی ماژول خاص فعال کنم؟

ABI های نامتناسب بین پیکربندی هسته و ماژول GKI یک وابستگی ضمنی پیکربندی ماژول را نشان می دهد، جایی که فعال کردن یک ماژول باعث می شود یک پیکربندی باینری در تصویر هسته حاصل ساخته شود. برای تعیین مسیر رو به جلو، با تیم هسته Android ( kernel-team@android.com ) تماس بگیرید. پس از مشخص شدن لیست نمادها، یک اشکال در ردیاب مشکل ایجاد کنید و تغییری را در لیست نمادها آپلود کنید.

من دستگاه‌های سازگار با GKI 1.0 را در این زمینه دارم که از هسته 5.4 استفاده می‌کنند که با اندروید 11 و 12 راه‌اندازی شده است. چه گزینه‌های ارتقای هسته در دسترس هستند، و چگونه می‌توانم این دستگاه‌ها را هنگام ارتقا به اندروید 12 و 13 آزمایش کنم؟

برای لیستی از نسخه های هسته پشتیبانی شده برای نسخه های راه اندازی و ارتقا به ماتریس سازگاری مراجعه کنید. در اینجا دو نمونه ارتقا آورده شده است:

مثال 1: کاربر با دستگاهی که با Android 11 با هسته android11-5.4 ( GKI 1.0 ) راه اندازی می شود، می تواند هنگام ارتقاء به Android 12 یکی از این گزینه ها را انتخاب کند:

  • به هسته android12-5.10 GKI 2.0 ارتقا دهید (اکیداً توصیه می شود).

  • هسته android11-5.4 را حفظ کنید.

  • به هسته android12-5.4 ارتقا دهید.

مثال 2: کاربری با دستگاهی که با Android 12 با هسته android12-5.4 یا android12-5.10 راه اندازی می شود، می تواند هنگام ارتقاء به Android 13 یکی از این گزینه ها را انتخاب کند:

  • به هسته android13-5.10 یا android13-5.15 GKI 2.0 ارتقا دهید (اکیداً توصیه می شود).

  • هسته android12-5.4 GKI 1.0 را حفظ کنید.

  • هسته android12-5.10 GKI 2.0 را حفظ کنید.

به طور خاص برای تست انطباق Treble، توصیه می کنیم یکی از موارد زیر را انجام دهید:

  • هسته شریک را با هسته گواهی شده GKI 1.0 ( android11-5.4 یا android12-5.4 ) جایگزین کنید.

  • بسته به انتخاب شما، هسته گواهی شده GKI 2.0 ( android12-5.10 ، android13-5.10 یا android13-5.15 ) را ارسال کنید.

می‌توانید ساخت‌های GKI 2.0 را از نسخه‌های منتشر شده Generic Kernel Image (GKI) دانلود کنید.