Вопрос или проблема
Я перепостиваю Проблему с запуском Gnome сессии на удалённом X сервере здесь, потому что я считаю, что это вопрос по Gnome
, а не только по Ubuntu.
У меня есть хост на Ubuntu, к которому я подключаюсь через ssh -Y
. Клиентом служит мой ноутбук с macOS, на котором установлен XQuartz. Я могу запускать xclock
или другие приложения X
с хоста и видеть их на своём ноутбуке. Что я не могу запустить, так это gnome-session, который, насколько я понимаю, должен быть тем самым окружением, которое появляется, когда я вхожу в систему с локальной консоли. DISPLAY правильно настроен, но, похоже, игнорируется.
Передача --display="$DISPLAY"
gnome-session даёт:
** (gnome-session-binary:5943): WARNING **: Неизвестная опция --display=localhost:10.0
Действительно, в моем man-странице для gnome-session не упоминается –display, хотя в man-страницах вокруг интернета он есть. Так что, я предполагаю, он был удалён в какой-то момент, есть ли у меня всё ещё возможность это сделать?
Я также обнаружил, что другие приложения gnome (например, gnome-software) имеют опцию --display
, но они её игнорируют, и приложение запускается на консольном рабочем столе, а не на моем ноутбуке.
Я также обнаружил, что другие приложения gnome (например, gnome-software) имеют опцию –display, но они её игнорируют, и приложение запускается на консольном рабочем столе, а не на моем ноутбуке.
Предполагаю, что вы также запускаете Gnome 3 на сервере, а не только по SSH? Я предполагаю, что он работает как сеанс Wayland. Приложения Gnome могут использовать WAYLAND_DISPLAY
вместо DISPLAY
. Проверьте XDG_SESSION_TYPE
. Если он установлен в wayland
, приложения Gnome будут использовать Wayland-дисплей вместо вашего SSH-дисплея. Попробуйте запустить их с XDG_SESSION_TYPE=x11
.
Действительно, в моем man-странице для gnome-session не упоминается –display, хотя в man-страницах вокруг интернета он есть. Так что, я предполагаю, он был удалён в какой-то момент, есть ли у меня всё ещё возможность это сделать?
gnome-session
должен учитывать DISPLAY
, вам не нужна --display
. Однако у gnome-shell
есть опция --display
.
Что я не могу запустить, так это gnome-session
Я обнаружил, что gnome-session и libmutter часто вызывают ошибки сегментации, если не работают с аппаратным обеспечением дисплея. Проверьте dmesg
на вашем сервере.
Может быть, вы можете запустить env XDG_SESSION_TYPE=x11 gnome-session
, но я подозреваю, что это тоже приведёт к ошибке сегментации. Также вы можете попробовать gnome-shell
вместо gnome-session
.
Рекомендую использовать другое и более лёгкое окружение рабочего стола для SSH, например, lxde (lxsession
) или xfce (startxfce4
), или просто оконный менеджер, такой как openbox (openbox --sm-disable
).
Ответ или решение
Ваш вопрос о том, почему gnome-session
не запускается на удаленном X-сервере, является актуальным для многих пользователей, подключающихся к удаленным машинам при помощи SSH. Давайте рассмотрим, как можно решить эту проблему.
1. Обновите переменные окружения
Прежде всего, убедитесь, что переменная DISPLAY
установлена правильно. Можно использовать команду:
echo $DISPLAY
Если она установлена на что-то вроде localhost:10.0
, то в большинстве случаев это правильно. Однако важно также проверить, не использует ли ваша настраиваемая среда Wayland. Это можно сделать с помощью:
echo $XDG_SESSION_TYPE
Если вывод показывает wayland
, то приложения GNOME будут использовать WAYLAND_DISPLAY
. В таком случае, попробуйте запустить сессию X11:
env XDG_SESSION_TYPE=x11 gnome-session
2. Убедитесь, что GNOME работает с X11
Если у вас действительно Wayland-сессия, может помочь следующее решение. Установите переменную XDG_SESSION_TYPE
в x11
:
export XDG_SESSION_TYPE=x11
3. Проверьте наличие ошибок
Если gnome-session
продолжает вызывать ошибки или завершаться с ошибкой, проверьте вывод dmesg
на наличие сообщений об ошибках или сбоев, связанных с gnome-session
или libmutter
. Это может дать дополнительные подсказки о том, что именно идет не так.
dmesg | grep -i gnome
4. Попробуйте альтернативные среды рабочего стола
Если GNOME по-прежнему не удается запустить через удаленный X-сервер, рассмотрите возможность использования более легковесной среды рабочего стола, такой как LXDE или XFCE. Это может быть более стабильным вариантом для работы через SSH. Для LXDE выполните:
lxsession
Для XFCE:
startxfce4
5. Примеры запусков
Воспользуйтесь следующими командами для запуска отдельных приложений GNOME с помощью X11:
DISPLAY=:10 gnome-terminal
или
env DISPLAY=:10 gnome-software
Эти команды могут помочь им явно указать, на какой дисплей отправлять графический вывод.
6. Установка дополнительных пакетов
Если проблема не решается, убедитесь, что все необходимые пакеты установлены на сервере. Убедитесь, что у вас есть установленные следующие пакеты:
sudo apt install gnome-session gnome-shell
Заключение
Если, следуя этим шагам, вы все еще сталкиваетесь с проблемами, возможно, стоит рассмотреть использование других методов доступа к удаленному серверу, таких как VNC или RDP, которые обеспечивают полноценный графический интерфейс. Каждый из этих подходов имеет свои плюсы и минусы, поэтому выбирайте способы, которые лучше всего соответствуют вашим требованиям.
Если возникнут дополнительные вопросы или нужна помощь, пожалуйста, дайте знать!