Googleは、すべてのAndroid携帯の中心にあるLinuxカーネルの更新とアップストリームに熱心に取り組んでいるように思われます。 Google は今年の Linux Plumbers Conference に大きく参加し、Android が現在使用している高度にカスタマイズされたバージョンではなく、一般的な Linux カーネルで動作するようになることについて多くの時間を費やしました。 現在、「メインライン」の Linux カーネルと出荷される Android デバイスの間には、3 つの主要なフォークが発生しています (ここでいう「メインライン」は、Google 自身の「プロジェクト メインライン」とは関係ないことに注意してください)。 まず、GoogleはLTS(Long Term Support)Linuxカーネルを取り出し、それを「Android Commonカーネル」(LinuxカーネルにAndroid OS固有のパッチをすべて適用したもの)に変えます。 Android Commonは、SoCベンダー(通常はクアルコム)に出荷され、そこでまず特定のモデルのSoCに焦点を当てたハードウェア固有の追加を受けます。 この「SoCカーネル」は、次にデバイスメーカーに送られ、ディスプレイ、カメラ、スピーカー、USBポート、その他のハードウェアなど、あらゆるハードウェアをサポートする、よりハードウェア固有のコードが追加されます。 これが「デバイス カーネル」であり、実際にデバイスに搭載されるものです。
これは非常に長い旅で、すべてのデバイスは何百万行ものアウトオブツリーのカーネル コードを出荷することになります。 基本的に、ある電話機のデバイス カーネルが別の電話機で動作することはありません。 デバイスのメインラインカーネルバージョンは、SoCの初期開発時に固定されるため、真新しいデバイスが2年前のLinuxカーネルで出荷されることはよくあることです。 Googleの最新かつ、えー、最高のデバイスであるPixel 4でさえ、2017年11月のLTSリリースであるLinuxカーネル4.14で2019年10月に出荷されました。 これも永遠にカーネル4.14から抜け出せないだろう。 Androidデバイスは通常、カーネルアップデートが行われませんが、これはおそらく、たった1つのデバイスカーネルを作るために必要な信じられないほどの作業量と、それを行うために協力する必要がある企業のチェーンのおかげでしょう。 カーネルアップデートが行われないおかげで、Androidのすべての新しいリリースは通常、過去3年間のLTSカーネルリリース(Android 10の最小値は4.9、2016年リリース)をサポートしなければならないことを意味します。 Googleがセキュリティパッチで古いバージョンのAndroidをサポートすることを約束していることは、同社が現在5年前のカーネル3.18をまだサポートしていることを意味します。 これに対する Google のこれまでの応急処置的な解決策は、Linux コミュニティと提携し、メインライン Linux LTS リリースをより長くサポートすることであり、現在、サポート期間は 6 年までとなっています
昨年、Linux Plumbers Conference 2018 で、Google は Android カーネルをメインライン Linux に近づけるための初期調査について発表しました。 今年は、これまでの進捗状況についてもう少し詳しく共有しましたが、まだ進行中であることは間違いありません。 “今日、我々は、Androidデバイス上で実行するためにカーネルに追加される必要があるものを知りません。” Android Kernel TeamのリードSandeep Patilは、LPC 2019でグループに語った。 “我々は、Androidを実行するために必要なものを知っていますが、必ずしも任意のハードウェア上で実行できるわけではありません。 ですから、私たちの目標は、基本的にそのすべてを見つけ出し、それをアップストリームして、できるだけメインラインに近づけるようにすることです。”
より広い Android エコシステムと無数のデバイス構成を搭載するためにはまだやるべきことがありますが、特定のモデルのデバイスについては、順調に進んでいるようです。 Linaro Consumer Group のディレクターである Tom Gall 氏は、通常の Android OS の下でメインライン Linux カーネルを実際に動かしている Xiaomi Poco F1 を披露してくれました。 Gall 氏は聴衆に対して、「特に Google カーネル チームが、メインライン カーネルでデバイスを起動できるようにコードをアップストリームにしたことには、大きな、大きな賛辞が贈られます」と語りました。 Treble が Android OS とデバイス HAL (Hardware Abstraction Layers) の間に安定したインターフェイスを作成したように、Android をメインライン Linux に近づけるための Google の提案 (このための馬鹿げた「プロジェクト」名はまだないのでしょうか) には、Linux のインカーネル ABI を安定させ、Linux カーネルとハードウェア ベンダーが書き込むための安定したインターフェイスを持たせることが含まれています。 Google は Linux カーネルをハードウェア サポートから切り離したいと考えています。
Linux コミュニティは、カーネルを迅速にアップデートする能力が必要なら、ドライバーをオープン ソースにして、変更があれば対処してくれるメイン カーネル ツリーに取り込もう、という提案により、しばらくのあいだ安定したインターフェースのアイデアに反対してきました。 しかし、ドライバのオープンソース化は、多くのハードウェア企業にとって絶対的な契約違反であり、いくら支持や製品の劣化があっても、それを変えることはできません。 Google が 5 年前のバージョンの Linux をサポートすることに固執している事実は、このモデルが機能していないことを示しています。