02 noviembre 2011

Sistemas dual o multihead - GNU/Linux con varios monitores o rescatando "hardware obsoleto"

El cielo sobre el puerto tenía el color de una pantalla de televisor, sintonizado en un canal muerto.
Primera línea de Neuromante. William Gibson
¿Quien no sufre la molestia de tener que loguearse, solo quizas para revisar una simple de una bitacora?

Bueno, aprovechando las capacidades de nuestro querido pinguino, podemos dejar una consola de texto solo para esta tarea, bienvenida cuando estamos administrando varios servidores y queremos ver como evolucionan las cosas sin necesidad de tener que ingresar al sistema, muy comoda cuando solo dejamos a un "Divertingeniero en VisualBasic" a cargo.

Es algo que un Administrador perezoso que se precie de tal agradecera mucho, como personalmente vengo comprobando ya desde hace muchos años, debido a que dificilmente instalo un entorno grafico en un servidor en produccion a menos que sea absolutamente necesario.


Como todo esto es un texto educativo, con fines puramente explicativos y todo el rollo legal que corresponde y bla bla, yo no me hago responsable por nada que resulte de la mala utilizacion del mismo de parte de terceros, las opiniones vertidas pertenecen exclusivamente a sus autores, las notas publicadas por este medio no reemplazan la debida instruccion por parte de personas idoneas, ante cualquier duda consulte a su medico y/o hacker, etc., etc., etc., y lo que haga falta. El uso continuo de Linux puede causar dependencia y/o adiccion psicologica.
Flames, Amenazas y otras yerbas a /dev/null y "Portate mal pero cuidate bien" =)

Vamos a configurar un sistema GNU/Linux con mas de un monitor, para, por ejemplo, ver las bitacoras (log's) en tiempo real, aparte de poder rescatar del cementerio a ese hardware que quedo totalmente desfasado y/u obsoleto, como viejos monitores monocromos (tanto Hercules como CGA e incluso VGA mono de 9" que nadie quiere usar ni tampoco explican como llegaron), placas de video de 1-2 MB, que si bien no son como para hacer CAD, soportan el modo consola con todos los honores posibles.
Incluso podemos usar algun manejador de ventanas liviano como BlackBox (FluxBox, ICEwm, FVWN2, Windowmaker o algun otro similar) en la segunda consola grafica sin ningun detrimento en la calidad, para poder de este modo usar un programa de diseño por un lado y leer los manuales por otro, o muchas posibilidades mas.

Una vez que lo disfrutemos, sentimos que el uso de varios monitores es practicamente lo minimo necesario para trabajar.

Es una forma interesante de darle un mejor uso a nuestro sistema, amen de tener varias configuraciones graficas simultaneas y de esta manera sentirnos totalmente comodos en nuestro quehacer diario.

Particularmente, voy a explicar la instalacion desde cero en un sistema con la distribucion Slackware porque es la que yo uso (segui el espiritu de estos pasos si no usas Slackware o si estas modificando un sistema ya en funcionamiento).
Si usas Mandriva Linux para esto, puede que te resulte mas simple si sos un usuario novato con el pinguino, pero no hay mayores diferencias. Casi cualquier distro reconoce perfectamente cualquier hardware antiguo.

La version elegida del X Window System es XFree86 4 (o mejor XOrg) debido a que admite varios monitores y dispositivos de entrada, y ademas es libre.

SIEMPRE que voy a modificar/instalar algo hago una copia de seguridad, ANTES de intentar cambiar nada, lo recomiendo ya que un backup nunca esta de mas, aparte nos acostumbramos a no quemar los puentes antes de cruzarlos.

ADVERTENCIA:
Algunas placas de video simplemente no funcionan junto a otras.
Es algo inevitable, como la muerte o los impuestos...
Hace las copias de respaldo (Backup) ANTES de hacer ningun cambio en el sistema.
Siempre que instalemos hardware en un equipo, este debe estar desconectado de la energia electrica para prevenir posibles accidentes.


Principal VGA y bitacoras en Hercules monocromatico

Primero voy a dar el ejemplo en un sistema con un monitor VGA (cuando me refiero a "VGA" quiero decir "VGA o mejor"...) junto con un escandalosamente prehistorico Hercules monocromo (o HGA, MDA, CGA o similar), que en mi caso es de fosforo blanco, pero los verdes y ambar fueron la norma durante muchisimo tiempo, cuando las XT's y las 286 eran "fierros" jovenes todavia...
Es una alternativa extremadamente viable por lo economica que resulta, al menos para mi que tengo varios monitores de este tipo.

1
Instalamos fisicamente (previo apagar el equipo y desconectarlo de la energia electrica) ambas tarjetas (una grafica, la otra quizas no tanto), encendemos el (los) monitor(es) VGA y comenzamos con la instalacion de GNU/Linux Slackware.

2
Elegimos KDE y la entrada grafica al sistema cuando llegamos a esa parte de la instalacion, no es muy importante pero como ya vamos a tener una consola de texto "puro y duro", podemos darnos el lujo de iniciar la otra en modo grafico.

3
Finalizamos la instalacion y nos aseguramos que el sistema base y X-Window esten funcionando, obviamente reiniciando y entrando al sistema.

4
Configurar el kernel para que tambien admita un monitor Hercules (por mi gusto, personalmente lo tengo como modulo y lo cargo en el arranque).

Hay muchos y muy buenos textos que explican como recompilar el kernel, asi que no voy a explicar como se hace aca.

El modulo necesario para esto es "mdacon"

5
Editamos el inittab (/etc/inittab) para decirle que consola queremos usar, con una linea que sera muy similar a la siguiente:

--------->8- ACA EMPIEZA -8<---------
16:23:respawn:/sbin/getty 38400 tty16
--------->8- ACA TERMINA -8<---------


Ahora el truco es cambiar entre las diferentes consolas, tipicamente utilizando la tecla META (bajo i386 generalmente es la tecla ALT) y las Fn's, o ALT y los cursores, o utilizar ALTGR y las Fn's que funciona exactamente igual pero con las consolas desde F13 en adelante.

Si bien el problema es que no se puede saltar de X-windows a una consola directamente ya que la combinacion ALTGR + F1 no funciona desde las X's. Por lo tanto no podes manejar un programa desde consola y ver el resultado en las X's, aunque si al reves.
Solucion: Pasar primero a modo texto. Acepto sugerencias mejores.

Pero como nosotros "solo" lo que pretendiamos era tener las bitacoras del sistema (en este ejemplo) siempre a mano, añadimos la siguiente linea al syslog (/etc/syslog.conf):

--------->8- ACA EMPIEZA -8<---------
*.* /dev/tty13
--------->8- ACA TERMINA -8<---------


Podemos agregar otras sendas lineas para ver como evoluciona el envio de correo en la tty14 y la recogida en la tty15, o tener iptraf en la tty20, obvia y previa modificacion del mencionado inittab claro esta.

No tenemos el problema de tener que pasarnos desde la consola grafica a la consola de texto, porque esta ultima esta permanentemente ocupada (en primera instancia al menos) en mostrar las bitacoras del sistema.

Como pasamos a tener dual-headed, al arrancar veras algo asi como esto:

--------------------------------------------
mdacon: Hercules with 8K of memory detected
Console: change consoles 13-16 to MDA-2
Console: mono *MDA 80x25
--------------------------------------------

Podes ver los mensajes de inicio con el comando dmesg

Listo! cuando queremos tener a mano los logs, solo tenemos que encender el viejo monitor Hercules y ver como andan todas las cosas...

Primario VGA y los otros tambien, en modo grafico...

Parece un procedimiento un poco mas largo pero mucho mas rapido...

Seguimos los pasos 1 a 3 definidos en "Primario VGA y bitacoras en Hercules monocromatico"...

4
Ingresando como root lanzamos un xterm, verificando que estemos en "nuestro" directorio home (por ejemplo ejecutando "cd" sin las comillas), tecleamos entonces "cp /etc/X11/XFConfig-4" para crear una copia de seguridad del archivo de configuracion de las X's, por si acaso.

5
Ahora nos pasamos desde el comienzo de sesion grafico (el tan afamado runlevel 5) al runlevel 3 (ejecucion del sistema en consola) "telinit 3"

6
Volvemos a entrar como root y recabamos algunos datos necesarios para continuar.

Tecleando "X -version" veremos XFree86 Version X.X.X, casi al principio, probablemente la 4.1.0 aunque podria ser la 3.3.6, dependiendo de cual sea la placa de video primaria de nuestro sistema.

7
Cruzamos los dedos y ejecutamos "XFree86 -xf86config /root/XF86Config.new"

Si tenes suerte, los dos monitores se pasaran de modo, pondran los leds de encendido en verde y mostraran el aspecto en bruto de las X's. Matamos a las mismas con CTRL+ALT+RETROCESO.
Si no lo hacen, proba una combinacion diferente de tarjetas graficas.

Mi vieja Diamond Stealth II S220 PCI no funciona con NINGUNA otra de las placas de video que probe, y una ATI Mach64 3D RAGE II PCI me dio batalla y termino siendo la pantalla primaria (es donde aparece el BIOS), a pesar que tenia la opcion explicita de iniciar desde la AGP en el BIOS, cosa que nunca sucedio porque seguia mostrandolo persistentemente.
Las SIS630 AGP tambien se resisten en ciertas configuraciones a dejar de ser primarias, al menos las que vienen onboard en los motherboard.
Las demas placas que probe, en algo menos de diez (10) minutos ya estaban funcionando sin inconvenientes.

8
Con "XFree86 -scanpci" veremos algo asi (en mi caso particular claro):

(0:4:0) ATI Mach64 (una vieja PCI)
(1:0:0) NVIDIA Riva Ultra 64 (placa AGP)

Verificamos que el servidor X sea llamado correctamente con "ls -l /etc/X11/X.", si es un enlace simbolico estas usando XFree86 version 4, si no lo es hace un backup tecleando:
"mv /etc/X11/X /etc/X11/X_viejo"

Creamos un nuevo enlace con
"ln -s /etc/X11/bin/XFree86 /etc/X11/X"

9-
Podemos copiar el nuevo archivo de configuracion de las X's con "cp XF86Config.new /etc/X11/XF86Config-4" pero lo mejor seria editar directamente /etc/X11/XF86Config-4 para personalizar todo lo que sea o consideremos necesario.

ACA hay un ejemplo de mi configuracion para que puedas compararlo o tomarlo como punto de partida.

Normalmente, para tener una lectura y seguimiento mas limpio, los nombres estan agrupados del modo que Screen0 tiene a Monitor0 y a Card0, y asi sucesivamente.
Es mas facil de no cometer errores asi.

10
Para volver al inicio de sesion grafico tecleamos "telinit 5" y disfrutamos de la pantalla de inicio de sesion.
La primaria queda a la "derecha" (porque fisicamente es asi en mi caso particular, podria ser "arriba", "abajo" o "loquesea") y las demas aparecen al final del proceso de entrada del sistema.
Altamente recomendado RTFM (Read The "Fine" Manual) mediante "man XFree86"

"XFree86 -configure" nos permite identificar el controlador de los dispositivos de ambas placas.

Debemos confirmar bien los BusID, porque en las placas AGP empiezan con uno (1), no con un cero (0), algo asi como 1:0:0

No hace falta que las diferentes pantallas tengan la misma resolucion, de hecho ni siquiera que el gestor de sesion sea el mismo que el entorno de trabajo, a saber:

Inicio de Sesion KDM (KDE) / Entorno KDE
Inicio de Sesion KDM (KDE) / Entorno GNOME
Inicio de Sesion KDM (KDE) / Entorno BlackBox (u otros)
Inicio de Sesion GDM (GNOME) / Entorno KDE
Inicio de Sesion GDM (GNOME) / Entorno GNOME
Inicio de Sesion GDM (GNOME) / Entorno BlackBox (u otros)
Inicio de Sesion XDM / Entorno KDE
Inicio de Sesion XDM / Entorno GNOME
Inicio de Sesion XDM / Entorno BlackBox (u otros)

Eso lo definimos en el archivo /etc/sysconfig/desktop, en la linea que dice:

----------->8- ACA EMPIEZA -8<-----------
DESKTOP="KDE" (O quizas DESKTOP="GNOME")
----------->8- ACA TERMINA -8<-----------

Editandolo como superusuario (root) de acuerdo a nuestras necesidades.

Como login grafico personalmente recomiendo KDE, ya que nos da pantallas separadas, lo que nos permite monitorear directamente "algo" (actividad de red, registro de errores, etc.) sin tener la necesidad de tener otra computadora y usar hardware viejo, que fue nuestra original motivacion principal.

El entorno Gnome con las extenciones Xinerama permite usar los dos monitores como si fueran uno solo, KDE no las necesita para hacer lo mismo.

Iniciar sesion con XDM es apropiado para sistemas antiguos que no tienen mucha RAM, pero debido a como inicia muy velozmente, tambien es una opcion recomendada, maxime si lo unico que queremos es monitorear un server y no jugar una partidita de Quake en red.

No olvidemos que podemos loguearnos con unas credenciales en una pantalla y con otra(s) cualesquiera(s) en la(s) otra(s).

Para lanzar, por ejemplo, xclock en la segunda pantalla solo teclearemos: "xclock -display :0:1", aunque si modificamos ~/.bashrc, (que se encuentra dentro del directorio "home" de cada usuario y que se abrevia como ~), podemos hacer uso de variables para especificar a la pantallas

--------->8- ACA EMPIEZA -8<---------
izquierdo='-display :0:1'
derecho='-display :0.0'
--------->8- ACA TERMINA -8<---------

Donde la orden anterior se veria de esta manera: "xclock $izquierdo" y todo resultaria un poco mas simple de utilizar. Kwatch es una aplicacion grafica para ver en KDE archivos de registro de nuestro sistema y monitorizarlos.

Aclaro que tambien podemos instalar dos (o mas) monitores graficos JUNTO con los ya no tan obsoletos monitores Hercules monocromaticos, cosa que es muy interesante.

En las sabiamente inmortales palabras de Pepe Le Pew: El que espera y no desespera se lleva la mejor pera.

Demas esta decir del porque "acepto donaciones" de lo que de otro modo se consideraria simple y llanamente "basura"... incluso para mi

Diria un famoso personaje:
Uno trata de ser amable y pedir las cosas bien, en ves de romperles la cara como quisiera y ¿como te lo agradecen?... con un mocoso lleno de barros que te trata como basura y no te permite jugar, pero yo soy mas que basura... bueno, no como la basura de las casas ricas donde hay todavia muchas cosas que sirven pero...
- Cantinero Moe Szyslak - Los Simpson

¡Que te diviertas!

(El texto completo y/o la version actualizada esta ACA aunque la última version de 2005, no esta desactualizada).

2 comentarios:

Infotecnologia dijo...

Muy interesante, Te invito a visitar mi web de tecnología, informática, tutoriales, vídeos, descargas y mucho más: http://www.infotecnologia.es .Si lo deseas puedes enlazarnos.

TheCoffeMaker dijo...

Excelente ... me acuerdo que hace años (justamente en la epoca que usaba slackware antes del 2K) hice justamente esto en casa ... es ideal para poder ir viendo el syslog en tiempo real en otra pantalla.

Actualmente el administrador de configuracion de nvidia te deja configurar dos monitores como sesiones sepadaras de X bastante facil, aunque no es justamente una solucion ideal para cuando se necesitan tener consolas sin X.

Saludos excelente post!