elogind
elogind es el proyecto logind extraído de systemd como un solo paquete. Está diseñado para aquellos/as que prefieren una instalación sin el init system systemd pero quieren seguir pudiendo usar software popular como los entornos de escritorio KDE o GNOME, que, sin parchear, dependen profundamente del mismo.
Instalación
Kernel
Se recomiendan las siguientes opciones del kernel:
General setup --->
[*] Control Group support --->
File systems --->
[*] Inotify support for userspace
En el improbable (y no recomendado) caso de que las funciones estándar del kernel hayan sido declaradas como configuradas manualmente, elogind también requiere soporte para eventpoll
, signalfd()
y timerfd()
. La mayoría de los/las usuarios/as pueden ignorar esto.
Ajustes USE
USE flags for sys-auth/elogind The systemd project's logind, extracted to a standalone package
+acl
|
Add support for Access Control Lists |
+pam
|
Add support for PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip |
+policykit
|
Enable PolicyKit (polkit) authentication support |
audit
|
Enable support for Linux audit subsystem using sys-process/audit |
cgroup-hybrid
|
Use hybrid cgroup hierarchy instead of unified (OpenRC's default). |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
Hay un ajuste USE global elogind
que activa el soporte de elogind en otros paquetes. También se recomienda desactivar el soporte de otros rastreadores de sesión (systemd
) para evitar conflictos:
/etc/portage/make.conf
USE="elogind -systemd"
¡Usar elogind y systemd a la vez no se ha testado y no se recomienda!
Emerge
Tras actualizar los ajustes USE, actualice el sistema para aplicar los cambios:
root #
emerge --ask --changed-use --deep @world
Configuración
Servicio
elogind debe ser configurado para ejecutarse al arrancar:
root #
rc-update add elogind boot
Cuando D-Bus está instalado con el ajuste USE USE="elogind"
, ejecutar elogind al arrancar activa el servicio dbus automáticamente.
De manera alternativa, elogind puede ser ejecutado bajo demanda por el primer programa que lo pida (como un gestor de inicio de sesión (display manager) compatible) a través del servicio del sistema dbus.
Si encuentra problemas a la hora de apagar, reiniciar o suspender (etc.) el sistema desde un entorno de escritorio, activar el servicio de elogind a nivel de arranque asegurará que el servicio elogind es lanzado como debe antes de que cualquier usuario/a inicie sesión, solucionando así el problema.
Adicionalmente, si se compila con el ajuste USE (USE flag) pam, elogind será activado cuando el/la primer/a usuario/a inicie sesión en el sistema.
Para que elogind active una sesión primero en una terminal de consola VT, sys-apps/shadow debe ser compilado con el ajuste USE
pam
también, ya que provee de /bin/login. Este concepto también aplica a cualquier otro gestor de inicio de sesión gráfico o programas de inicio de sesión basados en terminal que se utilicen. En ese caso, esos también tendrán que ser compilados con PAM.Integración de D-Bus con startx
Para asegurarse de iniciar una sesión elogind al usar startx para ejecutar el servidor X (en vez de usar un gestor de inicio de sesión o display manager), añada lo siguiente al archivo ~/.xinitrc de su usuario:
~/.xinitrc
exec dbus-run-session <WINDOW_MANAGER>
WINDOW_MANAGER
en el ejemplo de arriba debe ser reemplazado por un gestor de ventanas (window manager) una única aplicación.
Este comando exec ejecuta dbus-daemon --system, el cual lanza tu gestor de ventanas. No se ejecutarán más comandos si se colocan después de esta línea "exec".
Scripts de Suspensión/Hibernación/Despertar
Con elogind la situación es mucho más manual. Todo script de suspensión/despertar y hibernación/despertar deben estar en el directorio /etc/elogind/system-sleep/ y usar las variables $1 (pre
o post
) y $2 (suspend
, hibernate
, o hybrid-sleep
). Por ejemplo, en el caso de elogind un script podría tener el siguiente formato:
/etc/elogind/system-sleep/ejemplo.sh
Un ejemplo de un script de elogind#!/bin/bash
case $1/$2 in
pre/*)
# Pon aquí todo comando que quieras que se ejecute al suspender o hibernar.
;;
post/*)
# Pon aquí todo comando que quieras que se ejecute al despertar de suspensión o hibernación.
;;
esac
No olvides hacer los scripts ejecutables:
root #
chmod +x /etc/elogind/system-sleep/ejemplo.sh
Uso
loginctl
El comando loginctl se puede usar para controlar e inspeccionar el gestor de inicio de sesión. Por ejemplo, para apagar o reiniciar el sistema:
user $
loginctl poweroff
user $
loginctl reboot
Por ejemplo, para suspender, hibernar o ejecutar una suspensión híbrida:
user $
loginctl suspend
user $
loginctl hibernate
user $
loginctl hybrid-sleep
Para suspender el sistema y después activar la hibernación tras un periodo de inactividad tras la suspensión del mismo:
user $
loginctl suspend-then-hibernate
cuyo retraso hasta la hibernación puede ser especificado en /etc/elogind/logind.conf.
Solución de problemas
Comprobación de funcionalidad total
Ejecutar loginctl por sí mismo indicará todas las tty de las sesiones/seats/usuarios/as para las que elogind ha sido activado por completo. Por ejemplo:
user $
loginctl
SESIÓN UID USUARIO SEAT TTY 1 0 root seat0 tty1 2 1000 larry seat0 tty2 2 sesiones listadas.
Comprobar la presencia de variables de entorno XDG debería producir resultados similares incluso antes de que se cargue una interfaz gráfica o GUI. Por ejemplo:
user $
env | grep "XDG"
XDG_CONFIG_DIRS=/etc/xdg:/etc/xdg XDG_SEAT=seat0 XDG_SESSION_TYPE=tty XDG_SESSION_CLASS=user XDG_VTNR=2 XDG_SESSION_ID=2 XDG_RUNTIME_DIR=/run/user/1000 XDG_DATA_DIRS=/usr/local/share:/usr/share:/usr/share
Conflicto al usar hidepid en proc
Cuando procfs está montado con hidepid=2
y gid=wheel
, habrá conflictos con elogind. Para cambiar esto, el gid debe ser cambiado a gid=polkitd
.
Véase también esta publicación del foro https://forums.gentoo.org/viewtopic-t-1099870.html
PAM
Si se usa el ajuste USE pam, asegúrese de que no existen cambios conflictivos pendientes esperando a ser escritos en /etc (ejecuta dispatch-conf para fusionar cualquier conflicto en /etc/pam.d).
Confirma que estos cambios tomaron lugar en estos dos archivos dentro de /etc/pam.d:
user $
grep -r "elogind" /etc/pam.d/
/etc/pam.d/elogind-user: session optional pam_elogind.so /etc/pam.d/system-login: -session optional pam_elogind.so
Recursos externos
- bug #599470 - sys-auth/elogind bug en la integración con el Gentoo tracker.
- News item - Cambios de los ajustes USE predeterminados en elogind en el perfil Desktop