این صفحه پروژه تصویر هسته عمومی (GKI) و نحوه افزایش پایداری اندروید و بهبود امنیت توسط آن را شرح میدهد.
تاریخچه
هر دستگاه اندرویدی به یک هسته تولیدی نیاز دارد. قبل از GKI، هستهها سفارشی و مبتنی بر هسته مشترک اندروید (ACK) بودند و تغییرات خاص دستگاه توسط فروشندگان سیستم روی تراشه (SoC) و تولیدکنندگان اصلی تجهیزات (OEM) اعمال میشد.
این سفارشیسازی میتواند منجر به این شود که تا ۵۰٪ از کد هسته، کد خارج از درخت باشد و از هستههای لینوکس بالادستی یا ACKها نباشد. به این ترتیب، ماهیت سفارشی هستههای پیش از GKI منجر به تکهتکه شدن قابل توجه هسته شد.
هزینههای چندپارگی
تکهتکه شدن هسته، تأثیرات منفی متعددی بر جامعه اندروید دارد.
بهروزرسانیهای امنیتی نیازمند نیروی کار زیادی هستند
وصلههای امنیتی ذکر شده در بولتن امنیتی اندروید (ASB) باید به هسته هر دستگاه منتقل شوند. با این حال، به دلیل تکهتکه شدن هسته، انتشار وصلههای امنیتی به دستگاههای اندروید در محل، بسیار پرهزینه است.
ادغام بهروزرسانیهای پشتیبانیشدهی بلندمدت دشوار است
نسخههای پشتیبانیشدهی بلندمدت (LTS) شامل رفع مشکلات امنیتی و سایر رفع اشکالات حیاتی هستند. بهروز ماندن با نسخههای LTS، موثرترین راه برای ارائه رفع مشکلات امنیتی بوده است. در دستگاههای پیکسل، مشخص شد که ۹۰٪ از مشکلات امنیتی هسته که در ASB گزارش شده است، برای دستگاههایی که بهروز میمانند، قبلاً برطرف شده است.
با این حال، با وجود تمام تغییرات سفارشی در هستههای دستگاه، ادغام اصلاحات LTS در هستههای دستگاه دشوار است.
جلوگیری از انتشار بهروزرسانیهای پلتفرم اندروید
تکهتکه شدن، اضافه کردن ویژگیهای جدید اندروید که نیاز به تغییرات هسته دارند را به دستگاههای موجود در این حوزه دشوار میکند. کد چارچوب اندروید باید تغییرات مختلف هسته را در نظر میگرفت و نمیتوانست به ویژگیهای جدید اندروید که در هسته پیادهسازی میشوند، تکیه کند. این امر نوآوری را کند کرده و باعث افزایش اندازه و پیچیدگی کد میشود.
بازگرداندن تغییرات هسته به لینوکس بالادستی دشوار است
روش تکهتکه کردن وصلهها به هستههای تولید، باعث میشد که از زمانی که یک نسخه LTS در دسترس قرار میگرفت تا زمانی که در یک دستگاه قرار میگرفت، تا ۱۸ ماه تأخیر ایجاد شود. این تأخیر طولانی بین انتشار هسته بالادستی و محصولات، وارد کردن ویژگیها و درایورهای مورد نیاز به هستههای بالادستی را برای جامعه اندروید دشوار میکند. زمانی که یک کاربر پیشنهاداتی برای بهبود ارائه میداد، کدبیس تغییر کرده بود و نشان دادن ارتباط وصله را دشوار میکرد.
رفع پراکندگی: تصویر هسته عمومی
پروژه تصویر هسته عمومی (GKI) با یکپارچهسازی هسته اصلی و انتقال پشتیبانی SoC و برد از هسته اصلی به ماژولهای فروشنده قابل بارگذاری، به پراکندگی هسته میپردازد. GKI همچنین یک رابط ماژول هسته پایدار (KMI) برای ماژولهای فروشنده ارائه میدهد، بنابراین ماژولها و هسته میتوانند به طور مستقل بهروزرسانی شوند. برخی از ویژگیهای هسته GKI عبارتند از:
- هسته GKI از منابع ACK ساخته شده است.
- هسته GKI یک هسته دودویی تک هسته ای به علاوه ماژول های قابل بارگذاری مرتبط با هر معماری و در هر نسخه LTS است.
- هسته GKI با تمام نسخههای پلتفرم اندروید که از ACK مربوطه پشتیبانی میکنند، آزمایش میشود. هیچ گونه حذف ویژگی در طول عمر یک نسخه هسته GKI وجود ندارد.
- هسته GKI یک KMI پایدار را در معرض درایورهای درون یک LTS مشخص قرار میدهد.
- هسته GKI حاوی کد مخصوص SoC یا برد نیست.
برای تصویری از معماری GKI، به نمای کلی هسته مراجعه کنید.
تصویر مشترک
با شروع اندروید ۱۲، دستگاههایی که با کرنل نسخه ۵.۱۰ یا بالاتر عرضه میشوند، باید با کرنل GKI عرضه شوند. نسخههای منتشر شده از تصویر کرنل عمومی (GKI) به طور منظم بهروزرسانی میشوند و مرتباً با LTS و رفع اشکالات مهم بهروزرسانی میشوند. از آنجا که پایداری باینری برای KMI حفظ میشود، میتوانید این تصاویر بوت را بدون ایجاد تغییر در تصاویر فروشنده نصب کنید. پروژه GKI این اهداف را دنبال میکند:
- هنگام جایگزینی هسته محصول با هسته GKI، رگرسیون قابل توجهی در عملکرد یا قدرت ایجاد نکنید.
- شرکا را قادر میسازد تا بدون دخالت فروشنده، اصلاحات امنیتی هسته و رفع اشکالات را ارائه دهند.
- کاهش هزینه ارتقاء نسخه اصلی هسته برای دستگاهها.
- با بهروزرسانی نسخههای هسته با یک فرآیند واضح برای ارتقاء، یک هسته باینری GKI واحد را برای هر معماری حفظ کنید.