kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 25.10 その19 - Ubuntu Desktop ARM64 とハードウェア構成の違い・stubble の導入とセキュアブートの対応

Ubuntu Desktop ARM64 とハードウェア構成の違い

Ubuntu 25.10 でも Qualcomm Snapdragon など ARM64 向け Ubuntu Desktop がリリースされます。


  • What’s new for generic ARM64 Desktop ISOs in 25.10

この Ubuntu Desktop ARM64 は、特定のデバイス(PC)に対応したものではなく、特定のデバイスに依存せず汎用的に利用可能な ARM64 向け Ubuntu Desktop です。

デバイスごとに固有の違いがある

ARM64 デバイスで汎用的に利用可能とはいっても、各デバイスごとにデバイス固有の違いがあります。
ユーザーに汎用的に利用可能な Ubuntu Desktop ARM64 を提供するなら、このデバイス固有の違いをうまく吸収する仕組みが必要になります。

違いを簡単に吸収できるプラットフォームではない

さて x86_64(amd64)のようにデバイスのハードウェア構成を Ubuntu 側から把握できるような標準的な仕組みがデバイス側に実装されていればよいのですが、残念ながらそうはなっていません。
言い換えるとハードウェアを抽象化する十分な仕組みがありません。

そのため汎用的にサポートするにはまずこの課題を乗り越えねばならず、Ubuntu にとって挑戦に類する取り組みになります。

ACPI と Device Tree

現在デバイスのハードウェア構成を把握する仕組みに、ACPI と Device Tree があります。

ACPI

ACPI(Advanced Configuration and Power Interface)は Intel、Microsoft、そして東芝が策定し、1996年に登場した標準規格です。

x86 向けの仕組みとして登場

元々 ACPI は x86 向けの仕組みとして登場し、時代に合わせ拡張され今に至ります。

ちなみに 2011年12月にリリースされた ACPI 5.0 では、ARM アーキテクチャーのサポートが含まれるようになりました。

さらに 2025年5月にリリースされた ACPI 6.6 では、RISC-V アーキテクチャーのサポートが含まれるようになりました。

ARM64 でも支持が広がりつつある

ARM64 でも Base System Architecture(BSA)や Base Boot Requirements(BBR) の標準的な仕様の一部として、ACPI の採用支持が広がりつつあります。
とはいえ ACPI を採用していないデバイスも多いですし、採用していたとしても Linux から扱えないケースもあります。

ハードウェア構成の情報を含まれる

ACPI には OS がハードウェア構成の把握や管理、操作を行うための情報が含まれています。

ACPI テーブル

ACPI に対応したファームウェアは ACPI テーブルを生成し、カーネルが内部で実装しているインタープリターが解釈可能な AML(ACPI Machine Language)バイトコードを提供します。

この仕組みのおかげでデバイスを開発するメーカーは、デバイス固有の処理の大半をファームウェアで実装できるようになり、加えて OS とカーネルはハードウェア固有の事情を把握しなくてもハードウェア固有の処理をファームウェアを通じて処理できるようになります。

Device Tree

もう一つの仕組みが Device Tree です。

ハードウェア記述形式

Device Tree(DT/DTB)は、arm64 組み込みデバイスやスマートフォン、Chromebook、Apple ノート PC の標準的なハードウェア記述形式です。

ハードウェアレイアウトとロジックの実装

ACPI とは対照的に Device Tree はハードウェアのレイアウト(設定)を記述するものです。
つまり Device Tree にデバイス固有の実装は含まれていません。
デバイス固有の実装はカーネルドライバーに含まれています。

この手法による利点は、静的なハードウェア構成情報と実装ロジックを分離できる点です。
ファームウェアはほぼ変更されない静的なハードウェア構成情報を提供する一方で、実装ロジックはカーネルのアップデートにより実装ロジック自体を容易に変更できます。

この手法の欠点は、デバイスの開発ベンダーがまずアップストリームの Linux kernel にデバイスを制御する実装ロジックを提供し取り込んでもらう必要がありますが、一部のベンダーはこの作業自体が困難であると感じています。

Linux における Snapdragon X のサポート

Linux における Snapdragon X のサポート事情はちょっと複雑です。

ACPI に対応しているが

ファームウェアは ACPI を実装しているのですが、この実装は Windows 向けであり残念ながら Linux から利用できません。
言い換えると Linux と互換性のない実装になっています。

アップストリームの Linux kernel はどうしたのか

そこでアップストリームの Linux kernel はこのプラットフォームをサポートするために、Device Tree を使用することにしました。

しかしファームウェアは Device Tree を提供していません。
そのため EFI ブートチェーンの一部として Device Tree を読み込むようにしなければなりません。

Linux ディストリビューションはどうすればよいのか

これは Linux ディストリビューションにとって新たな課題です。
汎用的に利用可能な ARM64 向け Linux ディストリビューションを提供するためには、カーネルが読み込まれる前に、何らかの方法でデバイスを識別する仕組みと Device Tree を管理する仕組みを実装しなければなりません。

加えて Device Tree は Linux kernel のソースコードの一部になるため、継続的にアップデートや開発していかなければならならず、一度作成して終わりではありません。
つまり Device Tree を静的な情報として定義することはできません。

Ubuntu 25.04 ではどうしていたのか

Ubuntu 25.04 でも Ubuntu Desktop ARM64 をリリースしているため、当然同じ事情があります。

インストーラー

Ubuntu 25.04 ではまずインストーラーの GRUB に Device Tree の読み込みロジックを導入しました。

この実装では起動デバイスを識別するために smbios コマンドを利用し、必要に応じてその起動デバイスに対応した Device Tree を読み込むための devicetree コマンドを追加しています。
この組み合わせで Device Tree を読み込んでいます。
この処理自体は全体を通じて初回起動時にのみ行われます。

flash-kernel パッケージ

その後インストーラーは flash-kernel パッケージをインストールします。
このパッケージはカーネルアップデート時に実行される kernel update hook をインストールします。
この hook は新しいカーネルパッケージから起動デバイスに対応した Device Tree を探し出し、その Device Tree を /boot ディレクトリーにインストールします。

update-grub

GRUB には update-grub を実行するための hook があり、この hook で新しいカーネルや initrd、Device Tree を検索し、それぞれに対応する起動メニューエントリーを生成します。
一連の流れを図にすると、以下のようになります。


汎用イメージを作れるようになったが

これらの方法で様々な ARM64 ノート PC に対応した Ubuntu Desktop ARM64 を提供できるようになりましたが、いくつか制約が残りました。

新しいデバイスをサポートするためにデバイス固有のロジックを、複数のパッケージに追加する必要がありました。
加えてセキュアブートと互換性のない未署名の Device Tree を読み込むため、セキュアブートモードで利用できない GRUB の機能に依存することになりました。

他の Linux ディストリビューションはどうしているのか

他の Linux ディストリビューションでは、postmarketOS に使われている dtbloader を使用して課題に対応しています。

dtbloader

dtbloader は EFI ドライバーであり、Device Tree の検索と EFI Configuration Table へ Device Tree をインストールする機能を持っています。

  • dtbloader

Hardware ID を利用

デバイスの識別にSMBIOS から取得した生の値を直接比較するのではなく、SMBIOS Table から生成される Hardware ID(UUID)を用いてデバイスを識別します。

  • Specifying Hardware IDs for a computer

systemd は UKI EFI Boot stub 内で Device Tree をロードするため、systemd-stub に同じ機能を組み込んでいます。

どちらの方法も適さない

さて Ubuntu 25.04 の方法も dtbloader を利用した方法も、汎用的な Ubuntu Desktop ARM64 には適さない方法です。

EFI ドライバーは shim と GRUB に互換性がありませんし、セキュアブートに対応させることができません。

また UKI(Unified Kernel Image)は静的にビルド及びバンドルされた initrd が必要ですが、この方法は Ubuntu の多くのパッケージがローカル環境で initrd が生成されることを想定しているため、この方法も適しません。

stubble で対応

そこで Ubuntu 25.10 では、stubble でこの課題に対応します。

  • stubble

EFI stub

stubble は 元々 systemd-stub から派生した EFI stub ですが、機能や実装の焦点は大きく異なります。
stubble はカーネルを読み込む前に必要に応じて Device Tree の検索と読み込みのみを行う stub です。

stubble イメージに含まれるもの

バンドルされた stubble イメージには、以下のものが含まれています。

  1. stubble 本体
  2. Linux kernel
  3. HWID ルックアップテーブル

HWID ルックアップテーブルは、デバイスをデバイスツリーと複数のデバイスツリーにマッピングするために使用します。

stubble の動作

まず GRUB が stubble イメージに含まれる Linux kernel をロードします。
最初に stubble が実行され、HWID を生成するために SMBIOS テーブルを読み込みます。
そして埋め込まれたルックアップテーブルから HWID に一致する Device Tree を探し、一致した Device Tree をロードしてから、実際の Linux kernel に制御を渡します。

システムとのシームレスな統合

stubble はシステムと完全に統合されています。
stubble は Linux kernel のビルド依存関係にあり、Linux kernel のビルドが完了した後に、ビルドした Linux kernel と stubble と DTB を一つにまとめバンドルイメージとして提供します。
このバンドルイメージは Ubuntu kernel のように GRUB から読み込むことができます。
これにより GRUB や他のパッケージに特別な修正は必要なくなります。


セキュアブートにも対応

このバンドルイメージに署名を施すことで、そのバンドルイメージ内にある stubble や Linux kernel、Device Tree も署名済みとなり、UEFI サードパーティー CA が有効になっている Snapdragon デバイスでセキュアブートに対応できます。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Linux Mint その292 - Linux kernel 7.0 採用の Linux Mint 22.3 リリース・システム管理ツールにカーネル管理機能追加など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Linux その422 - GNOME Boxes の再構築と未来・Flatpak のみの提供やモダンな機能の実装など
    GNOME Boxes の再構築と未来 GNOME Boxes の再構築と未来が以下で紹介されています。
  • Kubuntu その117 - Kubuntu 26.04 LTS にもっと手厚いサポートを・最高の信頼性を誇る KDE 搭載ディストリビューションを目指して
    最高の信頼性を誇る KDE 搭載ディストリビューションを目指して Kubuntu 26.04 LTS に手厚いサポートが導入されました。
  • Linux その421 - GNOME Shell のデザイン構想と長期的な見通し
    GNOME Shell のデザイン構想と長期的な見通し GNOME Shell のデザイン構想と長期的な見通しが、以下で紹介されています。
  • Linux その420 - KDE Plasma で実装予定の新機能や改善・UI レイアウトの調整やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Windows その29 - Windows 向け Coreutils 登場・Coreutils のインストールやコマンドの一覧など
    Windows 向け Coreutils 登場 Windows 向け Coreutils が登場しました。
  • Ubuntu 24.04 その96 - Ubuntu 24.04.5 LTS のリリース日変更
    Ubuntu 24.04.5 LTS のリリース日変更 Ubuntu 24.04.5 LTS のリリース日が変更されました。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
記事のピックアップ
オプション