¿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@.service
copiá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@.service
a un nuevo archivo autologin@.service
que se puede modificar libremente. Se copia /etc/systemd/system
porque es donde se almacenan los archivos de unidad específicos del sitio. /usr/lib/systemd/system
contiene archivos de unidad proporcionados por paquetes, por lo que no debe cambiar nada allí.
A continuación, deberá vincularlo autologin@.service
al 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@.service
archivo habitual , pero la parte más importante es modificar el archivo autologin@.service
para iniciar sesión automáticamente. Para hacer eso, solo necesita cambiar la ExecStart
línea para leer
ExecStart=-/sbin/agetty -a USERNAME %I 38400
La diferencia entre la ExecStart
línea getty@.service
y autologin@.service
solo es la -a USERNAME
que 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 ~/.xinitrc
para iniciar su entorno de escritorio, cómo hacerlo depende del DE y probablemente también se describa en Arch wiki.
File exists
cuando hago el enlace simbólico
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
para 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 USERNAME
a 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 USERNAME
pero aún le pedirá la contraseña.
Después de reiniciar, iniciará sesión automáticamente.
Ps Cambie el nombre del archivo getty@tty1.service
al tty
que 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.service
primero el archivo original .