Googleは、メインのLinuxカーネルでAndroid向けのイノベーションの開発に進む

Linux Plumbers 2021 カンファレンスで Google は、Android プラットフォームを、独自バージョンのカーネルを使用するのではなく、通常の Linux カーネルを使用するように移行する取り組みの成功について語りました。これには、Android プラットフォームに固有の変更が含まれます。

開発における最も重要な変更は、2023 年以降に「アップストリーム ファースト」モデルに切り替える決定でした。これは、Android プラットフォームで必要なすべての新しいカーネル機能を、独自のブランチではなくメインの Linux カーネルで直接開発することを意味します (機能は最初にメインカーネルに昇格され、その後 Android で使用されますが、その逆はありません)。 また、2023 年と 2024 年には、Android Common Kernel ブランチに残っているすべての追加パッチをメイン カーネルに転送する予定です。

近い将来に関しては、12 月初旬に予想される Android 5.10 プラットフォームでは、通常の XNUMX カーネルに可能な限り近い「汎用カーネル イメージ」(GKI)カーネル アセンブリが提供される予定です。 これらのビルドについては、アップデートの定期的なリリースが提供され、ci.android.com リポジトリに投稿されます。 GKI カーネルでは、Android プラットフォーム固有の追加機能と、OEM からのハードウェア サポート関連のハンドラーが別のカーネル モジュールに配置されます。 これらのモジュールはメイン カーネルのバージョンに関連付けられておらず、個別に開発できるため、デバイスのメンテナンスと新しいカーネル ブランチへの移行が大幅に簡素化されます。

Googleは、メインのLinuxカーネルでAndroid向けのイノベーションの開発に進む

デバイス メーカーが必要とするインターフェイスはフックの形式で実装されているため、コードを変更せずにカーネルの動作を変更できます。 合計で、android12-5.10 カーネルは、トレースポイントに似た 194 個の通常のフックと、非アトミック コンテキストでハンドラーを実行できるようにする 107 個の特殊なフックを提供します。 GKI カーネルでは、ハードウェア メーカーがメイン カーネルに特定のパッチを適用することは禁止されており、ハードウェア サポート コンポーネントは、メイン カーネルとの互換性を確保する必要がある追加のカーネル モジュールの形式でのみベンダーによって提供されなければなりません。

Android プラットフォームは独自のカーネル ブランチ、つまり Android 共通カーネルを開発しており、これに基づいてデバイスごとに個別の特定のアセンブリが形成されていることを思い出してください。 Android の各ブランチは、メーカーにデバイスのカーネル レイアウトに関するいくつかのオプションを提供します。 たとえば、Android 11 では 4.14 つの基本カーネル (4.19、5.4、および 12) の選択肢が提供され、Android 4.19 では基本カーネル 5.4、5.10、および 5.10 が提供されます。 オプション XNUMX は汎用カーネル イメージとして設計されており、OEM に必要な機能がアップストリームに転送され、モジュールに配置されるか、Android 共通カーネルに転送されます。

GKI が登場する前に、Android カーネルはいくつかの準備段階を経ました。

  • メインの LTS カーネル (3.18、4.4、4.9、4.14、4.19、5.4) に基づいて「Android Common Kernel」のブランチが作成され、そこに Android 固有のパッチが転送されました (以前の変更のサイズは数百万行に達していました) )。
  • 「Android Common Kernel」に基づいて、Qualcomm、Samsung、MediaTek などのチップメーカーは、ハードウェアをサポートするためのアドオンを含む「SoC カーネル」を形成しました。
  • SoC カーネルに基づいて、デバイス メーカーは、追加の機器、スクリーン、カメラ、サウンド システムなどのサポートに関連する変更を含むデバイス カーネルを作成しました。

このアプローチでは、脆弱性を排除するためのアップデートの実装と新しいカーネル ブランチへの移行が大幅に複雑になりました。 Google は Android カーネル (Android Common Kernel) のアップデートを定期的にリリースしていますが、ベンダーはこれらのアップデートの提供が遅い場合が多く、デバイスのライフサイクル全体を通じて同じカーネルを使用することが一般的です。



出所: オープンネット.ru

コメントを追加します