GNOME адаптований для керування через systemd

Бенджамін Берг (Benjamin Berg), один з інженерів Red Hat, який займається розробкою GNOME, узагальнив результати роботи з перекладу GNOME на керування сеансами виключно засобами systemd без застосування процесу gnome-session.

Для керування входом у GNOME вже досить давно застосовується systemd-logind, який відстежує стану сеансів у прив'язці до користувача, керує ідентифікаторами сеансів, відповідає за перемикання між активними сеансами, координує розраховані на багато користувачів оточення (Multi-seat), налаштовує політики доступу до пристроїв, надає засоби для завершення роботи і переходу в сплячий режим і т.п. .

При цьому частина пов'язаної з сеансами функціональності залишалася на плечах процесу gnome-session, який займався керуванням через D-Bus, запуском дисплейного менеджера та компонентів GNOME, організацією автозапуску вказаних додатків. У процесі розробки GNOME 3.34 специфічні для gnome-session можливості оформлені як unit-файлів для systemd, виконуваних як «systemd —user», тобто. у прив'язці до оточення конкретного користувача, а не всієї системи. Зміни вже застосовані у дистрибутиві Fedora 31, випуск якого очікується наприкінці жовтня.

Використання systemd дало можливість організувати запуск обробників на вимогу або при настанні певних подій, а також витонченіше реагувати на передчасне завершення процесів через збої та розширено обробляти залежність при запуску компонентів GNOME. Як наслідок, можна скоротити кількість постійно запущених процесів та знизити споживання пам'яті. Наприклад, XWayland тепер можна запускати тільки при спробі виконання програми на базі протоколу X11, а специфічні для певного обладнання компоненти, тільки за наявності такого обладнання (наприклад, обробники смарткарт будуть запускатися при вставці карти і завершуватися при її вилученні).

Для користувача з'явилися гнучкіші інструменти керування запуском сервісів, наприклад, для відключення обробника мультимедійних клавіш буде достатньо виконати "systemctl -user stop gsd-media-keys.target". У разі проблем, пов'язаних з кожним обробником логи можна переглянути командою journalctl (наприклад, journalctl —user -u gsd-media-keys.service), попередньо включивши в сервісі ведення налагоджувального лога (Environment=G_MESSAGES_DEBUG=all). Також з'явилася можливість запуску в ізольованих sandbox-оточення всіх компонентів GNOME, до яких пред'являються підвищені вимоги до безпеки.

Для згладжування переходу, підтримку старого способу запуску процесів планується зберегти протягом кількох циклів розробки GNOME. Далі розробники проведуть рецензування стану gnome-session і швидше за все (позначено як «likely») видалять із нього засоби запуску процесів та супроводу D-Bus API. Потім застосування «systemd -user» буде переведено в розряд обов'язкових функцій, що може створити труднощі для систем без systemd і вимагатиме підготовки альтернативного рішення, як свого часу було з systemd-logind. Тим не менш, у своєму виступі на конференції GUADEC 2019 Бенджамін Берг згадав про намір зберегти підтримку старого методу запуску для систем без systemd, але ця інформація розходиться з планами на сторінці проекту.

Джерело: opennet.ru

Додати коментар або відгук