نمای کلی هسته

هسته اندروید مبتنی بر یک هسته بالادستی لینوکس با پشتیبانی طولانی مدت (LTS) است. در Google، هسته‌های LTS با وصله‌های مخصوص اندروید ترکیب می‌شوند تا هسته‌های مشترک اندروید (ACK) را تشکیل دهند.

ACK های جدیدتر (نسخه 5.4 و بالاتر) به عنوان هسته های GKI نیز شناخته می شوند. هسته‌های GKI از جداسازی کد هسته عمومی و ماژول‌های GKI از ماژول‌های فروشنده مخصوص سخت‌افزار پشتیبانی می‌کنند.

هسته GKI با ماژول‌های فروشنده مخصوص سخت‌افزار که شامل سیستم روی تراشه (SoC) و کد مخصوص برد هستند، تعامل دارد. تعامل بین هسته GKI و ماژول های فروشنده توسط رابط ماژول هسته (KMI) فعال می شود که از لیست های نمادی تشکیل شده است که عملکردها و داده های جهانی مورد نیاز ماژول های فروشنده را شناسایی می کند. شکل 1 ساختار هسته GKI و ماژول فروشنده را نشان می دهد:

معماری GKI
شکل 1. معماری GKI

واژه نامه هسته

این بخش شامل عباراتی است که در اسناد هسته استفاده می شود.

انواع هسته

هسته مشترک اندروید (ACK)
هسته ای که در پایین دست یک هسته LTS است و شامل وصله های مورد علاقه جامعه اندروید است که در هسته های اصلی لینوکس یا با پشتیبانی طولانی مدت (LTS) ادغام نشده اند. ACK های جدیدتر (نسخه 5.4 و بالاتر) به عنوان هسته های GKI نیز شناخته می شوند زیرا از جداسازی کدهای عمومی آگنوستیک سخت افزاری و ماژول های GKI آگنوستیک سخت افزاری پشتیبانی می کنند.
هسته پروژه منبع باز اندروید (AOSP).
Android Common Kernel را ببینید.
ویژگی هسته
هسته ای که ویژگی های انتشار پلتفرم برای آن تضمین شده است که پیاده سازی شوند. به عنوان مثال، در اندروید 12، دو هسته ویژگی android12-5.4 و android12-5.10 بودند. ویژگی‌های اندروید 12 را نمی‌توان به هسته‌های 4.19 پشتیبان‌گیری کرد. مجموعه ویژگی مشابه دستگاهی است که با نسخه 4.19 در اندروید 11 راه اندازی شده و به اندروید 12 ارتقا یافته است.
هسته هسته عمومی
بخشی از هسته GKI که در همه دستگاه ها مشترک است.
هسته تصویر هسته عمومی (GKI).
هر هسته ACK جدیدتر (5.4 و بالاتر) (در حال حاضر فقط aarch64). این هسته دارای دو بخش است: هسته اصلی GKI با کد مشترک در همه دستگاه‌ها و ماژول‌های GKI توسعه‌یافته توسط Google که می‌توانند به صورت پویا در دستگاه‌ها در صورت لزوم بارگذاری شوند.
هسته رابط ماژول هسته (KMI).
به هسته GKI مراجعه کنید.
Kernel را راه اندازی کنید
هسته‌ای که برای راه‌اندازی دستگاهی برای انتشار پلتفرم اندرویدی معتبر است. به عنوان مثال، در اندروید 12، هسته های راه اندازی معتبر 4.19، 5.4 و 5.10 بودند.
هسته با پشتیبانی طولانی مدت (LTS).
یک هسته لینوکس که برای 2 تا 6 سال پشتیبانی می شود. هسته های LTS یک بار در سال منتشر می شوند و پایه هر یک از ACK های Google هستند.

انواع شاخه

شاخه هسته ACK KMI
شاخه ای که هسته های GKI برای آن ساخته می شوند. به عنوان مثال، android12-5.10 و android13-5.15.
Android-Mainline
شاخه توسعه اولیه برای ویژگی های اندروید. هنگامی که یک هسته جدید LTS در بالادست اعلام می شود، هسته جدید GKI مربوطه از android-mainline منشعب می شود.
خط اصلی لینوکس
شاخه توسعه اولیه برای هسته های بالادستی لینوکس، از جمله هسته های LTS.

سایر اصطلاحات

تصویر بوت تایید شده
هسته به شکل باینری ( boot.img ) تحویل داده شد و بر روی دستگاه فلش شد. این تصویر به این معنا تأیید شده است که حاوی گواهی‌های تعبیه‌شده است، بنابراین Google می‌تواند تأیید کند که دستگاه با یک هسته تأیید شده توسط Google ارسال می‌شود.
ماژول هسته قابل بارگذاری پویا (DLKM)
ماژولی که می تواند به صورت پویا در هنگام بوت دستگاه بسته به نیاز دستگاه بارگذاری شود. ماژول‌های GKI و فروشنده هر دو نوع DLKM هستند. DLKM ها به شکل .ko منتشر می شوند و می توانند درایور باشند یا سایر عملکردهای هسته را ارائه دهند.
پروژه GKI
یک پروژه Google که با جداسازی عملکرد هسته هسته مشترک از SoC و پشتیبانی برد مخصوص فروشنده به ماژول های قابل بارگذاری، به تجزیه هسته پرداخته است.
تصویر هسته عمومی (GKI)
یک تصویر بوت تایید شده توسط Google که حاوی یک هسته GKI است که از درخت منبع ACK ساخته شده است و برای فلش شدن در پارتیشن بوت دستگاه اندرویدی مناسب است.
KMI
یک رابط بین هسته GKI و ماژول های فروشنده که به ماژول های فروشنده اجازه می دهد مستقل از هسته GKI به روز شوند. این رابط شامل توابع هسته و داده های جهانی است که با استفاده از لیست نمادهای هر شریک به عنوان وابستگی های فروشنده/OEM شناسایی شده اند.
ماژول های GKI
ماژول‌های هسته ساخته‌شده توسط Google که می‌توانند به صورت پویا در دستگاه‌ها در صورت لزوم بارگذاری شوند. این ماژول ها به عنوان مصنوعات هسته GKI ساخته شده اند و در کنار GKI به عنوان بایگانی system_dlkm_staging_archive.tar.gz تحویل داده می شوند. ماژول‌های GKI توسط Google با استفاده از جفت کلید زمان ساخت هسته امضا می‌شوند و فقط با هسته GKI که با آن ساخته شده‌اند سازگار هستند.
ماژول فروشنده
یک ماژول مخصوص سخت افزار که توسط یک شریک توسعه یافته است و حاوی SoC و عملکردهای خاص دستگاه است. ماژول فروشنده نوعی ماژول هسته قابل بارگذاری پویا است.

بعدش چی؟