dbus-daemon から dbus-broker へ移行
Ubuntu 26.10 で dbus-daemon から dbus-broker へ移行します。D-Bus を実装するソフトウェア
dbus-daemon も dbus-broker も D-Bus を実装しているソフトウェアです。D-Bus は Linux システム上でプロセス同士が通信するためのメッセージバスを提供します。
これによりアプリやデスクトップを含むソフトウェアは、相手に通知を送ったり、情報を送ったり受け取ったり、お互いに通信が可能になります。
D-Bus は元々 Linux デスクトップのために設計された仕組みですが、今やデスクトップだけでなく、サーバーや IoT 含め様々な環境で活用されている仕組みです。
Ubuntu Desktop でももちろん使われている
Ubuntu Desktop でももちろん使われています。デスクトップ環境と連携して動作するために、すべてのアプリは何かしらの形で D-Bus を活用しています。
他にも Wi-Fi への接続や USB メモリーのマウント、画面の明るさ調整といったシステムサービスと通信する時にも D-Bus が使われます。
もし D-Bus がなかったら、それはまるで Windows 3.1 の時代に遡るかのように、非常に不便なデスクトップを利用することになっていたでしょう。
それぐらいデスクトップにとって D-Bus は重要なパーツの一つなのです。
dbus-broker へ切り替え
今まで D-Bus の実装に dbus-daemon が利用されてきました。しかし Ubuntu 26.10 以降は、システムバスとユーザーごとのセッションバスの両方で、dbus-broker に切り替わります。
アップグレードも対象
Ubuntu 26.04 LTS から Ubuntu 26.10 へアップグレードした場合も、dbus-broker に切り替わります。ユーザーへの影響は
ありません。対応するプロトコルも設定ファイルもバスポリシーもアプリもデスクトップ環境も Snap アプリも何もかも、以前と同様に動作します。
つまり透過的な置き換えになります。
なぜ変更するのか?
なぜこのタイミングで変更するのでしょうか。10年選手
dbus-daemon は D-Bus のリファレンス実装であり、10年以上に渡り事実上すべての Linux ディストリビューションでデフォルトとして採用されてきました。dbus-daemon は安定性もあり、実装も多くの開発者に知られている実装になっていました。
しかしその設計はその時代に設計されたものであり、今日求められる性能や信頼性に対応しきれなくなっています。
新時代の D-Bus 実装
その一方で dbus-broker は、後から現れた新時代の D-Bus の実装です。dbus-broker はモダンな Linux を対象に、非同期及びイベント駆動アーキテクチャーでゼロから設計されています。
dbus-daemon よりも優れたリソース管理や信頼性、拡張性を提供します。
なぜ切り替えに時間がかかった?
一部の Linux ディストリビューションは、すでに数年前に dbus-broker へ移行しています。しかし Ubuntu では主に2つの理由により、切り替えに時間がかかりました。
dbus-daemon への依存を取り除くのに時間がかかった
1つ目の理由は、dbus-daemon への依存を取り除くのに時間がかかりました。main に配置するために
Ubuntu には main と呼ばれるリポジトリーがあり、main には同じ機能を提供するパッケージを配置することができないポリシーになっています。ちなみに Ubuntu でプリインストールするソフトウェアは、main に配置する必要があります。
そのため dbus-broker を main に配置するためには、dbus-daemon に依存するすべてのパッケージから、dbus-daemon への依存を削除する必要があります。
GDM は GNOME が開発しているディスプレイマネージャー(ログインマネージャー)です。
GDM は各 Greeter のインスタンスごとに分離されたセッションバスを起動するために、dbus-daemon が提供する dbus-run-session に依存していました。
これでこの課題を解消できるようになりました。
Ubuntu は AppArmor を通じて D-Bus メッセージを制御し、アクセス制限を実現しています。
この仕組みは、一部の重要な deb パッケージ由来のソフトウェアとすべての Snap パッケージ由来のソフトウェアで活用されています。
この長期間の開発作業も終わりを迎え、AppArmor を dbus-broker に統合し、従来の dbus-daemon と同等の機能を実現できるようになりました。
そのため dbus-broker を main に配置するためには、dbus-daemon に依存するすべてのパッケージから、dbus-daemon への依存を削除する必要があります。
最後に GDM が残った
もちろん dbus-broker に切り替えるためにこの作業が行われていたのですが、最後まで dbus-daemon への依存が残ったパッケージが、GDM のパッケージでした。GDM は GNOME が開発しているディスプレイマネージャー(ログインマネージャー)です。
GDM は各 Greeter のインスタンスごとに分離されたセッションバスを起動するために、dbus-daemon が提供する dbus-run-session に依存していました。
GNOME 49 で依存が解消された
しかし GNOME 49 で GDM の dbus-daemon への依存が削除されました。これでこの課題を解消できるようになりました。
AppArmor の統合に時間がかかった
2つ目の理由は、AppArmor を dbus-broker に統合するのに時間がかかりました。AppArmor
AppArmor は特定のインターフェースに対してアクセスを制限する仕組みです。Ubuntu は AppArmor を通じて D-Bus メッセージを制御し、アクセス制限を実現しています。
この仕組みは、一部の重要な deb パッケージ由来のソフトウェアとすべての Snap パッケージ由来のソフトウェアで活用されています。
作業に長い時間がかかった
AppArmor を dbus-broker に統合する作業では、多くの時間がかかりました。この長期間の開発作業も終わりを迎え、AppArmor を dbus-broker に統合し、従来の dbus-daemon と同等の機能を実現できるようになりました。
Ubuntu 26.04 LTS で dbus-broker を試すには
Ubuntu 26.04 LTS で dbus-broker を試す方法です。1. dbus-broker のインストール
端末から以下のコマンドを実行し、dbus-broker をインストールします。sudo apt install dbus-broker
2. 再起動
後は PC を再起動するだけです。元に戻すには
元に戻す方法です。1. dbus-daemon のインストール
端末から以下のコマンドを実行し、dbus-daemon をインストールします。
sudo apt install dbus
2. dbus-broker の無効化
端末から以下のコマンドを一行ずつ実行し、dbus-broker を無効化します。sudo systemctl disable dbus-broker
sudo systemctl --user --global disable dbus-broker
sudo systemctl --user --global disable dbus-broker
3. 再起動
PC を再起動します。4. dbus-broker のアンインストール
端末から以下のコマンドを実行し、dbus-broker をアンインストールします。sudo apt remove dbus-broker
