Android カーネルは、アップストリームの Linux 長期サポート(LTS)カーネルに基づいています。Google では、LTS カーネルは Android 固有のパッチと組み合わされ、Android 共通カーネル(ACK)を形成しています。
ACK は kernel/common リポジトリからビルドされます。このリポジトリは、アップストリームの Linux カーネルのスーパーセットであり、Android 固有のパッチが追加されています。
5.10 以降の ACK は、汎用カーネル イメージ(GKI)カーネルとも呼ばれます。* GKI カーネルは、ハードウェアに依存しない汎用 コアカーネルコードとGKI モジュールの、ハードウェア固有の ベンダー モジュールからの分離をサポートします。
GKI カーネルとベンダー モジュール間のやり取りは、ベンダー モジュールに必要な機能とグローバル データを識別するシンボルリストで構成されるカーネル モジュール インターフェース(KMI)によって可能になっています。 図 1 に、GKI カーネルとベンダー モジュールのアーキテクチャを示します。

図 1.GKI カーネルとベンダー モジュールのアーキテクチャ。
カーネル用語集
カーネル ドキュメント全体で使用される用語を以下に示します。
カーネルタイプ
- Android 共通カーネル(ACK)
- LTS カーネルの下流にあるカーネルで、Android コミュニティにとって重要なパッチが含まれています。これらのパッチは、Linux メインラインまたは長期 GKI カーネルにマージされていません。
バージョン 5.10 以降のカーネルは、 汎用カーネル イメージ(GKI)カーネルとも呼ばれます。
Android 12 の機能は 4.19 カーネルにバックポートできません。機能セットは、Android 11 で 4.19 でリリースされ、Android 12 にアップグレードされたデバイスと同様になります。
- 汎用カーネル イメージ(GKI)カーネル
5.10 以降の ACK カーネル(aarch64 のみ)。GKI カーネルには次の 2 つの部分があります。
汎用カーネル - すべてのデバイスで共通の GKI カーネルの部分。
GKI モジュール - Google がビルドしたカーネル モジュール。必要に応じてデバイスに動的に 読み込むことができます。これらのモジュールは GKI カーネルのアーティファクトとしてビルドされ、GKI とともに
system_dlkm_staging_archive.tar.gzアーカイブとして配信されます。GKI モジュールは、カーネルビルド時間の鍵ペアを使用して Google によって署名され、ビルドされた GKI カーネルとのみ互換性があります。
- カーネル モジュール インターフェース(KMI)カーネル
GKI カーネルをご覧ください。
- 長期サポート(LTS)カーネル
2 ~ 6 年間サポートされる Linux カーネル。LTS カーネルは 年に 1 回リリースされ、Google の各 Android 共通カーネルのベースとなります。
ブランチタイプ
- ACK KMI カーネル ブランチ
- GKI カーネルがビルドされるブランチ。ブランチ名は、
android15-6.6などのカーネル バージョンに対応しています。 - android-mainline
- Android 機能向けの主要開発ブランチ。新しい LTS カーネルがアップストリームで宣言されると、対応する新しい GKI カーネルが android-mainline から分岐します。
Linux メインライン : LTS カーネルを含む、アップストリームの Linux カーネルの主要開発ブランチ。
その他の用語
- 認定ブートイメージ
- バイナリ形式(
boot.img)で配信され、デバイスにフラッシュされるカーネル。 このイメージには埋め込み証明書が含まれているため、Google がデバイスに Google 認定のカーネルが搭載されていることを確認できるため、認定と見なされます。 - 動的に読み込み可能なカーネル モジュール(DLKM)
- デバイスのニーズに応じて、デバイスの起動時に動的に読み込むことができるモジュール。GKI モジュールとベンダー モジュールは、どちらも DLKM の一種です。DLKM は
.ko形式でリリースされ、ドライバにすることも、他のカーネル機能を提供することもできます。 - GKI プロジェクト
- 共通のコアカーネル機能をベンダー固有の SoC とボードのサポートから読み込み可能なモジュールに分離することで、カーネルの断片化に対処する Google プロジェクト。
汎用カーネル イメージ(GKI) : ACK ソースツリーからビルドされた GKI カーネルを含み、Android デバイスの boot パーティションにフラッシュするのに適した、Google が認定したブートイメージ。
- カーネル モジュール インターフェース(KMI)
- GKI カーネルとベンダー モジュール間のインターフェース。 ベンダー モジュールを GKI カーネルから独立して更新できます。このインターフェースはカーネル機能と、パートナーごとのシンボルリストを使用してベンダーや OEM の依存関係として識別されているグローバル データで構成されています。
- ベンダー モジュール
- パートナーが開発し、SoC とデバイス固有の機能を含むハードウェア固有のモジュール。ベンダー モジュールは、動的に読み込み可能なカーネル モジュールの一種です。
次のステップ
Android カーネルの開発が初めての場合は、まず以下をご覧ください。
- 長期安定版カーネル - ACK にフィードするアップストリームの LTS カーネルの予備知識。
- Android 共通カーネル - ACK の予備知識。
GKI カーネルの開発が初めての方は、まず GKI 開発をご覧ください。