系统极客一直在努力
专注操作系统及软件使用技能

Ubuntu 26.10 弃用 dbus-daemon,正式切换到 dbus-broker

Ubuntu

在 Linux 桌面生态中,桌面进程和主机系统的通信主要是靠 D-Bus 这条消息总线。无论是 Ubuntu Dock 上的应用「未读角标」,还是 USB 设备插入时的桌面弹窗,背后都是靠它在驱动。

系统中通常会同时并行着这 2 条总线:

  1. 系统总线:全局共享,负责处理硬件事件与底层后台服务。
  2. 用户会话总线:为当前登录的用户单独服务,处理桌面环境和应用程序的集成逻辑。

过去 22 年的所有 Ubuntu 版本,一直都把dbus-daemon作为默认的消息总线组件。但从 Ubuntu 26.10 开始,这 2 条总线都会全面切换到dbus-broker

Ubuntu 26.10 弃用 dbus-daemon

作为 D-Bus 的参考实现,从 2004 年dbus-daemon随 Ubuntu 发布,就一直沿用至今。虽然它运行稳定、文档齐全,但架构老化带来的局限性已经越来越明显:在高负载下,它会静默丢弃消息;而且它还采用了「逐个扫描」的方式来寻找消息目标,处理效率极低。

相比之下,dbus-broker采用的是异步、事件驱动的现代设计思路,即便总线上挂载了大量进程、消息积压严重,也能保证消息零丢失,寻址速度比旧版要快很多。

有不少主流 Linux 桌面其实早就切换到了dbus-broker,Ubuntu 之所以现在才跟进,主要还是受限于两项严苛的系统级打包策略:

  1. 同类组件互斥策略:Ubuntu 明确规定,main仓库不能同时存在两个功能完全重叠的包。要引入dbus-broker,就必需先把main仓库里所有关联包对dbus-daemon的依赖全部剥离,而 GNOME 的 GDM 显示管理器就是这场改造中一块难啃的骨头。
  2. AppArmor 兼容性:Ubuntu 的 AppArmor 安全沙箱框架会深度接管部分 Debian 系统包和所有 Snap 应用的 D-Bus 消息。dbus-broker直到最近才和dbus-daemon的功能完全对齐。

在把这两个问题都解决掉之后,Ubuntu 26.10 自然就成了上线变更的理想测试窗口。对普通用户来说,基本察觉不到明显的变化。

无感的平滑替换

和之前 Ubuntu 引入 Dracut 差不多,用户日常使用时,几乎感觉不到明显差异。Canonical 官方也明确表示:dbus-broker使用的协议、配置文件和总线策略和dbus-daemon完全一致,所有应用、桌面环境和周边生态都能照常运转。

  • 随着dbus-broker在 Ubuntu 26.10 上正式晋升到main仓库,原有的dbusdbus-daemon包会被降级到universe仓库,不再作为系统预装组件。如果第三方软件依赖了旧组件,系统还是能正常拉取安装。
  • 在底层实现层面,dbus-broker为系统和用户实例都提供了dbus-broker.service systemd 单元,并自动映射成旧版dbus.service的别名。当两个包同时安装时,新版本会优先接管。

在 Ubuntu 26.04 上提前体验 dbus-broker

虽然 Ubuntu 26.10 才是默认搭载的版本,但 26.04 LTS 用户也可以手动安装体验:

1手动安装dbus-broker组件:

sudo apt install dbus-broker

2安装完成后重启系统,新版总线就会接管底层通信。

3你可以通过以下命令来检查运行状态:

systemctl status dbus-broker
查看 dbus-broker 服务状态

4如果想要回退到原生的dbus实现,可以使用以下命令彻底禁用dbus-broker组件:

sudo systemctl disable dbus-broker

sudo systemctl --user --global disable dbus-broker

5重启系统并重新登录。

赞(0)
分享到

评论 抢沙发