Pertanyaan umum (FAQ) kernel Android

Dokumen ini berisi pertanyaan umum (FAQ) tentang kernel Android, yang juga dikenal sebagai kernel Generic Kernel Image (GKI). Jika Anda tidak terbiasa dengan terminologi kernel GKI dan GKI, lihat Ringkasan kernel.

Dapatkah daftar simbol Kernel Module Interface (KMI) diubah dalam kernel yang stabil?

Perubahan yang tidak memengaruhi KMI yang ada dapat ditambahkan ke kernel yang dibekukan. Perubahan ini mencakup fungsi baru yang diekspor dan entri daftar simbol. Untuk mengetahui detailnya, lihat Mengelola daftar simbol.

Dapatkah saya mengubah struktur yang digunakan oleh modul vendor dalam kernel yang stabil?

Struktur yang merupakan bagian dari antarmuka KMI tidak dapat diubah di kernel dengan KMI yang dibekukan. Sebelum pembekuan KMI, struktur ini dapat diubah.

Dapatkah saya mengubah kernel selama saya tidak merusak kompatibilitas biner atau sumber?

Perubahan yang tidak memengaruhi KMI dapat dilakukan seperti yang dijelaskan dalam patch khusus Android.

Bagaimana GKI menangani konfigurasi kernel?

Untuk informasi tentang konfigurasi kernel, lihat Perubahan pada gki_defconfig.

Bagaimana cara menangani perbaikan bug upstream untuk menimpa modul GKI yang ada?

Jika Anda membuat modul vendor berdasarkan driver di Android Common Kernel (ACK), Anda dapat memastikan bahwa perbaikan bug dari upstream dan ACK disebarkan ke modul Anda. Umumnya, Anda sebaiknya menggunakan kernel GKI dan modul GKI tanpa modifikasi sehingga update ini disediakan secara konsisten oleh Google.

Apakah ada pengujian khusus GKI?

Ada pengujian Vendor Test Suite (VTS) yang memverifikasi bahwa build GKI bersertifikasi telah diinstal dan juga untuk menerapkan persyaratan GKI per rilis. Misalnya, ada pengujian VTS Android 12 untuk header booting v3 dan untuk memverifikasi keberadaan partisi yang diperlukan di perangkat yang menjalankan kernel 5.10.

Bagaimana cara membuat file fragmen defconfig project untuk build perangkat?

Banyak perangkat yang mematuhi GKI menggunakan fragmen konfigurasi untuk mendeskripsikan opsi konfigurasi yang diperlukan, selain gki_defconfig, untuk mem-build modul vendor. Contoh yang merupakan bagian dari codebase ACK mencakup Cuttlefish dan DB845c. Tidak ada cara untuk menghindari beberapa pemeriksaan manual opsi konfigurasi untuk mengoptimalkan fragmen, tetapi scripts/diffconfig dari sumber kernel berguna untuk membandingkan hasil gki_defconfig dan gki_defconfig+device.fragment.

Apakah ada solusi untuk memperlakukan modprobe - dan _ sebagai hal yang setara?

Halaman man modprobe berisi deskripsi ini: "modprobe menambahkan atau menghapus modul dari kernel Linux secara cerdas: perhatikan bahwa untuk memudahkan, tidak ada perbedaan antara _ dan - dalam nama modul (konversi garis bawah otomatis dilakukan)." Tim GKI mematuhi konvensi upstream standar, sehingga alat vendor atau konvensi penamaan modul harus mempertimbangkan kepatuhan ini.

Bagaimana cara mengaktifkan debugfs untuk penggunaan internal?

Untuk mengetahui detail tentang cara mengaktifkan debugf, lihat fitur debug downstream yang mengganggu.

Bagaimana cara mengatasi ABI yang tidak cocok antara kernel GKI dengan konfigurasi modul tertentu yang diaktifkan?

ABI yang tidak cocok antara kernel GKI dan konfigurasi modul mewakili dependensi konfigurasi modul implisit, dengan mengaktifkan modul akan menyebabkan konfigurasi biner di-build ke dalam image kernel yang dihasilkan. Hubungi tim kernel Android (kernel-team@android.com) untuk menentukan jalur ke depan. Setelah daftar simbol ditentukan, buat bug di Issue Tracker dan upload perubahan ke daftar simbol.

Saya memiliki perangkat yang sesuai dengan GKI 1.0 di lapangan yang menjalankan kernel 5.4 yang diluncurkan dengan Android 11 dan 12. Opsi upgrade kernel apa yang tersedia, dan bagaimana cara menguji perangkat ini saat mengupgrade ke Android 12 dan 13?

Lihat matriks kompatibilitas untuk mengetahui daftar versi kernel yang didukung untuk versi peluncuran dan upgrade. Berikut dua contoh upgrade:

Contoh 1: Pengguna dengan perangkat yang diluncurkan dengan Android 11 dengan kernel android11-5.4 (GKI 1.0) dapat memilih salah satu opsi berikut saat mengupgrade ke Android 12:

  • Upgrade ke kernel android12-5.10 GKI 2.0 (sangat direkomendasikan).

  • Pertahankan kernel android11-5.4.

  • Upgrade ke kernel android12-5.4.

Contoh 2: Pengguna dengan perangkat yang diluncurkan dengan Android 12 dengan kernel android12-5.4 atau android12-5.10 dapat memilih salah satu opsi ini saat mengupgrade ke Android 13:

  • Upgrade ke kernel android13-5.10 atau android13-5.15 GKI 2.0 (sangat direkomendasikan).

  • Pertahankan kernel GKI 1.0 android12-5.4.

  • Pertahankan kernel android12-5.10 GKI 2.0.

Khusus untuk pengujian kepatuhan Treble, sebaiknya lakukan salah satu hal berikut:

  • Ganti kernel partner dengan kernel GKI 1.0 yang tersertifikasi (android11-5.4 atau android12-5.4).

  • Dikirimkan dengan kernel GKI 2.0 yang tersertifikasi (android12-5.10, android13-5.10, atau android13-5.15) bergantung pada pilihan Anda.

Anda dapat mendownload build GKI 2.0 dari build rilis Generic Kernel Image (GKI).