Android カーネルは、アップストリームの Linux 長期サポート(LTS)カーネルに基づいています。Google では、LTS カーネルは Android 固有のパッチと組み合わされ、Android 共通カーネル(ACK)と呼ばれるカーネルを形成しています。
新しい ACK(バージョン 5.4 以降)は GKI カーネルとも呼ばれます。GKI カーネルは、ハードウェアに依存しない汎用コアカーネル コードと GKI モジュールの、ハードウェア固有のベンダー モジュールからの分離をサポートします。
GKI カーネルは、システム オン チップ(SoC)とボード固有のコードを含むハードウェア固有のベンダー モジュールとやり取りします。GKI カーネルとベンダー モジュール間のやり取りは、ベンダー モジュールに必要な機能とグローバル データを識別するシンボルリストで構成されるカーネル モジュール インターフェース(KMI)によって可能になっています。図 1 に、GKI カーネルとベンダー モジュールのアーキテクチャを示します。
カーネル用語集
このセクションでは、カーネル ドキュメント全体で使用される用語について説明します。
カーネルタイプ
- Android 共通カーネル(ACK)
- LTS カーネルのダウンストリームで、Android にとって重要なパッチを含むカーネル 統合されていない LTS チャンネルも存在します。 新しい ACK(バージョン 5.4 以降)は、GKI カーネルとも呼ばれ、 ハードウェアに依存しない汎用カーネルコードとハードウェアに依存しない GKI モジュールの分離。
- Android オープンソース プロジェクト(AOSP)カーネル
- Android 共通カーネルをご覧ください。
- 機能カーネル
- プラットフォーム リリース機能の実装が保証されているカーネル。対象 たとえば、Android 12 の 2 つの機能カーネルは android12-5.4 と android12-5.10 でした。 Android 12 の機能は 4.19 カーネルにバックポートできません。機能セットも Android 11 で 4.19 でリリースされ、Android 12 にアップグレードしたデバイスに移行しました。
- 汎用コアカーネル
- すべてのデバイスに共通する GKI カーネルの一部。
- 汎用カーネル イメージ(GKI)カーネル
- 新しい(5.4 以降の)ACK カーネル(現在は aarch64 のみ)。この カーネルには 2 つの部分があります。すべてのデバイスに共通するコードを含むコア GKI カーネルと、GKI モジュールです。 該当する場合にデバイスに動的に読み込める Google が開発した
- カーネル モジュール インターフェース(KMI)カーネル
- GKI カーネルをご覧ください。
- ローンチ カーネル
- 特定の Android プラットフォーム リリースでデバイスを起動するために有効なカーネル。対象 たとえば Android 12 の有効なローンチ カーネルは 4.19、5.4、5.10 です。
- 長期サポート(LTS)カーネル
- 2~6 年間サポートされている Linux カーネル。長期サポート カーネルは、年に 1 回リリースされ、各カーネル Google の ACK。
ブランチタイプ
- ACK KMI カーネル ブランチ
- GKI カーネルがビルドされるブランチ。例: android12-5.10 android13-5.15 です。
- android-mainline
- Android 機能向けの主要開発ブランチ。新しい長期サポート(LTS: Long-term support) kernel がアップストリームに宣言されている場合、対応する新しい GKI カーネルは android-mainline から分岐しています。
- Linux メインライン
- アップストリームの Linux カーネル(LTS カーネルを含む)向けの主要開発ブランチ。
その他の用語
- 認定ブートイメージ
- バイナリ形式(
boot.img
)で配信され、デバイスにフラッシュされるカーネル。 このイメージには証明書が埋め込まれており、Google が証明書を デバイスに Google 認定のカーネルが搭載されていることを確認します。 - 動的に読み込み可能なカーネル モジュール(DLKM)
- お客様のニーズに応じて、デバイスの起動時に動的に読み込み可能なモジュール
ダウンロードしますGKI モジュールとベンダー モジュールは、どちらも DLKM の一種です。DLKM が
.ko
でリリースされました ドライバであるか、他のカーネル機能を提供することが可能です。 - GKI プロジェクト
- 共通コアカーネルを分離することでカーネルの断片化に対処する Google プロジェクト ベンダー固有の SoC とボードのサポートから読み込み可能モジュールに機能を統合します。
- 汎用カーネル イメージ(GKI)
- 以下でビルドされた GKI カーネルを含む、Google 認定のブートイメージ ACK ソースツリーであり、デバイスのブート パーティションにフラッシュするのに適しています。 Android デバイス
- KMI
- ベンダーを可能にする、GKI カーネルとベンダー モジュール間のインターフェース GKI カーネルとは独立してアップデートされる必要があります。このインターフェースはカーネルと ベンダー/OEM の依存関係として特定されたグローバル データに対応するほか、 シンボルリストが表示されます。
- GKI モジュール
- 必要に応じてデバイスに動的に読み込める、Google がビルドしたカーネル モジュール。
これらのモジュールは GKI カーネルのアーティファクトとしてビルドされ、配信されます。
GKI とともに
system_dlkm_staging_archive.tar.gz
アーカイブとして扱うことができます。GKI モジュール カーネルのビルド時間鍵ペアを使用して Google によって署名され、GKI とのみ互換性がある ビルドに使用するカーネル リソースです。 - ベンダー モジュール
- パートナーが開発したハードウェア固有のモジュールで、SoC とデバイス固有のものを含んでいます。 説明します。ベンダー モジュールは、動的に読み込み可能なカーネル モジュールの一種です。
次のステップ
- Android カーネルの開発が初めての方は、 次のとおりです。
- 長期安定版カーネル - ACK にフィードするアップストリームの LTS カーネルの背景
- Android 共通カーネル - ACK の背景情報。
- GKI カーネル開発を初めて行う場合は、まず GKI 開発。
- 4.19 以前のカーネル バージョンを使用していて、関連するドキュメントをお探しの場合は、 前述 カーネル(4.19 以前)の概要セクションを参照してください。