GoogleはPixel 10をコアLinuxカーネルで起動するためのデバイスツリーを公開しました

メインラインLinuxカーネルにおけるPixel 10のデバイスツリーの解読

Googleが最近リリースしたPixel 10向けデバイスツリーは、これらのデバイスをメインラインLinuxカーネルで起動する新たな時代を告げるものです。この発表は、Pixel 10、Pixel 10 Pro、Pixel 10 Pro XLスマートフォンの発表に続くものです。これらのスマートフォンはすべて、マルチコアARM Cortex X4、A725、A520アーキテクチャを基盤とする強力なGoogle Tensor G5 SoCを搭載し、強力なImagination DXT-48-1536グラフィックユニットを搭載しています。 では、組み込みLinuxシステムの起動において、これらのデバイスツリーは具体的にどのような役割を果たすのでしょうか?基本的に、デバイスツリーはLinuxカーネルがPixel 10のハードウェアを正しく識別・構成し、電源投入プロセスの開始直後からドライバーを適応させ、必要なコンポーネントを初期化することを可能にします。つまり、従来のモノリシック方式(モノリシック方式)を、ハードウェアのモジュール式かつ宣言的な記述に置き換えるのです。

簡単に言うと、デバイスツリーとは、DTS(デバイスツリーソース)でコーディングされたファイルで、デバイスのハードウェアトポロジ(プロセッサ、バス、コントローラ、統合デバイス、GPIO、クロックなど)を宣言します。Linuxカーネルは起動時にこのファイルを読み取り、それに応じて動作を調整します。この方法は、Pixel 10が複雑なハードウェアアーキテクチャを採用していることを考えると、モジュール性を高め、コードのメンテナンスを容易にします。 Pixel 10 向けのこれらのファイルのリリースは、従来は Android が独自に修正したカーネルで支配的だったスマートフォンの世界において、メイン Linux カーネルの普及が進むことを予感させる戦略的なものです。これらのデバイスをアップストリームカーネルで起動できるということは、よりオープンで汎用的なソフトウェアプラットフォーム上で動作する代替 ROM や革新的な用途の開発への扉を開きます。 デバイスツリーの役割: 起動時にハードウェアを識別し、構成する。

Pixel 10 のアーキテクチャ:

ARM コアと Imagination GPU を搭載した Tensor G5 SoC。

  • Google の優先事項: メイン Linux カーネルでの起動をサポートする。
  • 影響: モバイル Linux 開発とカスタム ROM を容易にする。
  • 課題: DTS を介して Pixel 10 のハードウェア特性に適応する。
  • Google が Linux 上で Pixel 10 にデバイスツリーを統合し、ハードウェア管理とシステムパフォーマンスを向上させる方法をご覧ください。
  • Pixel 10スマートフォンにおけるメインラインLinuxカーネルの技術的影響 Pixel 10の起動時にメインラインLinuxカーネル(アップストリームカーネルとも呼ばれる)を統合することで、モバイル組み込みシステムの世界にいくつかの重要な革新がもたらされます。まず、公式カーネルにはLinuxコミュニティによって検証された修正と機能強化の大部分が組み込まれているため、最適な安定性と長期的なハードウェア互換性が向上します。
これまで、Androidは独自仕様またはメーカー固有のパッチを組み込んだカスタマイズされたカーネルバージョンを使用することがよくありました(Googleがその一例です)。このようなバリアントの急増はコードのメンテナンスを複雑にし、独立系開発者がハードウェアを効果的に操作する能力を制限します。したがって、Pixel 10のメインラインLinuxカーネルにデバイスツリーを統合することで、次のような大きなメリットがもたらされます。

互換性の向上:

複数モデルで単一のカーネルを使用することで、コードの重複を削減します。 より容易なアップデート: 公式 Linux チャネルを介したアップデートは、より高速かつ安全です。

代替 ROM へのオープン性:

独自仕様のブートローダーやクローズド BLOB への依存度が低くなります。

  • ドライバーの改善: コミュニティの貢献はすべてのユーザーにメリットをもたらします。
  • しかしながら、この進化には依然としていくつかの課題が存在します。特に、これらのパッチはまだ初期段階であり、LKML(Linux カーネルメーリングリスト)での議論で言及されているように、@mainline カーネルを起動するには、Google がまだリリースしていないブートローダーが必要です。このブートプロセスは現在、initramfs からのシンプルな UART プロンプトに制限されています。これは、完全に機能するシステムを保証するものではありませんが、将来有望な道筋を示す初期ステップです。したがって、完全に動作するシステムへの移植はまだ進行中ですが、このアプローチは、現代のモバイルテクノロジーをサポートするオープンソースソフトウェアの力と柔軟性を示しています。このアプローチは、Android と主要な Linux ディストリビューションの基盤を調和させ、より透明性が高く協力的な未来を実現したいという願いの一環です。
  • 現在の課題:
  • 未リリースのブートローダー、機能が限られている。 展望:

Pixel 10 で完全なアップストリームカーネルを実行できる。

長期的なメリット: アーキテクチャとデバイスのサポートが拡大する。 Linux コミュニティ:

  • Tensor G5 のドライバ開発に深く関わっている。 ブートローダーの役割と、Pixel 10 での Linux 起動に伴う制約
  • Pixel 10 のようなスマートフォンで Linux システムを起動するには、デバイスツリーの定義だけにとどまらない、特有の技術的課題があります。このプロセスの主要コンポーネントの 1 つがブートローダーです。これは、ハードウェアの初期化と Linux カーネルの起動を担う、非常に低レベルのソフトウェアです。 現在、デバイスツリーを利用してメインの Linux カーネルを起動するために必要なブートローダーはまだ公開されておらず、これが大きなボトルネックとなっています。このブートローダーは、特に以下の機能を備えている必要があります。
  • Linux カーネルと initramfs を適切にロードする。 ハードウェアとセキュリティ保護を構成する。
  • 重要な周辺機器インターフェース(UART、USB など)を初期化する。 デバッグのために、ターミナル(UART プロンプト)を介した低レベルアクセスを容易にする。

効率的なブートローダーはハードウェアの潜在能力を最大限に引き出し、カーネルがエラーなく起動し、電源投入時にすべてのコンポーネントとやり取りできるようにするため、このステップは非常に重要です。例えば、メモリコントローラーとシステムクロックを構成する必要がありますが、これは Pixel 10 シリーズで使用されている Google Tensor G5 SoC に特有の操作です。

Pixel 10 の場合、デバイスツリーは既に利用可能ですが、完全に機能するには、まだ配布されていないこのブートローダーが必要です。このブートローダーは、オペレーティングシステムがスマートフォンを完全に管理できるようになる前に、初期ファームウェアからLinuxカーネルへの移行を管理します。 このアプローチは、例えばApple Siliconに移植されたAsahi Linuxなどのプロジェクトと類似していることに留意することが重要です。これらのプロジェクトでは、メインのLinuxカーネルと互換性のあるスムーズなブートプロセスを実現するために、特定のブートローダーの開発が同様に重要です。

ブートローダーの主な機能:

  • ブート、デバッグ、ハードウェアの初期化。
  • 現在の制限:
  • 独自仕様で非公開のブートローダー。
  • 類似の例:

Apple M3上でのAsahi Linuxの開発。

影響:

メインカーネルの完全な利用が遅れる。 GoogleがLinux上でPixel 10用の周辺機器ツリーを公開し、ハードウェアドライバーの開発と互換性を促進している方法をご覧ください。

  • ハイエンドモバイルデバイス向けメインラインLinuxサポートの課題と展望 Pixel 10などのモバイルデバイスへのメインラインLinuxの移植は、モバイルとデスクトップのエコシステムの融合における大きな転換点となります。長年にわたり、Androidと標準Linux間のカーネルの断片化が、スマートフォンにおけるGNU/Linuxディストリビューションの広範な普及を妨げてきました。しかし、Googleが適切なデバイスツリーを提供することで、この橋渡しが構築され始めています。
  • このサポートの主な利点は次のとおりです。
  • ソフトウェアの一貫性: アップデートとメンテナンスのための単一ベース。
  • オープン性: オープンソースソフトウェアとカスタマイズへの容易なアクセス。
セキュリティ:

公式カーネルと欧州セキュリティパッチのベストプラクティスの適用。

コミュニティ:

ハードウェアサポートの継続的な改善を保証する協力体制。

  • この進化は、ミニマリストLinuxディストリビューションなどのリソースで説明されている原則に従い、モバイルデバイス固有の制約に適応するように設計されたミニマリストツールとディストリビューションの出現と一致しています。最終的には、Androidに代わる信頼できる選択肢への道が開かれ、クローズドなコンポーネントに依存することなく、安全で柔軟なシステムを提供できるようになります。
  • さらに、これらの開発は、軽量サーバー環境やDebian LAMPベースの高度な組み込みシステムの設計に直接影響を与え、モバイルから従来型のインフラストラクチャまで、あらゆる領域におけるLinuxカーネルの汎用性を実証しています。 期待されるイノベーション: モバイルLinuxシステムの完全サポート。 フリーソフトウェアへの影響:
  • プロプライエタリな依存関係の低減。 より広範な導入:
  • Raspberry Pi、サーバー、ラップトップへの影響。 容易な統合:

モバイルデバイスでの安全なリモート接続を促進。 Pixel 10 のデバイスツリーを Linux 開発に活用する方法Linux 開発者や愛好家にとって、これらのデバイスツリーのリリースは、メインカーネルを介して Pixel 10 のブートプロセスを調査およびカスタマイズする絶好の機会となります。これは最初の技術的マイルストーンであり、ブートプロセスの各段階でハードウェア互換性を変更、テスト、改善することができます。

  • この開発に取り組みたい方のために、具体的な手順をいくつかご紹介します。 パッチのダウンロード:
  • LKML ディスカッションスレッドで入手可能で、適切な DTS ファイルが含まれています。 構造の分析:
  • ツリーのノードとプロパティ、そしてそれらがハードウェアとどのように対応しているかを理解します。 カーネルの設定:
  • デバイスツリーをカーネルコンパイルに統合します。 initramfs の準備: カーネルのブートに必要な最小限の環境であり、初期テストを容易にします。ブートプロセスのテスト: 適切なブートローダーを使用して、Pixel 10 でメイン Linux カーネルを起動し、UART プロンプトが表示されるまで待ちます。

さらに詳しく知りたい方は、数多くのオンラインチュートリアルで、Linuxのブートプロセスをカスタマイズおよび最適化する方法、 そしてシステムと対話するための基本的なコマンドの使い方について解説されています。これには、デバッグ、カーネルモジュールの管理、ブートエラーの診断といった高度な手法の使用が含まれます。

  1. この専門知識は、特にカスタムROMの構築やLinuxベースの組み込みシステムの開発において非常に貴重です。これらのシステムでは、パフォーマンスの1マイクロ秒単位、メモリ使用量の1ビット単位が重要となります。
  2. 主な手順: パッチ適用、コンパイル、initramfs、ブートローダー
  3. 推奨ツール:
  4. クロスコンパイルツール、LKML、Linux環境
  5. リソース: デバイスツリーのドキュメント、中断されたタスクの管理に関するチュートリアル

メリット:ハードウェアとブートプロセスに関する深い理解

Google は、Linux 上で Pixel 10 用の周辺機器ツリーを公開し、ハードウェア ドライバーの開発と互換性を促進しています。