сессия-c3.scope не является cgroup snap 22.04 виртуальный стол (nomachine) [закрыто]

Вопрос или проблема

Приложения в формате snap на Ubuntu при запуске в виртуальных рабочих столах nomachine или x2go выдают ошибку и не запускаются. Это касается только ограниченных snap, что составляет большую их часть.

Виртуальные рабочие столы nomachine связаны с сервером рабочей станции nomachine или другими продуктами в стиле терминального сервера, а не с базовым клиентом совместного использования рабочего стола nomachine. Я не использую x2go, но пользователи сообщают об идентичных проблемах, поэтому я предполагаю, что он тоже делит виртуальный рабочий стол.

Известные обходные пути — это либо изменить песочницу snap, отключив cgroups v2, либо вручную имитировать нормальное значение DBUS_SESSION_BUS_ADDRESS. Первый способ прост, но радикален, поскольку cgroups v2 является важной частью современного опыта Linux, а второе решение — это хак, который может не сработать при множественном числе пользователях.

Я не знаю, почему DBUS_SESSION_BUS_ADDRESS оказывается неправильным, когда nomachine или x2go запускает сеанс. При использовании этих приложений для удаленного доступа к сеансам виртуального рабочего стола нет входа, управляемого традиционным дисплейным менеджером. Nomachine выполняет вход самостоятельно, а затем запускает графическую сессию. Я предполагаю, что x2go делает то же самое. Существует какая-то разница в путях коду, которая приводит к неожиданному значению для DBUS_SESSION_BUS_ADDRESS. Я предполагаю, что какая-то часть логики запуска сессии systemd не вызывается nomachine или x2go. Но мне было сложно это понять. Я понимаю, что у меня нет четкого представления о том, как работает вход в Linux, и я не могу найти документацию, которую я мог бы понять.

(Я думаю, что сеанс “дистанционного доступа” к физически присутствующему сеансу, например, к десктопу nomachine, не имеет этой проблемы, поскольку он не обходит дисплейный менеджер)

Мой опыт связан с nomachine, но пользователи x2go сообщают о той же проблеме, и тот же обходной путь работает и там.

С виртуальным рабочим столом nomachine в xubuntu или ubuntu я не могу запустить ограниченные snap, такие как firefox (если только cgroups v2 не отключен через параметр ядра).

Ошибка при запуске из терминала выглядит следующим образом:

tim@ubuntu ~/Desktop $ firefox
/user.slice/user-1000.slice/session-c3.scope не является cgroup snap

но одной из коренных причин проблемы, похоже, является то, что
DBUS_SESSION_BUS_ADDRESS настроен неправильно. У него есть значение, но оно сильно отличается от нормального значения сеанса с дисплейным менеджером.

В типичном входе в Ubuntu мы видим что-то подобное:

DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

но в сломанном сеансе nomachine мы видим что-то вроде:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ELpK0GVRdC,guid=877c270e0667562ac373497b63ebf31c

Если я вручную установлю DBUS_SESSION_BUS_ADDRESS, ограниченные snap будут работать.

Например, если в nomachine я запускаю xfce таким образом:

DefaultDesktopCommand "env
    DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus /usr/bin/startxfce4"

snap будут работать.

Проблема проявляется только для ограниченных snap, когда работает cgroups v2. Поэтому ограниченные snap, а значит и песочница, тоже должны быть факторов. По этой причине многие убеждены, что это ошибка snap, но разработчики snap не согласны с этим.

Смотря на странное значение для DBUS_SESSION_BUS_ADDRESS, я делаю вывод, что сессия не настраивается должным образом. То, как nomachine запускает сессию, должно отличаться от того, как работают дисплейные менеджеры. DBUS_SESSION_BUS_ADDRESS устанавливается в процессе входа systemd, до того, как начнется графическая сессия.

Другой возможностью является то, что

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ELpK0GVRdC,guid=877c270e0667562ac373497b63ebf31c

является совершенно допустимым значением, но что песочница snap не принимает его (у неограниченных snap-приложений проблем нет).

Наименее хлопотный обходной путь — отключить cgroups v2, и именно это рекомендует nomachine.

Почему DBUS_SESSION_BUS отличается, когда nomachine или x2go выполняют вход?

Ответ или решение

Проблема, которую вы описали, действительно является распространенной среди пользователей, использующих виртуальные рабочие столы с NoMachine и x2go на Ubuntu 22.04, особенно с консолями, ограниченными с точки зрения безопасности, такими как snap.

Давайте рассмотрим причины и возможные решения этой проблемы более подробно.

Причины проблемы

Когда вы используете NoMachine или x2go для подключения к виртуальному рабочему столу, процессы этих программ могут не корректно настраивать переменные среды, такие как DBUS_SESSION_BUS_ADDRESS. Эта переменная отвечает за связь с системой D-Bus, которая используется многими графическими приложениями, включая те, что упакованы в snap-формате.

При стандартном входе в систему через дисплейный менеджер (например, GDM или LightDM), DBUS_SESSION_BUS_ADDRESS устанавливается правильно и указывает на сокет D-Bus, доступный для текущей сессии. Ваша проблема возникает, когда D-Bus устанавливается с помощью нестандартного пути, как в вашем случае:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ELpK0GVRdC,guid=877c270e0667562ac373497b63ebf31c

Это означает, что snap-приложения не могут правильно взаимодействовать со средой D-Bus, что приводит к ошибке:

/user.slice/user-1000.slice/session-c3.scope is not a snap cgroup

Возможные решения

  1. Настройка переменной среды вручную:
    Как вы уже упомянули, вы можете вручную установить DBUS_SESSION_BUS_ADDRESS, чтобы исправить проблему. Вот как это можно сделать:

    Настройте DefaultDesktopCommand в конфигурации NoMachine следующим образом:

    DefaultDesktopCommand "env DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus /usr/bin/startxfce4"

    Это обеспечит правильное значение переменной для стартуемой сессии, и ваша snap-программа (например, Firefox) должна начать работать.

  2. Отключение cgroups v2:
    Хотя это не идеальное решение, поскольку cgroups v2 — это важная часть современного управления процессами в Linux, вы можете временно отключить его, чтобы проверить, устранится ли проблема. Это можно сделать, добавив параметр к ядру в файл конфигурации grub:

    GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"

    Следует помнить, что это решение механически воздействует на всю систему и может повлиять на другие аспекты работы.

  3. Использование различных дисплейных менеджеров:
    Возможно, стоит рассмотреть использование альтернативных дисплейных менеджеров или протоколов удаленного доступа, которые могут лучше справляться с настройкой окружения. Например, использование VNC или других решений, которые не зависят от D-Bus для управления сессиями, может помочь.

Заключение

Недостаточная настройка переменной DBUS_SESSION_BUS_ADDRESS — это основной источник вашей проблемы с запуском snap-приложений на NoMachine и x2go. Мы рекомендовали вам корректировать эту переменную вручную или временно отключить cgroups v2. Лучше всего, однако, подождать обновлений от разработчиков snap или NoMachine, которые могут улучшить совместимость в будущем.

Если у вас будут дополнительные вопросы или потребуется более детальное разъяснение, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...