GNOME посилює залежність від systemd – зміни в GDM та gnome-session

Адріан Вовк (Adrian Vovk), творець атомарно оновлюваного дистрибутиву carbonOS та один із розробників systemd-homed і systemd-sysupdate, оголосив про внесення в GNOME змін, які посилять залежність проекту від systemd. У майбутніх версіях GNOME 49 і 50 деякі власні компоненти для запуску екрана входу в систему будуть замінені на штатні можливості systemd.

Історія залежності GNOME від systemd

З 2015 року в GNOME використовується менеджер сеансів systemd-logind, який прийшов на зміну ConsoleKit. В дистрибутивах, що не підтримують systemd, використовується elogind (незалежний від systemd урізаний варіант logind) або патчі, що повертають підтримку ConsoleKit.

При розробці GNOME подібні обхідні шляхи роботи без systemd не враховуються і не тестуються. Їх працездатність залежить від сторонніх ентузіастів.

Основні зміни в майбутніх версіях GNOME

У майбутніх випусках GNOME в дисплейному менеджері GDM додатково буде задіяна інфраструктура userdb. Вона замінить собою сервіс AccountsService.

Окрім того, розробники вирішили видалити з GNOME реалізацію власного менеджера сервісів. Цей менеджер використовувався в gnome-session як запасний обробник для запуску сервісів GNOME в середовищах без systemd.

Причини змін у GNOME

GNOME і systemd самі по собі не підтримують запуск більше одного графічного сеансу для одного й того ж користувача. При цьому GDM може виводити одночасно декілька екранів входу для запуску кількох графічних сеансів.

Ця функціональність у GDM була реалізована 15 років тому як тимчасовий костиль і несумісна з сучасним dbus-broker. Тому вирішено перейти на нову реалізацію, що використовує systemd-userdb для динамічного виділення облікових записів.

Адаптація для дистрибутивів без systemd

Для спрощення адаптації дистрибутивів, що не використовують systemd, у GNOME 49 буде тимчасово додана можливість запуску GDM без userdb. Вона використовуватиме фіксованого користувача gdm-greeter для першого сеансу входу, gdm-greeter-2 для другого тощо.

Однак у майбутніх версіях GNOME ця можливість, а також вбудований менеджер сервісів будуть видалені. Тому розробникам дистрибутивів без systemd потрібно терміново розробити прошарки для заміни systemd-userdb та процесу запуску сеансу.

Крім того, знадобиться заміна виконуваного файлу gnome-session-ctl, що координує взаємодію між процесом запуску сеансу, сервісом D-Bus і systemd. Заміну gnome-session-ctl необхідно розробити до випуску GNOME 49, а userdb – до GNOME 50.

Видалення старого коду на користь штатних можливостей systemd має спростити супровід, позбавити проект від костилів і дозволити реалізувати бажану функціональність. Проте для дистрибутивів без systemd це означає додаткову роботу з адаптації.

Більше інформації можна отримати на офіційному сайті GNOME.