Как создать новый сеанс входа в систему при запуске xinit из консоли?

Моя текущая система загружается в консоль, и я не хочу использовать диспетчер отображения.

После обновления до Ubuntu 13.10 я понял, что ConsoleKit больше не используется для управления логинами пользователей, и вместо этого используется сервис systemd-logind.

Мой .xinitrc конфиг для Ubuntu 13.04 выглядел так:

exec ck-launch-session startxfce4

ck-launch-session позволил мне смонтировать диски или выключить / перезагрузить / приостановить ПК.

Единственное место, где я мог найти документацию о том, как включить эти функции, было в документации для Arch Linux :

Пользователи должны сначала настроить systemd-logind для управления их сессия. Если systemd работает как демон init system, то это уже происходит.

Затем пользователь должен запустить systemd, добавив в свои ~/.xinitrc следующее: /usr/lib/systemd/systemd --user

Пользователь должен удалить все экземпляры ck-launch-session или dbus-launch из своих ~/.xinitrc, как эти команды не нужны.

blockquote>

Однако, поскольку Ubuntu использует upstart, а не systemd, я не могу сделать это в своей конфигурации.

Я попытался сделать что-то похожее, поэтому я добавил это в свой .xinitrc:

export DESKTOP_SESSION=xfce
init --user

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

Если я запускаю X-сервер с аргументом vt01, где 01 - идентификатор текущего tty, все работает нормально, но я не могу использовать такие вещи, как CTRL+C, чтобы завершить работу сервера, если что-то висит. Да, есть обходные пути, например, вызов killall xinit, но это не решает проблему.

Я думаю, что я не могу завершить работу Если я запускаю X-сервер в новом tty, это потому, что новый сеанс logind не создан. После прочтения документации logind я понимаю, что мне, вероятно, нужно создать новый сеанс после запуска X-сервера, и этот сеанс должен быть помечен как активный, когда я нахожусь на X-сервере. Это можно проверить с помощью следующей команды:

loginctl show-session $XDG_SESSION_ID | grep Active

Следующая строка в документации logind смущает меня:

CreateSession () и ReleaseSession () может использоваться для открытия или закрытия сеансов входа в систему. Эти вызовы никогда не должны вызываться напрямую клиентами. Создание / закрытие сеансов - исключительно работа PAM и его модуля pam_systemd.

blockquote>

Поэтому мой вопрос заключается в том, как заставить PAM создать новый сеанс входа в систему после запуска X-сервера?

4
задан 17.04.2020, 06:00

1 ответ

  • 1
    Привет, спасибо за Ваш ответ. Таким образом, это - в основном то же самое, которое я упомянул в своем вопросе: If I start the X server with the vt01 argument, where 01 is the id of the current tty, everything works fine, but I can't use stuff like CTRL+C to terminate the server if something hangs. у меня в настоящее время есть маленький сценарий, который находит текущий tty идентификатор и затем называет xinit с vt# аргумент. Я предполагаю I' ll просто должны жить без консольного вывода X-сервера или перенаправить его к файлу журнала... – Lionel Chan 17.04.2020, 06:01

Теги

Похожие вопросы