LINUX.ORG.RU

Systemd как менеджер пользовательской сессии

 ,


2

3

Хочу организовать себе сабж. Для тех, кто не знает, команда /usr/lib/systemd/systemd --user запускает пользовательскую сессию systemd. Зачем это нужно? Более гибкая, более контролируемая и многоуровневая автозагрузка программ/демонов пользователя.

Есть люди, которые реально пользуются? Можете по пунктам объяснить все? А то арчвики я читал, другие статьи в гугле читал, но понимания все равно нет. Вручную вроде как все получается запускать, а автоматически - нет.

И да, cast plm


но понимания все равно нет

плохо читал прочитай ещё раз.

тоже читал?

https://github.com/sofar/user-session-units
https://github.com/zoqaeski/systemd-user-units

как простой пример чего нужно сделать. https://phab.enlightenment.org/w/e18_with_systemd_user_session/

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

dhampire ★★★
()
Ответ на: комментарий от dhampire

Ну вот создал я wm.target, awesome-wm.service, запускаю systemd --user, делаю

systemctl --user start awesome-wm.service
то все запускается. Но если я делаю
systemctl --user enable awesome-wm.service
, то при следующем запуске systemd --user, awesome не запускается. При этом в журнал ничего не пишет. Не понимаю, что я могу делать не так. Это раз.

И второе. Пытаюсь активировать

sudo systemctl enable user@serkhay.service
При запуске системы не запускается. Хотя если сделать
sudo systemctl start user@serkhay.service
, то запускается.

serkhay
() автор топика
Ответ на: комментарий от serkhay
PAM needs to be enabled in systemd. Your system should have
  `pam_systemd.so` used in the `login` or `system-auth` files in
  /etc/pam.d.
cat /etc/pam.d/system-login | grep systemd
session   required   pam_systemd.so

и это сделал ?

ll -R ~/.config/systemd/user
/home/egik/.config/systemd/user:
итого 16
lrwxrwxrwx 1 egik users   41 май 14 05:07 default.target -> /home/egik/.config/systemd/user/wm.target
-rw-r--r-- 1 egik users  477 июн 12 07:52 e18.service
-rw-r--r-- 1 egik users  130 май 14 05:07 wm.target
drwxr-xr-x 2 egik users 4096 июн 13 05:26 wm.target.wants
-rw-r--r-- 1 egik users  645 май 28 20:11 xorg.service

/home/egik/.config/systemd/user/wm.target.wants:
итого 0
lrwxrwxrwx 1 egik users 14 июн 13 05:26 e18.service -> ../e18.service

dhampire ★★★
()

Зачем это нужно?

Для понтов.

Задачи менеджера сеансов — сохранение и восстановление сеансов, а также уведомление приложений о необходимости завершения. gnome-session-manager с этим справляется превосходно.

geekless ★★
()
Ответ на: комментарий от geekless

Ну и что, мне ради этого гном ставить? Или пол гнома?

serkhay
() автор топика
Ответ на: комментарий от serkhay
y -Qi systemd | grep Версия
Версия                : 204-3
cat ~/.config/systemd/user/xorg.service                                                                                           1 ↵

#
# Minimal Xorg service file - launches Xorg as a service unit
#

# The Xorg launch helper forks, launches Xorg and waits for Xorg to
# accept incoming connections to $DISPLAY, and then signals READY
# to systemd. This guarantees that services that require access to
# $DISPLAY during the session don't start too early.
#
# If you implement a service that requires access to $DISPLAY, your
# service unit file needs to include 'After=xorg.target'.

[Unit]
Description=Xorg server launch helper
Before=xorg.target

[Service]
Type=notify
ExecStart=/usr/bin/xorg-launch-helper :0 -nolisten tcp -noreset vt1 -dpi 125
Restart=always
RestartSec=10
dhampire ★★★
()
Ответ на: комментарий от vasily_pupkin

Напиши, пожалуйста. Можно даже в лор-вики при желании.

serkhay
() автор топика
Ответ на: комментарий от serkhay

оно само стартует при логине через pam_systemd и запуска user-session@1000.service

systemctl status user-session@1000.service
user-session@1000.service - User Manager for 1000
   Loaded: loaded (/etc/systemd/system/user-session@.service; enabled)
   Active: active (running) since Ср 2013-06-12 07:58:44 MSK; 4 days ago
 Main PID: 178 (systemd)
   Status: "Startup finished in 13.630s."
   CGroup: name=systemd:/system/user-session@.service/user-session@1000.service

cat /etc/systemd/system/user-session@.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=User Manager for %I
After=systemd-user-sessions.service
# This is needed for folks running Xorg on vt/1
Conflicts=getty@tty1.service

[Service]
User=%I
PAMName=login
# Note memory:/ required kernel memory CGroups support
ControlGroup=%R/user/%u/shared cpu:/ memory:/
ControlGroupModify=yes
Type=notify
TTYPath=/dev/tty1
Environment=DISPLAY=:0
Environment=XDG_RUNTIME_DIR=/run/user/%U
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%U/dbus/user_bus_socket
ExecStart=-/usr/lib/systemd/systemd --user

[Install]
Alias=user-session@%i.service
WantedBy=graphical.target
dhampire ★★★
()
Ответ на: комментарий от dhampire

Спасибо, видимо я понял свою ошибку.

serkhay
() автор топика
Ответ на: комментарий от geekless

Причем тут фобы. Гном после 1 превратился в тормозное говно. Чего такого в простом человеческом желании не пользоваться говном?

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Гном после 1 превратился в тормозное говно.

Причем тут фобы.

Ололо. И действительно, при чем тут фобы. :-D

Чего такого в простом человеческом желании не пользоваться говном?

Ну расскажи мне, в чем заключаются тормоза утилиты, которая запускает команды по списку, а потом сидит и ждёт завершения сеанса. Удиви старика.

И да, есть еще xfce-session и чего-то там в кедах абсолютно аналогичное. А systemd в качестве менеджера пользовательского сеанса — это лол.

geekless ★★
()
Ответ на: комментарий от geekless

Ну расскажи мне, в чем заключаются тормоза утилиты, которая запускает команды по списку, а потом сидит и ждёт завершения сеанса. Удиви старика.

И как мне этим барахлом пользоваться вне гнома?

И да, есть еще xfce-session и чего-то там в кедах абсолютно аналогичное.

Нет никакого желания загонять себя ни в другой недогном, ни в зеленого монстра

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

И как мне этим барахлом пользоваться вне гнома?

Так же, как и любым другим софтом:

  • Устанавливаешь пакет.
  • Читаешь ман.
  • Настраиваешь.
  • Пользуешься.

Или ты из тех феерических долбодятлов, что искренне полагают, будто DE состоит из одного гигантского бинарника?

Нет никакого желания загонять себя ни в другой недогном, ни в зеленого монстра

А, ну значит именно из тех.

geekless ★★
()
Ответ на: комментарий от geekless

Или ты из тех феерических долбодятлов, что искренне полагают, будто DE состоит из одного гигантского бинарника?

Нет, ну что ты. Я же не отношусь к тулкитофобам. Мне не нравится концепция рабочего говна, предлагаемая современными DE.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Мне не нравится концепция рабочего говна, предлагаемая современными DE.

Т.е. специальная утилита, предназначенная для решения конкретной задачи: обсуждение с приложениями изменения состояния сеанса — говно. А использование изоленты для починки сломанной ножки стула... ой, то есть я хотел сказать systemd для управления пользовательскими приложениями — это ок.

Продолжай наблюдения.

geekless ★★
()
Ответ на: комментарий от geekless

для решения конкретной задачи: обсуждение с приложениями изменения состояния сеанса

У ТС не идет речь о «конкретной задаче» в виде менеджмента сессии в понимании xsm

vasily_pupkin ★★★★★
()
Ответ на: комментарий от geekless

Вообще-то, systemd --user специально предназначено для этого. Зачем по твоему, разработчики ввели такую функцию?

Я не против твоих gnome-session-manager, но раз у меня зонд systemd уже глубоко в заднице, то зачем мне ставить еще что-то, если и systemd --user справится не хуже

serkhay
() автор топика
Ответ на: комментарий от vasily_pupkin

У ТС не идет речь о «конкретной задаче» в виде менеджмента сессии в понимании xsm

У ТСа и о чем-то другом речь не идет, он никаких критериев не указал. Но все systemd-шные фичи в пользовательском сеансе — это даже не из пушки по воробьям, это баллистической ракетой по комарам. Если «о задаче в виде менеджмента сессии в понимании xsm» речь не идёт, то .xinitrc хватает на всё.

geekless ★★
()
Ответ на: комментарий от geekless

.xinitrc хватает на всё

Зачем это нужно? Более гибкая, более контролируемая и многоуровневая автозагрузка программ/демонов пользователя.

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

Ты можешь это как-то обосновать, или это заявление прожженного системдефоба?

vasily_pupkin ★★★★★
()
Ответ на: комментарий от serkhay

Вообще-то, systemd --user специально предназначено для этого.

Как systemd --user поможет сохранить сеанс?

Зачем по твоему, разработчики ввели такую функцию?

Затем же, зачем кот яйца лижет?

А вообще она может быть востребована в каком-нибудь энтрепрайзе, если нужно обеспечить отдельное от системных настроек управление кучкой демонов.

geekless ★★
()
Ответ на: комментарий от geekless

Но все systemd-шные фичи в пользовательском сеансе — это даже не из пушки по воробьям, это баллистической ракетой по комарам.

О да, лучше стянуть часть гнома или крысы.

Deleted
()
Ответ на: комментарий от vasily_pupkin

Ты можешь это как-то обосновать, или это заявление прожженного системдефоба?

Системдефоба, сидящего на арче с systemd, лол. Не приписыввай другим свои DEфобии. :}

Более гибкая, более контролируемая и многоуровневая автозагрузка программ/демонов пользователя

Ну расскажи мне, какая пользователю нужна «контролируемая и многоуровневая автозагрузка ». Я не вижу НИ ОДНОГО юз кейза для пользователя, когда это ему нужно. Для прикладных программ сеанса не важен порядок загрузки. Демоны пользовательского урвоня обычно либо запускаются вручную из приложения-клиента, либо on-demand через dbus activation (и для этого не нужен systemd, всё уже украдено до нас), либо, опять же, через xinitrc / fd.o autostart / whatever.

geekless ★★
()
Ответ на: комментарий от Deleted

О да, лучше стянуть часть гнома или крысы.

Не, лучше пытаться молотком наколоть дров.

geekless ★★
()
Ответ на: комментарий от Deleted

О да, лучше стянуть часть гнома

 sudo yum install gdm
Загружены модули: langpacks, presto, refresh-packagekit
adobe-linux-x86_64                                                                      |  951 B  00:00:00     
bumblebee                                                                               | 2.9 kB  00:00:00     
bumblebee-nonfree                                                                       | 2.9 kB  00:00:00     
fedora/18/x86_64/metalink                                                               |  23 kB  00:00:00     
fedora-chromium-stable                                                                  | 3.4 kB  00:00:00     
rpmfusion-free-updates                                                                  | 3.3 kB  00:00:00     
rpmfusion-nonfree-updates                                                               | 3.3 kB  00:00:00     
updates/18/x86_64/metalink                                                              |  20 kB  00:00:00     
Разрешение зависимостей
--> Проверка сценария
Зависимости определены

===============================================================================================================
 Package                                   Архитектура      Версия                     Репозиторий       Размер
===============================================================================================================
Установка:
 gdm                                       x86_64           1:3.6.2-5.fc18             fedora            1.1 M
Установка зависимостей:
 accountsservice                           x86_64           0.6.25-2.fc18              fedora             82 k
 accountsservice-libs                      x86_64           0.6.25-2.fc18              fedora             70 k
 adwaita-gtk2-theme                        x86_64           3.6.5-1.fc18               updates            77 k
 adwaita-gtk3-theme                        x86_64           3.6.5-1.fc18               updates            76 k
 control-center-filesystem                 x86_64           1:3.6.3-2.fc18             updates            57 k
 desktop-backgrounds-gnome                 noarch           18.0.0-1.fc18              fedora             13 k
 gnome-desktop3                            x86_64           3.6.3-1.fc18               updates           542 k
 gnome-icon-theme-symbolic                 noarch           3.6.2-1.fc18               fedora            176 k
 gnome-keyring-pam                         x86_64           3.6.3-1.fc18               updates            37 k
 gnome-session                             x86_64           3.6.2-4.fc18               updates           432 k
 gnome-settings-daemon                     x86_64           3.6.4-3.fc18               updates           1.1 M
 gnome-themes-standard                     x86_64           3.6.5-1.fc18               updates           3.4 M
 json-glib                                 x86_64           0.15.2-1.fc18              fedora             89 k
 libwacom                                  x86_64           0.7.1-2.fc18               updates            26 k
 libwacom-data                             noarch           0.7.1-2.fc18               updates            32 k
 metacity                                  x86_64           2.34.13-1.fc18             fedora            1.1 M
 notification-daemon                       x86_64           0.7.6-1.fc18               fedora             72 k
 polkit-gnome                              x86_64           0.105-3.fc18               fedora             82 k
 pulseaudio-gdm-hooks                      x86_64           2.1-6.fc18                 updates            18 k
 spherical-cow-backgrounds-gnome           noarch           18.0.0-2.fc18              updates           4.8 k

Результат операции
===============================================================================================================
Установка   1 Пакет (+20 Зависимые пакеты)

Объем загрузки: 8.4 M
Объем изменений: 30 M
Продолжить? [y/N]: n

с восми с половиной мегов ты помрёшь?
ПС: стоит KDE есличо, так, по приколу глянул, сколько же GDM за собою тянет, емнип, в дебиане, если на базу после иксов какой-нибудь лёгкий WM поставить, а потом GDM ставить, ещё меньше тянет, такшта, продолжайте, поручик, продолжайте.

novitchok ★★★★★
()
Последнее исправление: novitchok (всего исправлений: 2)
Ответ на: комментарий от geekless

Ну расскажи мне, какая пользователю нужна «контролируемая и многоуровневая автозагрузка ».

Ну, я за «пользователя» не скажу, могу рассказать что использую я, как активный таскатель ноутбука.

Так как обвчно у меня ULV дрова с легкой батареей, мне актуальна минимизация необходимых процессов и контекстоспецифичный набор автозагрузки:

  • Если у меня нет сети, то зачем мне шкайп, дропбокс, фаерфокс итд
  • Если я не слушал музло, то зачем мне mpd, пульс итд
  • Если у меня не включен блютус, зачем мне блютус апплет

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

Мне обычно нужен доступ к рабочим машинам, если это возможно. По этому в домашней сети (Wifi или VPN) активируются ssh туннели и gvfs до рабочих машин.

На работе мне нужно проверять почту. Для меня это делает mpop, будучи запущен как timer задача. Когда я ухожу с работы, долбящийся вникуда mpop мне не нужен.

Из приятных для дополнений, как для пользователя wm - когда я сую что-то в .profile, wm рестартует автоматически с новым env. Когда я сую что-то в .Xresources, xrdb мержит автоматически.

Когда ноут в режиме таблетки, можно автоматически активировать florence.

На xlock можно навешивать дополнительные таски, такие как приглушение mpd.

Если я (о ужас) перехожу в KDE (а мне для переезда в de и обратно достаточно сделать srv start de; srv start wm) костыли типа nm-applet, compton итд будут потушены.

Mosh сессия при смерти будет автоматически перезагружена итд.

Вобщем, после перехода на systemd --user, доколбашивания пары патчей и мелкого демона количество рутинных действий для меня значительно сократилось.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от geekless

Перезапуск при сбое, многоуровневость (запускать определенные программы только, если запущены другие), контроль (могу легко посмотреть, какие демоны запущены, какие упали и почему). Все это в одном месте. Можно, конечно написать скриптов-велосипедов в xinitrc, но зачем, если уже такой велосипед есть.

serkhay
() автор топика
Ответ на: комментарий от serkhay

Тем более, что systemd --user не зависит от иксов

serkhay
() автор топика

В общем, не запускается оно у меня автоматически и все тут. Сделал я

sudo systemctl enable user-session@1000.service
Дальше, при запуске логинюсь в tty1 и результата ноль. Не запускается, и даже не пытается. Systemctl status пишет, что enabled, но не запущено. И в журнал ничего не пишет, как-будто так и должно быть. Я что, как то неправильно логинюсь? pam_systemd.so прописал куда нужно. Что я делаю не так?

Запускается только если вручную:

sudo systemctl start user-session@1000.service

serkhay
() автор топика
Ответ на: комментарий от serkhay

Дальше, при запуске логинюсь в tty1 и результата ноль.

и откуда у тебя запускаются tty? на каком tty стартует user-session@1000.service ?

Я что, как то неправильно логинюсь?

вполне возможно.

dhampire ★★★
()
Ответ на: комментарий от dhampire

Все по умолчанию, tty1, ничего в service-файлах я не менял

serkhay
() автор топика
Ответ на: комментарий от serkhay

если у тебя такой user-session@.service как у меня то делай systemctl disable getty@tty1.service +

grep NAutoVTs /etc/systemd/logind.conf  
NAutoVTs=0
в этом случае всё равно на tty6 будет спавниться getty если на него переключится. как минимум tty1 должен быть не занят.

если же тебе не нужен автологин через systemd, то нужно логинится обычным способом + прописать в ~/.profile на пример

export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/dbus/user_bus_socket
/usr/lib/systemd/systemd --user

если uid == 1000 конечно, иначе заменить на свой.

dhampire ★★★
()
Ответ на: комментарий от dhampire

Да, user-session@.service у меня такой же. Я то думал, что он просто запускает пользовательскую сессию, а оказывается он еще и логинится сам? Ладно, я попробую, но по-моему я так уже делал, и ничего не вышло.

serkhay
() автор топика
Ответ на: комментарий от dhampire

Нет, ничего не вышло, как и ожидалось...

Вот ты писал, цитирую:

при логине через pam_systemd

Что это значит? В какой момент происходит логин, я вот этого не могу понять?

serkhay
() автор топика
Ответ на: комментарий от serkhay

Что это значит? В какой момент происходит логин, я вот этого не могу понять?

в момент запуска user-sessions@1000.service. если у тебя он не стартует то см. логи.

dhampire ★★★
()
Ответ на: комментарий от dhampire

В логах ничего нет. Он активирован, то есть enabled, но не стартует. Наверное что-то, от чего он зависит не стартует. Ладно, спасибо, добрый человек, буду копать дальше

serkhay
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.