از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
سوالات متداول کرنل اندروید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این سند حاوی سوالات متداول درباره هسته اندروید است که به عنوان هسته تصویر هسته عمومی (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 ) تماس بگیرید. پس از مشخص شدن لیست نمادها، یک اشکال در ردیاب مشکل ایجاد کنید و تغییری را در لیست نمادها آپلود کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Android kernel frequently asked questions\n\nThis document contains frequently asked questions about the Android kernel,\nknown also as the Generic Kernel Image (GKI) kernel. If you are unfamiliar with\nGKI and GKI kernel terminology, refer to the\n[Kernel overview](/docs/core/architecture/kernel).\n\nCan Kernel Module Interface (KMI) symbol lists be changed in a stable kernel?\n-----------------------------------------------------------------------------\n\nChanges that don't affect the existing KMI can be added to kernels that are\nfrozen. These changes include new exported functions and symbol list entries.\nFor details, see [Manage symbol lists](/docs/core/architecture/kernel/stable-kmi#managing-symbol-lists).\n\nCan I change structures used by vendor modules in a stable kernel?\n------------------------------------------------------------------\n\nStructures that are part of a KMI interface can't be changed in kernels with a\nfrozen KMI. Prior to KMI freeze, these structures can be changed.\n\nCan I change the kernel as long as I don't break binary or source compatibility?\n--------------------------------------------------------------------------------\n\nChanges that don't affect the KMI can be made as described in [Android-specific\npatches](/docs/core/architecture/kernel/kernel-code#android-specific-patches).\n\nHow does GKI handle kernel configuration?\n-----------------------------------------\n\nFor information on kernel configuration, refer to the\n[Changes to gki_defconfig](/docs/core/architecture/kernel/kernel-code#changes-to-gki-defconfig).\n\nHow do I handle upstream bug fixes for overwrites to existing GKI modules?\n--------------------------------------------------------------------------\n\nIf you create a vendor module based on a driver in\n[Android Common Kernel (ACK)](/docs/core/architecture/kernel/android-common),\nit's up to you to ensure that bug fixes from upstream and ACK are propagated\nto your module. Generally, it's in your best interest to use the GKI kernel and\nGKI modules without modification so these updates are provided consistently\nby Google.\n\nAre there GKI specific tests?\n-----------------------------\n\nThere are [Vendor Test Suite (VTS)](/docs/compatibility/vts) tests that verify\nthat a certified GKI build is installed and also to enforce per-release GKI\nrequirements. For example, there are Android 12 VTS tests for boot header v3\nand to verify the existence of required partitions in a device running a 5.10\nkernel.\n\nHow do I create the project defconfig fragment file for device builds?\n----------------------------------------------------------------------\n\nMany GKI-compliant devices use a config fragment to describe the configuration\noptions needed, in addition to `gki_defconfig`, to build the vendor modules.\nExamples that are part of the ACK codebase include Cuttlefish and DB845c.\nThere's no way to avoid some manual examination of configuration options\nto optimize the fragment, but `scripts/diffconfig` from the kernel sources\nis useful for comparing the results of `gki_defconfig` and\n`gki_defconfig+device.fragment`.\n\nIs there a workaround for modprobe treating - and _ as equivalent?\n------------------------------------------------------------------\n\nThe\n[modprobe man page](https://man7.org/linux/man-pages/man8/modprobe.8.html)\ncontains this description: \"`modprobe` intelligently adds\nor removes a module from the Linux kernel: note that for convenience, there is\nno difference between _ and - in module names (automatic underscore conversion\nis performed).\" The GKI team adheres to the standard upstream convention, so\nvendor tools or module naming conventions must take this adherence into account.\n\nHow do I enable debugfs for internal use?\n-----------------------------------------\n\nFor details on enabling debugfs, see [intrusive downstream debug\nfeatures](/docs/core/architecture/kernel/debugging-with-gki#intrusive-downstream-debug-features).\n\nHow can I resolve mismatched ABIs between the GKI kernel with a specific module configuration enabled?\n------------------------------------------------------------------------------------------------------\n\nMismatched ABIs between the GKI kernel and module configuration represents an\nimplicit module config dependency, where enabling a module causes a binary\nconfig to be built into the resulting kernel image. Reach out to the Android\nkernel team\n([kernel-team@android.com](mailto:kernel-team@android.com)) to determine a path\nforward. After the list of symbols is determined, create a bug in the\n[Issue Tracker](https://issuetracker.google.com/components/1124381) and upload\na change to the symbol list."]]