Es un sistema Centos 7 no basta sustituir un service de systemd que arranca gdm por otro que ejecute mwm.
Lo que no funciona
En un sistema con gnome, el default.target establece un enlace con graphical.target el cual llama al servicio display-manager.service el cual no es más que un enlace a gdm.service.
Desde gdm.service se lanza /usr/sbin/gdm:
[Unit]
Description=GNOME Display Manager
Conflicts=getty@tty1.service plymouth-quit.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service
[Service]
ExecStart=/usr/sbin/gdm
ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1"
ExecStop=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1"
KillMode=process
Restart=always
IgnoreSIGPIPE=no
BusName=org.gnome.DisplayManager
StandardOutput=syslog
StandardError=inherit
[Install]
Alias=display-manager.service
Podemos pensar en crear un servicio llamado mwm.service similar a éste, y sustituir ExecStart=/usr/sbin/gdm por ExecStart=/usr/sbin/mwm. Deshabilitaríamos gdm y habilitaríamos mwm:
[root@localhost xinit]# systemctl disable gdm.service
rm ‘/etc/systemd/system/display-manager.service’
[root@localhost xinit]# systemctl enable mwm.service
ln -s ‘/usr/lib/systemd/system/mwm.service’ ‘/etc/systemd/system/display-manager.service’
[root@localhost xinit]#
Pero esto no funcionará. mwm es un script que necesita más cosas para poder levantar un entorno X correctamente. Si embargo el binario gdm es la puerta que desencadena los procesos necesarios para un entorno X.
Lo que sí funciona
Pasando a modo texto e iniciando las X con startx vemos que sí se inicia el gestor de ventanas mwm (siempre que hayamos puesto antes PREFERRED=/usr/bin/mwm en el archivo /etc/X11/xinit/Xclients).
Una manera de hacer que arranque automáticamente como root en el inicio, es realizar un autologin (startx necesita hacerse desde una sesión de usuario) e incluir el arranque de startx desde el bashrc del root.
Deshabilitamos gdm:
# systemctl disable gdm.service
rm ‘/etc/systemd/system/display-manager.service’
#
Editamos el servicio /usr/lib/systemd/system/getty@.service y añadimos la opción –autologin root en el ExecStart:
ExecStart=-/sbin/agetty –autologin root –noclear %I $TERM
Finalmente incluimos:
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
en el bashrc del root.
Algo más elegante por favor
La solución anterior funciona, pero arrancar las X desde el bashrc del root…es un poco feo.
Hacemos que el equipo arranque en modo texto:
# systemctl set-default multi-user.target
Creamos un nuevo servicio en /etc/systemd/system que llamaremos startx.service con el siguiente contenido:
[Unit] Description=X server from starx script After=systemd-user-sessions.service [Service] ExecStart=/bin/su root -l -c /usr/bin/startx -- VT01 [Install] WantedBy=multi-user.target
Habilitar el servicio:
# systemctl enable startx.service
ln -s ‘/etc/systemd/system/startx.service’ ‘/etc/systemd/system/multi-user.target.wants/startx.service’
#