Project Generic Kernel Image (GKI)

Halaman ini menjelaskan project Generic Kernel Image (GKI) dan cara meningkatkan stabilitas Android serta meningkatkan keamanan.

Histori

Setiap perangkat yang didukung Android memerlukan kernel produksi. Sebelum GKI, kernel adalah kustom dan didasarkan pada Android Common Kernel (ACK), dengan perubahan khusus perangkat yang dibuat oleh vendor sistem di chip (SoC) dan OEM.

Penyesuaian ini dapat menyebabkan hingga 50% kode kernel menjadi kode out-of-tree dan bukan dari kernel Linux upstream atau ACK. Dengan demikian, sifat kustom kernel pra-GKI menghasilkan fragmentasi kernel yang signifikan.

Biaya fragmentasi

Fragmentasi kernel memiliki beberapa efek negatif pada komunitas Android.

Update keamanan membutuhkan banyak tenaga

Patch keamanan yang dikutip dalam Android Security Bulletin (ASB) harus di-backport ke setiap kernel perangkat. Namun, karena fragmentasi kernel, penyebaran perbaikan keamanan ke perangkat Android di lapangan sangat mahal.

Sulit menggabungkan update yang Didukung Jangka Panjang

Rilis Dukungan Jangka Panjang (LTS) mencakup perbaikan keamanan dan perbaikan bug kritis lainnya. Tetap menggunakan rilis LTS terbaru telah terbukti merupakan cara paling efektif untuk memberikan perbaikan keamanan. Di perangkat Pixel, ditemukan bahwa 90% masalah keamanan kernel yang dilaporkan di ASB telah diperbaiki untuk perangkat yang selalu diupdate.

Namun, dengan semua modifikasi kustom di kernel perangkat, sulit untuk menggabungkan perbaikan LTS ke dalam kernel perangkat.

Menghambat upgrade rilis platform Android

Fragmentasi mempersulit fitur Android baru yang memerlukan perubahan kernel untuk ditambahkan ke perangkat di lapangan. Kode Framework Android harus memperhitungkan berbagai variasi kernel dan tidak dapat mengandalkan fitur Android baru yang diterapkan di kernel Hal ini memperlambat inovasi dan menyebabkan peningkatan ukuran dan kompleksitas kode.

Sulit berkontribusi pada perubahan kernel kembali ke Linux upstream

Cara terfragmentasi untuk menarik patch ke kernel produksi menyebabkan keterlambatan hingga 18 bulan dari titik saat rilis LTS tersedia di upstream, hingga saat rilis LTS tersedia di perangkat. Penundaan yang lama antara rilis kernel upstream dan produk ini menyulitkan komunitas Android untuk memasukkan fitur dan driver yang diperlukan ke dalam kernel upstream. Pada saat pengguna mengirimkan saran untuk peningkatan, codebase telah berubah, sehingga sulit untuk menunjukkan relevansi patch.

Memperbaiki fragmentasi: Gambar Kernel Generik

Project Generic Kernel Image (GKI) mengatasi fragmentasi kernel dengan menyatukan kernel inti dan memindahkan dukungan SoC dan board dari kernel inti ke modul vendor yang dapat dimuat. GKI juga menghadirkan Antarmuka Modul Kernel (KMI) yang stabil untuk modul vendor, sehingga modul dan kernel dapat diupdate secara independen. Beberapa karakteristik kernel GKI adalah:

  • Kernel GKI dibuat dari sumber ACK.
  • Kernel GKI adalah biner kernel tunggal plus modul yang dapat dimuat terkait per arsitektur, per rilis LTS.
  • Kernel GKI diuji dengan semua rilis Platform Android yang didukung untuk ACK terkait. Tidak ada penghentian penggunaan fitur selama masa aktif versi kernel GKI.
  • Kernel GKI mengekspos KMI stabil ke driver dalam LTS tertentu.
  • Kernel GKI tidak berisi kode khusus SoC atau khusus board.

Untuk gambar arsitektur GKI, lihat Ringkasan kernel.

Gambar Umum

Mulai Android 12, perangkat yang dikirimkan dengan kernel versi 5.10 atau yang lebih tinggi harus dikirimkan dengan kernel GKI. Build rilis Generic Kernel Image (GKI) diupdate secara rutin dan diupdate secara rutin dengan LTS dan perbaikan bug kritis. Karena stabilitas biner dipertahankan untuk KMI, Anda dapat menginstal image booting ini tanpa melakukan perubahan pada image vendor. Project GKI memiliki sasaran berikut:

  • Jangan perkenalkan regresi performa atau daya yang signifikan saat mengganti kernel produk dengan kernel GKI.
  • Memungkinkan partner mengirimkan perbaikan keamanan kernel dan perbaikan bug tanpa partisipasi vendor.
  • Mengurangi biaya upgrade versi kernel utama untuk perangkat.
  • Pertahankan satu biner kernel GKI per arsitektur dengan mengupdate versi kernel dengan proses upgrade yang jelas.