Si bien el material de este post está tomado de la wiki de ArchLinux lo más probable es que también funcione en otras distribuciones dado que systemd es el mismo en cualquiera de ellas, de hecho lo escrito aquí es válido para Debian.
Como dice el título tenemos dos cuestiones: 1) El autologin 2) Lanzamiento automático de las X
Autologin:
Para el autologin con systemd tenemos dos alternativas:
a) En consola virtual.
b) En consola serial.
Consideraciones generales sobre las tty en systemd:
a)Consolas virtuales:
Por defecto las ttyx (consolas virtuales) habilitadas son seis, incluyendo tty1, por tanto puedo lanzar una tty con el comando
Donde x puede ser de 2 a 6 y por lo tanto utilizar de F7 a F12 no va a tener ningún efecto, solamente una pantalla negra con un guión titilante.
Si quiero aumentar el número de tty's disponibles debo editar el archivo /etc/systemd/logind.conf
para descomentar y/o cambiar el valor de NAutoVTs a 11.
Dejamos la tty12 libre porque es recomendable que se utilice para el forwarding de journald que se efectúa de la siguiente manera:
1) Creación del directorio /etc/systemd/journald.conf.d:
2) Creación del archivo /etc/systemd/journald.conf.d/fw-tty12.conf
Aquí agregamos al fw-tty12.conf el siguiente contenido:
Para agregar gettys preactivadas que se van instanciar en el inicio debemos crear un symlink en el directorio /etc/systemd/system/getty.target.wants/ para la tty que deseamos.
Esto lo hacemos de la siguiente manera suponiendo que quiero activar la tty9:
Para desactivar una tty lo hacemos borrando su symlink en /etc/systemd/system/getty.target.wants/.
El ejemplo:
b) Consolas seriales:
Las consolas seriales se designan como ttySx, donde x es el número de consolas habilitadas.
Para saber de cuantas consolas seriales disponto lo puedo hacer con el comando
Autologin en consola virtual:
Como voy a utilizar la tty1 para el login automático, lo habitual, el comando a usar es el siguiente:
En la ventana que aparece agregamos el siguiente contenido reemplazando username por su nombre de usuario:
Una captura de lo que se ve en mi equipo con el contenido indicado agregado:
Como el editor de texto es nano guardo con ctrl+o y cierro con ctrl+x.
Luego de este paso voy a tener creado /etc/systemd/system/[email protected]/override.conf y si reinicio voy a loguear como cesarzeta en tty1.
Para loguear en una tty diferente a tty1 en el comando habría puesto getty@ttyx donde x sería el número de consola
Autologin en consola serial:
Para el ejemplo voy a utilizar ttyS0 y los pasos a seguir son los siguientes:
a) Crear el directorio /etc/systemd/system/[email protected]
b) Crear y editar el archivo conf necesario:
En este archivo escribimos estas líneas reemplazando username por su nombre de usuario:
Como el editor de texto es nano guardo con ctrl+o y cierro con ctrl+x.
Si se reinicia el logueo como username se va a producir en ttyS0.
Inicio automático de las X, pasos necesarios:
a) Debemos tener en /home/usuario el archivo oculto .xinitrc indicando que sesión se va a iniciar.
Único contenido de mi .xinitrc (tengo instalado un solo DE):
Si no tienen y no quieren crear el .xinitrc manualmente lo pueden copiar y luego editarlo:
b) Para lanzar las X en una sola tty se debe agregar al /home/usuario/.bash_profile la siguiente línea:
El comando anterior indica con '-eq 1' que las X se van a lanzar en vt1 (tty1).
Para conservar la integridad de la sesión se debe iniciar la X en la misma tty que el autologin.
Si hubiera utilizado '-eq 7' solamente habría tenido entorno gráfico en la tty7.
c)Según la wiki para contar con entorno gráfico en más de una tty se puede cambiar el '-eq 1' por ejemplo por '-le 3'.
Con esta modificación, dado que -le 3 significa menor o igual que 3, vamos a tener X en tty1, tty2 y tty3.
Aclaro que esta característica a mí no me ha funcionado con las X lanzadas en otra tty con el mensaje de error de que el servidor X ya se está ejecutando en otra instancia.
Teóricamente se puede terminar con las X con los comandos
o
Pero con esta configuración la X se reinician automáticamente y estos comandos no son útiles
d) No es imprescindible pero si conveniente cambiar el runlevel y desactivar el gestor de sesiones.
Bueno... eso es todo. Espero que el contenido del post esté claro. Como siempre se aceptan las sugerencias y/o correcciones pertinentes.
Sé que a muchos compañeros linuxeros les disgusta systemd, me incluyo entre ellos, pero systemd llegó para quedarse y es mejor conocerlo porque, según entiendo, de las distros principales la única que verdaderamente nos da la opción de no utilizarlo es Gentoo.
Muchas gracias por su paciencia y atención.
Como dice el título tenemos dos cuestiones: 1) El autologin 2) Lanzamiento automático de las X
Autologin:
Para el autologin con systemd tenemos dos alternativas:
a) En consola virtual.
b) En consola serial.
Consideraciones generales sobre las tty en systemd:
a)Consolas virtuales:
Por defecto las ttyx (consolas virtuales) habilitadas son seis, incluyendo tty1, por tanto puedo lanzar una tty con el comando
[Ctl] [Alt] [Fx]
Donde x puede ser de 2 a 6 y por lo tanto utilizar de F7 a F12 no va a tener ningún efecto, solamente una pantalla negra con un guión titilante.
Si quiero aumentar el número de tty's disponibles debo editar el archivo /etc/systemd/logind.conf
para descomentar y/o cambiar el valor de NAutoVTs a 11.
Dejamos la tty12 libre porque es recomendable que se utilice para el forwarding de journald que se efectúa de la siguiente manera:
1) Creación del directorio /etc/systemd/journald.conf.d:
sudo mkdir /etc/systemd/journald.conf.d
2) Creación del archivo /etc/systemd/journald.conf.d/fw-tty12.conf
sudo nano /etc/systemd/journald.conf.d/fw-tty12.conf
Aquí agregamos al fw-tty12.conf el siguiente contenido:
[Journal]
ForwardToConsole=yes
TTYPath=/dev/tty12
MaxLevelConsole=info
Para agregar gettys preactivadas que se van instanciar en el inicio debemos crear un symlink en el directorio /etc/systemd/system/getty.target.wants/ para la tty que deseamos.
Esto lo hacemos de la siguiente manera suponiendo que quiero activar la tty9:
ln -sf /usr/lib/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]
Para desactivar una tty lo hacemos borrando su symlink en /etc/systemd/system/getty.target.wants/.
El ejemplo:
rm /etc/systemd/system/getty.target.wants/getty@{tty5,tty6}.service
b) Consolas seriales:
Las consolas seriales se designan como ttySx, donde x es el número de consolas habilitadas.
Para saber de cuantas consolas seriales disponto lo puedo hacer con el comando
ls -l /dev | grep ttyS
Autologin en consola virtual:
Como voy a utilizar la tty1 para el login automático, lo habitual, el comando a usar es el siguiente:
sudo systemctl edit getty@tty1
En la ventana que aparece agregamos el siguiente contenido reemplazando username por su nombre de usuario:
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I 38400 linux
Una captura de lo que se ve en mi equipo con el contenido indicado agregado:
Como el editor de texto es nano guardo con ctrl+o y cierro con ctrl+x.
Luego de este paso voy a tener creado /etc/systemd/system/[email protected]/override.conf y si reinicio voy a loguear como cesarzeta en tty1.
Para loguear en una tty diferente a tty1 en el comando habría puesto getty@ttyx donde x sería el número de consola
Autologin en consola serial:
Para el ejemplo voy a utilizar ttyS0 y los pasos a seguir son los siguientes:
a) Crear el directorio /etc/systemd/system/[email protected]
sudo mkdir /etc/systemd/system/[email protected]
b) Crear y editar el archivo conf necesario:
sudo nano /etc/systemd/system/[email protected]/autologin.conf
En este archivo escribimos estas líneas reemplazando username por su nombre de usuario:
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username -s %I 115200,38400,9600 vt102
Como el editor de texto es nano guardo con ctrl+o y cierro con ctrl+x.
Si se reinicia el logueo como username se va a producir en ttyS0.
Inicio automático de las X, pasos necesarios:
a) Debemos tener en /home/usuario el archivo oculto .xinitrc indicando que sesión se va a iniciar.
Único contenido de mi .xinitrc (tengo instalado un solo DE):
exec startxfce4
Si no tienen y no quieren crear el .xinitrc manualmente lo pueden copiar y luego editarlo:
cp /etc/X11/xinit/xinitrc ~/.xinitrc
b) Para lanzar las X en una sola tty se debe agregar al /home/usuario/.bash_profile la siguiente línea:
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
El comando anterior indica con '-eq 1' que las X se van a lanzar en vt1 (tty1).
Para conservar la integridad de la sesión se debe iniciar la X en la misma tty que el autologin.
Si hubiera utilizado '-eq 7' solamente habría tenido entorno gráfico en la tty7.
c)Según la wiki para contar con entorno gráfico en más de una tty se puede cambiar el '-eq 1' por ejemplo por '-le 3'.
Con esta modificación, dado que -le 3 significa menor o igual que 3, vamos a tener X en tty1, tty2 y tty3.
Aclaro que esta característica a mí no me ha funcionado con las X lanzadas en otra tty con el mensaje de error de que el servidor X ya se está ejecutando en otra instancia.
Teóricamente se puede terminar con las X con los comandos
pkill -15 Xorg
o
killall Xorg
Pero con esta configuración la X se reinician automáticamente y estos comandos no son útiles
d) No es imprescindible pero si conveniente cambiar el runlevel y desactivar el gestor de sesiones.
sudo systemctl disable lightdm.service
sudo systemctl set-default -f multi-user.target
Bueno... eso es todo. Espero que el contenido del post esté claro. Como siempre se aceptan las sugerencias y/o correcciones pertinentes.
Sé que a muchos compañeros linuxeros les disgusta systemd, me incluyo entre ellos, pero systemd llegó para quedarse y es mejor conocerlo porque, según entiendo, de las distros principales la única que verdaderamente nos da la opción de no utilizarlo es Gentoo.
Muchas gracias por su paciencia y atención.