En este caso, lo primero a tener en cuenta, es que se trabaja con agetty, por lo que siguiendo una serie de pasos podemos conseguir un script de autogin, o más bien un ejecutable, que posteriormente se usará para el logueo.
Hay que empezar creando el archivo del autologin que posteriormente habrá que compilar. Será un archivo con un par de líneas en c, que podemos llamar como sea, pero en este caso, y para no desviarme mucho llamaré autologinz.c
Con cualquier editor de texto, creamos el archivo y dentro de él ponemos lo siguiente:
Obviamente, donde pone USUSARIO hay que poner el usuario que queremos que se loguee.dijo:#include <unistd.h>
int main() { execlp( "login", "login", "-f", "USUARIO", 0); }
Ahora toca compilarlo:
dijo:gcc -o autologinz autologinz.c
Y copiar el archivo resultante (como root) a /usr/local/sbin (Aunque realmente lo pueden poner donde quieran, siempre que lo tengan en cuenta a la hora de colocar la ruta)
dijo:cp autologinz /usr/local/sbin
Ese archivo lo dejamos ahí, y ahora toca meterle mano a los archivos de configuración de systemD, que se encuentran, tanto en /etc/systemd/system, como en /lib/systemd/system
Los archivos que controlan las tty se encuentran en: /etc/systemd/system/getty.target.wants, y tienen un aspecto tal que así:
sin embargo, todos ellos son enlaces simbólicos y hacen referencia a un único archivo, que es:dijo:
/lib/systemd/system/[email protected]
El problema está justo en este punto, pues editar el archivo para autologearnos en una tty, significa aplicar el mismo cambio en todas ellas.
Para evitar eso, se puede editar el enlace simbólico [email protected] (o cualquiera de ellos) para que apunte a otro archivo diferente que crearemos para la ocasión, en lugar de editar el archivo "general", para evitar el autologin en todos los terminales y centrarse sólo en uno.
En el archivo general (/lib/systemd/system/[email protected]), hay que editar la última línea y eliminar la parte correspondiente a la terminal donde nos queremos loguear, en mi caso será tty1:
Eliminar la parte en rojo y guardar.dijo:[Unit]
Description=Getty on %I
BindTo=dev-%i.device
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service openvpn.service apache2.service
Before=getty.target
[Service]
Environment=TERM=linux
ExecStart=-/sbin/agetty %I 38400
Restart=always
RestartSec=0
UtmpIdentifier=%I
KillMode=process-group
Environment=LANG= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGE= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
KillSignal=SIGHUP
[Install]
Alias=getty.target.wants/[email protected] getty.target.wants/[email protected] getty.target.wants/[email protected] getty.target.wants/[email protected] getty.target.wants/[email protected] getty.target.wants/[email protected]
Ahora hay que crear un archivo "especial" para tty1, que será casi idéntico al original, pero enfocado en tty1. Lo pueden llamar y colocar donde quieran, siempre que editen luego correctamente el enlace simbólico, pero en mi caso y para tenerlo todo a mano, lo he colocado en la misma carpeta /lib/systemd/system y lo he llamado [email protected]
Y por supuesto, ahora es cuando hay que añadir la parte correspondiente al archivo de autologin (rojo), que creamos antes, y apuntar el resto a la terminal elegida (azul)
dijo:[Unit]
Description=Getty on tty1
Before=getty.target
[Service]
Environment=TERM=linux
ExecStart=-/sbin/agetty -n -l /usr/local/sbin/autologinz tty1 38400
Restart=always
RestartSec=0
UtmpIdentifier=tty1
KillMode=process-group
Environment=LANG= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGE= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
KillSignal=SIGHUP
[Install]
Alias=getty.target.wants/getty@tty1.service
Una vez creado esos archivo, hay que editar el enlace simbólico [email protected] (o el que sea) para que apunte hacia él, de lo contrario no entrará en funcionamiento el archivo.