¿Cómo puedo configurar systemd para iniciar sesión automáticamente en mi entorno de escritorio, preferiblemente sin usar el administrador de inicio de sesión? Estoy usando Arch.
¿Cómo puedo configurar systemd para iniciar sesión automáticamente en mi entorno de escritorio, preferiblemente sin usar el administrador de inicio de sesión? Estoy usando Arch.
Respuestas:
Esto se describe en Arch Wiki :
Cree un nuevo archivo de servicio similar a
getty@.servicecopiándolo en/etc/systemd/system/cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Básicamente, esto copia lo ya existente getty@.servicea un nuevo archivo autologin@.serviceque se puede modificar libremente. Se copia /etc/systemd/systemporque es donde se almacenan los archivos de unidad específicos del sitio. /usr/lib/systemd/systemcontiene archivos de unidad proporcionados por paquetes, por lo que no debe cambiar nada allí.
A continuación, deberá vincularlo autologin@.serviceal servicio getty para el tty en el que desea iniciar sesión automáticamente, por ejemplo, para tty1:
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
Hasta ahora, sigue siendo el mismo que el getty@.servicearchivo habitual , pero la parte más importante es modificar el archivo autologin@.servicepara iniciar sesión automáticamente. Para hacer eso, solo necesita cambiar la ExecStartlínea para leer
ExecStart=-/sbin/agetty -a USERNAME %I 38400
La diferencia entre la ExecStartlínea getty@.servicey autologin@.servicesolo es la -a USERNAMEque le dice a agetty que inicie sesión automáticamente con el nombre de usuario USERNAME.
Ahora solo tiene que decirle a systemd que vuelva a cargar sus archivos daemon e inicie el servicio:
systemctl daemon-reload
systemctl start getty@tty1.service
(No estoy seguro de si el servicio se iniciará correctamente si ya inició sesión en tty1, la forma más segura es simplemente reiniciar en lugar de iniciar el servicio).
Si luego quieres iniciar X automáticamente, inserta el siguiente fragmento en tu ~/.bash_profile(tomado de la wiki nuevamente):
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
Tendrá que modificar su ~/.xinitrcpara iniciar su entorno de escritorio, cómo hacerlo depende del DE y probablemente también se describa en Arch wiki.
File existscuando hago el enlace simbólico
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.servicepara sobrescribirlo.
Modifique directamente el archivo /etc/systemd/system/getty.target.wants/getty@tty1.service(que es un enlace simbólico /lib/systemd/system/getty@service):
Añadir -a/--autologin USERNAMEa la línea:
ExecStart=-/sbin/agetty --noclear %I $TERM
Por lo tanto:
ExecStart=-/sbin/agetty -a USERNAME %I $TERM
También puede eliminar -o '-p -- \\u'(como está presente en la instalación actual de Arch), ya que esto iniciaría el inicio de sesión USERNAMEpero aún le pedirá la contraseña.
Después de reiniciar, iniciará sesión automáticamente.
Ps Cambie el nombre del archivo getty@tty1.serviceal ttyque desea iniciar sesión.
OMI, Arch Wiki actualmente recomienda una solución mucho más simple:
Ejecute el ayudante ( systemctl edit getty@tty1) o haga lo que hice manualmente:
mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf
El texto que desea ingresar (por cualquier método) es ( asegúrese de cambiar el nombre de usuario adecuadamente ):
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
NOTA : ¡La línea vacía es importante! (Es cierto que no estoy seguro de por qué ...)
Ahora, reinicie ( shutdown -r 0) y ... login: username (automatic login)sucederá algo que bloqueó previamente esperando la entrada de nombre de usuario / contraseña
Una vez reiniciado e iniciado sesión automáticamente, si eres como yo y quieres ingresar a SSH en este sistema ahora, probablemente necesites ejecutar:
systemctl enable sshd.service
Lo que creará el enlace simbólico (por ejemplo ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')
/sbin/agetty, por lo que vale la pena verificar /etc/systemd/system/getty.target.wants/getty@tty1.serviceprimero el archivo original .