نمای کلی هسته

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

ACKها از مخزن هسته/مشترک ساخته می‌شوند. این مخزن، مجموعه‌ای از هسته‌ی بالادستی لینوکس است که شامل وصله‌های اضافی مخصوص اندروید نیز می‌شود.

ACK هایی که ۵.۱۰ و بالاتر هستند، به عنوان هسته‌های *generic kernel images (GKI) نیز شناخته می‌شوند. هسته‌های GKI از جداسازی کد هسته عمومی و ماژول‌های GKI مستقل از سخت‌افزار از ماژول‌های فروشنده مخصوص سخت‌افزار پشتیبانی می‌کنند.

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

معماری هسته و ماژول فروشنده GKI.

شکل ۱. معماری هسته GKI و ماژول فروشنده.

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

در ادامه اصطلاحاتی که در سراسر مستندات هسته استفاده می‌شوند، آمده است.

انواع هسته

هسته مشترک اندروید (ACK)
کرنلی که پایین‌دست کرنل LTS است و شامل پچ‌هایی است که برای جامعه اندروید مهم هستند. این پچ‌ها با کرنل‌های اصلی لینوکس یا Long Term GKI ادغام نشده‌اند.

هسته‌هایی با نسخه‌های ۵.۱۰ و بالاتر، به عنوان هسته‌های تصویر هسته عمومی (GKI) نیز شناخته می‌شوند.

هسته پروژه منبع باز اندروید (AOSP).
به هسته مشترک اندروید مراجعه کنید.

ویژگی‌های اندروید ۱۲ را نمی‌توان به کرنل‌های ۴.۱۹ بک‌پورت کرد؛ مجموعه ویژگی‌ها مشابه دستگاهی خواهد بود که با اندروید ۱۱ و نسخه ۴.۱۹ عرضه شده و به اندروید ۱۲ ارتقا یافته است.

هسته تصویر هسته عمومی (GKI)

هر هسته ACK نسخه ۵.۱۰ و بالاتر (فقط aarch64). هسته GKI دارای این دو بخش است:

  • هسته عمومی - بخشی از هسته GKI که در همه دستگاه‌ها مشترک است.

  • ماژول‌های GKI - ماژول‌های هسته ساخته شده توسط گوگل که می‌توانند به صورت پویا در صورت لزوم روی دستگاه‌های مختلف بارگذاری شوند. این ماژول‌ها به عنوان مصنوعاتی از هسته GKI ساخته شده‌اند و در کنار GKI به عنوان آرشیو system_dlkm_staging_archive.tar.gz ارائه می‌شوند. ماژول‌های GKI توسط گوگل با استفاده از جفت کلید زمان ساخت هسته امضا می‌شوند و فقط با هسته GKI که با آن ساخته شده‌اند سازگار هستند.

رابط ماژول هسته (KMI) هسته

به هسته GKI مراجعه کنید.

هسته با پشتیبانی بلندمدت (LTS)

یک هسته لینوکس که به مدت ۲ تا ۶ سال پشتیبانی می‌شود. هسته‌های LTS سالی یک بار منتشر می‌شوند و اساس هر یک از هسته‌های رایج اندروید گوگل هستند.

انواع شاخه

شاخه هسته ACK KMI
شاخه‌ای که هسته‌های GKI برای آن ساخته شده‌اند. نام شاخه‌ها با نسخه‌های هسته مطابقت دارد، مانند android15-6.6 .
اندروید-ماین‌لاین
شاخه توسعه اولیه برای ویژگی‌های اندروید. وقتی یک هسته LTS جدید در بالادست اعلام می‌شود، هسته GKI جدید مربوطه از android-mainline منشعب می‌شود.

شاخه اصلی لینوکس : شاخه توسعه اولیه برای هسته‌های بالادستی لینوکس، از جمله هسته‌های LTS.

اصطلاحات دیگر

تصویر بوت تایید شده
هسته به صورت باینری ( boot.img ) ارائه و روی دستگاه فلش شد. این تصویر به عنوان گواهی‌شده در نظر گرفته می‌شود زیرا حاوی گواهی‌های تعبیه‌شده است، بنابراین گوگل می‌تواند تأیید کند که دستگاه با هسته تأییدشده توسط گوگل عرضه می‌شود.
ماژول هسته با قابلیت بارگذاری پویا (DLKM)
ماژولی که می‌تواند به صورت پویا در طول بوت دستگاه بسته به نیاز دستگاه بارگذاری شود. ماژول‌های GKI و vendor هر دو نوعی DLKM هستند. DLKMها به صورت .ko منتشر می‌شوند و می‌توانند درایور باشند یا سایر عملکردهای هسته را ارائه دهند.
پروژه GKI
یک پروژه گوگل که با جداسازی قابلیت‌های رایج هسته مرکزی از پشتیبانی SoC و برد مخصوص فروشندگان به ماژول‌های قابل بارگذاری، به پراکندگی هسته می‌پردازد.

تصویر هسته عمومی (GKI) : یک تصویر بوت که توسط گوگل تأیید شده و حاوی یک هسته GKI است که از یک درخت منبع ACK ساخته شده و برای فلش شدن در پارتیشن بوت یک دستگاه مبتنی بر اندروید مناسب است.

رابط ماژول هسته (KMI)
رابطی بین هسته GKI و ماژول‌های فروشنده که به ماژول‌های فروشنده اجازه می‌دهد مستقل از هسته GKI به‌روزرسانی شوند. این رابط شامل توابع هسته و داده‌های سراسری است که با استفاده از فهرست‌های نماد هر شریک، به عنوان وابستگی‌های فروشنده/OEM شناسایی شده‌اند.
ماژول فروشنده
یک ماژول مخصوص سخت‌افزار که توسط یک شریک توسعه داده شده و شامل SoC و قابلیت‌های مخصوص دستگاه است. ماژول فروشنده نوعی ماژول هسته با قابلیت بارگذاری پویا است.

قدم بعدی چیست؟

اگر در توسعه هسته اندروید تازه‌کار هستید، با خواندن مطالب زیر شروع کنید:

اگر در توسعه هسته GKI تازه‌کار هستید، با خواندن «توسعه GKI» شروع کنید.