elogind

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Elogind and the translation is 100% complete.
Other languages:

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:

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:

ARCHIVO /etc/portage/make.conf
USE="elogind -systemd"
Advertencia
¡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.

Advertencia
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.

Advertencia
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:

ARCHIVO ~/.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.

Consejo
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:

ARCHIVO /etc/elogind/system-sleep/ejemplo.shUn 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