از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
ACK ها از مخزن هسته/مشترک ساخته می شوند. این مخزن یک ابرمجموعه از هسته بالادست لینوکس، با وصله های اضافی مخصوص اندروید است.
ACKهایی که 5.10 و بالاتر هستند به عنوان هسته *عمومی کرنل (GKI) نیز شناخته می شوند. هستههای GKI از جداسازی کد هسته عمومی و ماژولهای GKI از ماژولهای فروشنده مخصوص سختافزار پشتیبانی میکنند.
تعامل بین هسته GKI و ماژول های فروشنده توسط رابط ماژول هسته (KMI) فعال می شود که از لیست های نمادی تشکیل شده است که عملکردها و داده های جهانی مورد نیاز ماژول های فروشنده را شناسایی می کند. شکل 1 ساختار هسته GKI و ماژول فروشنده را نشان می دهد:
شکل 1. معماری هسته GKI و ماژول فروشنده.
واژه نامه هسته
در زیر اصطلاحاتی که در اسناد هسته استفاده می شوند آورده شده است.
انواع هسته
هسته مشترک اندروید (ACK)
هسته ای که در پایین دست یک هسته LTS است و شامل وصله هایی است که برای جامعه اندروید مهم هستند. این وصلهها در هسته اصلی لینوکس یا هستههای بلندمدت GKI ادغام نشدهاند.
هستههای دارای نسخههای 5.10 و بالاتر به عنوان هستههای تصویر هسته عمومی (GKI) نیز شناخته میشوند.
ویژگیهای اندروید 12 را نمیتوان به هستههای 4.19 پشتیبانگیری کرد. مجموعه ویژگی مشابه دستگاهی است که با نسخه 4.19 در اندروید 11 راه اندازی شده و به اندروید 12 ارتقا یافته است.
هسته تصویر هسته عمومی (GKI).
هر هسته ACK 5.10 و بالاتر (فقط aarch64). هسته GKI دارای دو بخش است:
هسته عمومی - بخشی از هسته GKI که در همه دستگاه ها مشترک است.
ماژولهای GKI - ماژولهای هسته ساختهشده توسط Google که میتوانند به صورت پویا در دستگاهها در صورت لزوم بارگیری شوند. این ماژول ها به عنوان مصنوعات هسته GKI ساخته شده اند و در کنار GKI به عنوان بایگانی system_dlkm_staging_archive.tar.gz تحویل داده می شوند. ماژولهای GKI توسط Google با استفاده از جفت کلید زمان ساخت هسته امضا میشوند و فقط با هسته GKI که با آن ساخته شدهاند سازگار هستند.
یک هسته لینوکس که برای 2 تا 6 سال پشتیبانی می شود. هسته های LTS یک بار در سال منتشر می شوند و اساس هر یک از هسته های مشترک اندروید گوگل هستند.
انواع شاخه
شاخه هسته ACK KMI
شاخه ای که هسته های GKI برای آن ساخته می شوند. نام شاخه ها با نسخه های هسته، مانند android15-6.6 مطابقت دارد.
Android-Mainline
شاخه توسعه اولیه برای ویژگی های اندروید. هنگامی که یک هسته LTS جدید در بالادست اعلام می شود، هسته GKI جدید مربوط به آن از android-mainline منشعب می شود.
خط اصلی لینوکس : شاخه توسعه اولیه برای هسته های بالادستی لینوکس، از جمله هسته های LTS.
سایر اصطلاحات
تصویر بوت تایید شده
هسته به شکل باینری ( boot.img ) تحویل داده شد و بر روی دستگاه فلش شد. این تصویر تأیید شده در نظر گرفته میشود زیرا حاوی گواهیهای جاسازیشده است، بنابراین Google میتواند تأیید کند که دستگاه با یک هسته تأیید شده توسط Google ارسال میشود.
ماژول هسته قابل بارگذاری پویا (DLKM)
ماژولی که می تواند به صورت پویا در هنگام بوت دستگاه بسته به نیاز دستگاه بارگذاری شود. ماژولهای GKI و فروشنده هر دو نوع DLKM هستند. DLKM ها به شکل .ko منتشر می شوند و می توانند درایور باشند یا سایر عملکردهای هسته را ارائه دهند.
پروژه GKI
یک پروژه Google که با جداسازی عملکرد هسته هسته مشترک از SoC و پشتیبانی برد مخصوص فروشنده به ماژول های قابل بارگذاری، به تجزیه هسته پرداخته است.
Generic Kernel Image (GKI) : یک تصویر بوت تایید شده توسط Google که حاوی یک هسته GKI است که از درخت منبع ACK ساخته شده است و برای فلش شدن در پارتیشن بوت یک دستگاه مجهز به اندروید مناسب است.
رابط ماژول هسته (KMI)
یک رابط بین هسته GKI و ماژول های فروشنده که به ماژول های فروشنده اجازه می دهد مستقل از هسته GKI به روز شوند. این رابط شامل توابع هسته و داده های جهانی است که با استفاده از لیست نمادهای هر شریک به عنوان وابستگی های فروشنده/OEM شناسایی شده اند.
ماژول فروشنده
یک ماژول مخصوص سخت افزار که توسط یک شریک توسعه یافته است و حاوی SoC و عملکردهای خاص دستگاه است. ماژول فروشنده نوعی ماژول هسته قابل بارگذاری پویا است.
بعدش چی
اگر در توسعه هسته اندروید تازه کار هستید، با خواندن مطالب زیر شروع کنید:
اگر در توسعه هسته GKI تازه کار هستید، با خواندن توسعه GKI شروع کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و 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,["# Kernel overview\n\nThe Android kernel is based on an upstream\n[Linux Long Term Supported (LTS) kernel](https://www.kernel.org/category/lts). At Google, LTS kernels are combined\nwith Android-specific patches to form *Android Common Kernels (ACKs)*.\n\nACKs are built from the [kernel/common](https://android.googlesource.com/kernel/common) repository. This repository is a\nsuperset of the upstream Linux kernel, with additional Android-specific patches.\n\nACKs that are 5.10 and higher are also known as \\*generic kernel images (GKI)\nkernels. GKI kernels support the separation of the hardware-agnostic *generic\ncore kernel* code and [GKI modules](/docs/core/architecture/kernel/modules#gki-modules) from hardware-specific\n[vendor modules](/docs/core/architecture/kernel/modules#vendor-modules).\n\nThe interaction between the GKI kernel and vendor modules is enabled by the\n*Kernel Module Interface (KMI)* consisting of symbol lists identifying the\nfunctions and global data required by vendor modules. Figure 1 shows the GKI\nkernel and vendor module architecture:\n\n**Figure 1.** GKI kernel and vendor module architecture.\n| **Note:** The GKI kernel, GKI module, and vendor module architecture is the result of a multi-year effort known as the Generic Kernel Image (GKI) project. For information about this project and its phases, refer to [The Generic Kernel Image (GKI) project](/docs/core/architecture/kernel/generic-kernel-image).\n| **Note:** Kernels are referred to by their platform version followed by a kernel version. For example, `android15-6.6` is kernel for Android 15 with a version of `6.6`.\n\nKernel glossary\n---------------\n\nFollowing are terms used throughout the kernel documentation.\n\n### Kernel types\n\n*Android Common Kernel (ACK)*\n: A kernel that is downstream of a LTS kernel and includes patches that are\n important to the Android community. These patches haven't been merged into\n Linux mainline or Long Term GKI kernels.\n\nKernel with versions of 5.10 and higher are also referred to as\n[Generic Kernel Image (GKI)](#gkik) kernels.\n\n*Android Open Source Project (AOSP) kernel*\n: See [Android Common Kernel](#ack).\n\nAndroid 12 features can't be backported to 4.19 kernels; the feature set would\nbe similar to a device that launched with 4.19 on Android 11 and upgraded to\nAndroid 12.\n\n*Generic Kernel Image (GKI) kernel*\n\n: Any 5.10 and higher [ACK kernel](#ack)(aarch64 only). The GKI kernel has these\n two parts:\n\n - *Generic kernel* - The portion of the GKI kernel that is common across\n all devices.\n\n - *GKI modules* - Kernel modules built by Google that can be dynamically\n loaded on devices where applicable. These modules are built as artifacts\n of the GKI kernel and are delivered alongside GKI as the\n `system_dlkm_staging_archive.tar.gz` archive. GKI modules are signed by\n Google using the kernel build time key pair and are compatible only with the\n GKI kernel that they're built with.\n\n*Kernel Module Interface (KMI) kernel*\n\n: See [GKI kernel](#gkik).\n\n*Long Term Supported (LTS) kernel*\n\n: A Linux kernel that's supported for 2 to 6 years. [LTS kernels](https://www.kernel.org/category/lts) are\n released once per year and are the basis for each of Google's\n [Android Common Kernels](#ack).\n\n### Branch types\n\n*ACK KMI kernel branch*\n: The branch for which [GKI kernels](#gkik) are built. Branch names correspond\n to kernel versions, such as `android15-6.6`.\n\n*Android-mainline*\n: The primary development branch for Android features. When a new\n [LTS kernel](#lts) is declared upstream, the corresponding new\n [GKI kernel](#gkik)GKI kernel is branched from android-mainline.\n\n*Linux mainline*\n:The primary development branch for the upstream Linux kernels, including LTS\nkernels.\n\n### Other terms\n\n*Certified boot image*\n: The kernel delivered in binary form (`boot.img`) and flashed onto the device.\n This image is considered certified because contains embedded certificates so\n Google can verify that the device ships with a kernel certified by Google.\n\n*Dynamically loadable kernel module (DLKM)*\n: A module that can be dynamically loaded during device boot depending on the\n needs of the device. GKI and vendor modules are both types of DLKMs. DLKMs are\n released in `.ko` form and can be drivers or can deliver other kernel\n functionality.\n\n*GKI project*\n: A Google project addressing kernel fragmentation by separating common core\n kernel functionality from vendor-specific SoC and board support into loadable\n modules.\n\n*Generic Kernel Image (GKI)*\n:A boot image certified by Google that contains a [GKI kernel](#gkik) built from\nan [ACK](#ack) source tree and is suitable to be flashed to the boot partition\nof an Android-powered device.\n\n*Kernel Module Interface (KMI)*\n: An interface between the [GKI kernel](#gkik) and vendor modules allowing\n vendor modules to be updated independently of the GKI kernel. This interface\n consists of kernel functions and global data that have been identified as\n vendor/OEM dependencies using per-partner symbol lists.\n\n*Vendor module*\n: A hardware-specific module developed by a partner and that contains SoC and\n device-specific functionality. A vendor module is a type of dynamically loadable\n kernel module.\n\nWhat's next\n-----------\n\nIf you're new to Android kernel development, start by reading the\nfollowing:\n\n- [Long Term Stable Kernels](/docs/core/architecture/kernel/releases) - Background on upstream LTS kernels which feed into ACKs.\n- [Android Common Kernels](/docs/core/architecture/kernel/android-common) - Background on ACKs.\n\nIf you're new to GKI kernel development, start by reading\n[GKI development](/docs/core/architecture/kernel/gki-dev)."]]