Ubuntu 26.10 впервые с 2004 года меняет реализацию D-Bus: вместо dbus-daemon используется dbus-broker, но рядовые пользователи эту замену не ощутят.

Процессы на рабочем столе общаются друг с другом и с системой через D-Bus, «шинy сообщений». Именно так панель Ubuntu Dock показывает счётчики непрочитанных уведомлений для приложений, а среда узнаёт о подключении USB-накопителя, и всё в таком духе.

Задействованы две шины: системная, общая для всего устройства, обслуживающая оборудование и фоновые службы, и пользовательская сессионная, отвечающая за интеграцию рабочего стола и приложений для вошедшего в систему.

Пользователи почти не заметят перемен; Canonical утверждает, что всё «работает как и прежде».

Ubuntu использует dbus-daemon в качестве стандартной шины сообщений с самого первого выпуска 22 года назад. Начиная с Ubuntu 26.10 для обеих шин внедряется dbus-broker. В чём же разница?

Пакет dbus-daemon представляет собой эталонную реализацию D-Bus, которую Ubuntu применяет с 2004 года. Он стабилен и хорошо документирован, но известно, что при высокой нагрузке сообщения могут молча теряться, а поиск получателей выполняется последовательным перебором, то есть медленно.

dbus-broker — более свежий вариант, полностью переписанный с нуля в асинхронной, событийно-ориентированной архитектуре. Благодаря этому сообщения не пропадают, а поиск ускоряется даже при большом количестве процессов на шине.

Многие другие десктопные дистрибутивы Linux уже работают с новым брокером. Путь Ubuntu занял чуть больше времени по нескольким упаковочным причинам (и это не единственная низкоуровневая замена в нынешнем цикле: Ubuntu также переводит демона синхронизации времени на Rust-версию).

Во-первых, политика Ubuntu не разрешает держать в main1 два пакета, решающих одну и ту же задачу. А каждый пакет из main должен был избавиться от зависимости от dbus-daemon прежде, чем туда добавят dbus-broker. GDM, менеджер входа GNOME, оставался последним крупным препятствием.

Во-вторых, AppArmor, система принудительной изоляции Ubuntu, обрабатывает сообщения D-Bus для части системных пакетов Debian и для всех snap-пакетов. Поскольку функциональное равенство с dbus-daemon у dbus-broker появилось относительно недавно, ранняя замена была нецелесообразной.

Когда оба препятствия устранены, а краткосрочный промежуточный выпуск даёт отличную возможность для системных изменений, Ubuntu 26.10 переходит на dbus-broker2.

Хотя вы этого и не заметите.

Dbus-broker — прозрачная замена

Как и в случае с «преимуществами» Dracut в Ubuntu, вы вряд ли ощутите разницу. Canonical сообщает, что dbus-broker использует «тот же протокол, те же файлы конфигурации, те же политики шины» , что и dbus-daemon, а значит, приложения, окружения рабочего стола и всё остальное «продолжают работать как прежде».

По мере переноса dbus-broker в main в Ubuntu 26.10 старые пакеты dbus и dbus-daemon переместятся в карман universe и перестанут быть предустановленными. Если они потребуются как зависимости для другого ПО (не из main), старую версию по-прежнему можно будет подтянуть.

С точки зрения реализации у пакета dbus-broker есть юниты systemd для системного и пользовательского экземпляров: dbus-broker.service, псевдоним для юнитов dbus.service от dbus-daemon. Если в системе установлены оба пакета, приоритет получает новый.

Как запустить dbus-broker в Ubuntu 26.04

dbus-broker в Ubuntu 26.04, подтверждение через systemctl status
dbus-broker в Ubuntu 26.04, подтверждение через systemctl status

Ubuntu давно планировала обновление D-Bus. Хотя новый брокер станет стандартом сразу после установки начиная с Ubuntu 26.10, вы можете опробовать его и на 26.04 LTS (с очевидной оговоркой: вы вносите изменение вручную, подтягивая пакет из universe).

Для теста просто установите dbus-broker из репозиториев (учтите, в 26.04 он не входит в main):

sudo apt install dbus-broker

Перезагрузите систему, и при старте он будет на месте. Проверить можно, выполнив в терминале systemctl status dbus-broker.

В 26.04 могут возникать проблемы, поскольку там этот пакет не предполагался основным.

Чтобы вернуться к стандартной реализации dbus, сначала убедитесь, что пакет dbus всё ещё установлен. Затем отключите dbus-broker через systemd.

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

Как и раньше, перезагрузите систему и войдите обратно, чтобы заметить… насколько незаметной оказалась замена? Делитесь впечатлениями в комментариях.

  • Это основной поддерживаемый репозиторий Ubuntu, где размещается большинство ключевых и неотъемлемых пакетов, из которых состоит дистрибутив. Пакеты не попадают в main просто так. ↩︎
  • Во время работы над материалом звучала «We Like To Party (The Vengabus)» группы Vengaboys. «The dbus-broker’s coming, and everybody’s jumping, New York to San Francisco, an interprocess disco…» ↩︎