Как создать новый сеанс входа в систему при запуске 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, как эти команды не нужны.

Однако, поскольку 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.

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

4
задан 21 October 2013 в 11:06

Другие вопросы по тегам:

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