Para los que usan switches KVM
Publicado: Mar, 02 Ago 2011, 14:38
A la hora de trabajar con varios servidores con un solo teclado y display, un switch KVM es un dispositivo ideal para resolver este problema. Con el KVM todo iba de maravillas excepto cuando cambiaba de una máquina a la estación de trabajo que usa interfaz gráfica el display no tomaba la resolución correcta. Tras muchos intentos de búsquedas fallidos encontré estas magníficas instrucciones para resolver el problema, ojalá y les resulte útil como a mí.
Se que esto cabe más en la wiki, pero la vagancia me privó de enviar la solicitud de permisos de escritura.
NOTA: estas instrucciones las tomé de http://unixlandia.com/web_interna/index ... &Itemid=35 están plasmadas aquí casi textualmente, excepto por algunos fragmentos de texto innecesarios.
Lo primero que deberíamos hacer es conectar el monitor directamente a la tarjeta gráfica, sin switch de por medio. Arrancamos el sistema, incluido el entorno gráfico, y nos hacemos una copia del archivo /var/log/Xorg.0.log (el cero puede variar, si tenemos más tarjetas), colocándola en un lugar a mano. No es estrictamente necesario, pero nos puede ahorrar algún reinicio si algo no sale bien.
Lo que vamos a hacer ahora es encontrar en ese "log" los valores EDID que el monitor ha comunicado a la gráfica, en un arranque "normal". Para ello, buscaremos un patrón asociado a los monitores: el hertzio.
Lo "empipo" al comando head porque la información que nos interesa suele estar al principio: el sincronismo horizontal y el refresco vertical mínimos y máximos soportados por nuestro monitor. Es una línea como ésta:
Apuntamos esta información en algún sitio, bien usando el socorrido portapapeles, bien a lápiz/papel. En el ejemplo, el sincronismo horizontal es 30-71 y el refresco vertical es 50-160 (no es necesario especificar las unidades, ya que el servidor gráfico toma las correctas por defecto).
A continuación, buscamos las resoluciones de pantalla que queremos usar. Supongamos que son dos: 1024x768 y 1280x800.
Como se puede ver, nos interesa la información referente a las "modelines", que luego tendremos que incluir a mano en el xorg.conf. Una línea de este listado tiene este estilo:
Normalmente, aparecen unas cuantas líneas por cada resolución. ¿Cuál escoger? Inmediatamente tras las comillas, figura el refresco vertical (en los ejemplos, 84.9 y 59.9, lo que en la práctica es 85 y 60). Lo lógico es que, de todas las modelines, elijamos la que mayor refresco proporcione (en monitores CRT) o la que se ajuste al valor recomendado por el fabricante (en monitores LCD-TFT).
Así pues, acabamos teniendo apuntadas una línea "ranges" y otras tantas "modelines" como resoluciones queramos tener disponibles. Ya podemos cerrar el archivo Xorg.0.log.
Ahora, como root (o con sudo), abriremos el archivo /etc/X11/xorg.conf y buscaremos la sección "monitor" (vuestros nombres variarán respecto a este ejemplo):
Introducimos "dentro" de ella la información que tenemos apuntada, de la siguiente forma:
- En HorizSync, tecleamos los dos valores apuntados, separados por un guión.
- En VertRefresh, lo mismo.
- Por último, las Modelines las copiamos tal cual, pero eliminando el refresco vertical, el -hsync y todo lo que venga después. Es decir, sólo tenemos que escribir la resolución en pixels (entre comillas), la velocidad del reloj (un valor que suele tener dos decimales) y ocho cifras enteras, separadas por espacios.
Acabada la sección del monitor, bajamos a la de "screen":
Vemos que hay seis diferentes subsecciones, cada una con una "depth" diferente (la paleta de colores). Hoy en día no hay muchas razones para usar otra que no sea la de 24 bits (salvo juegos antiguos), así que nos limitamos a introducir lo siguiente sólo en ella:
Es decir, una línea "Modes" seguida de la resolución o resoluciones, entrecomilladas, que vamos a emplear. Efectivamente, una por cada "modeline".
Guardamos los cambios del xorg.conf y reiniciamos las X con nuestro método favorito (recomendado CTRL+ALT+retroceso, que desahoga mucho).
Se que esto cabe más en la wiki, pero la vagancia me privó de enviar la solicitud de permisos de escritura.
NOTA: estas instrucciones las tomé de http://unixlandia.com/web_interna/index ... &Itemid=35 están plasmadas aquí casi textualmente, excepto por algunos fragmentos de texto innecesarios.
Lo primero que deberíamos hacer es conectar el monitor directamente a la tarjeta gráfica, sin switch de por medio. Arrancamos el sistema, incluido el entorno gráfico, y nos hacemos una copia del archivo /var/log/Xorg.0.log (el cero puede variar, si tenemos más tarjetas), colocándola en un lugar a mano. No es estrictamente necesario, pero nos puede ahorrar algún reinicio si algo no sale bien.
Lo que vamos a hacer ahora es encontrar en ese "log" los valores EDID que el monitor ha comunicado a la gráfica, en un arranque "normal". Para ello, buscaremos un patrón asociado a los monitores: el hertzio.
Código: Seleccionar todo
$ grep -i hz Xorg.0.log | head
Código: Seleccionar todo
(II) NV(0): Ranges: V min: 50 V max: 160 Hz, H min: 30 H max: 71 kHz, PixClock max 110 MHz
A continuación, buscamos las resoluciones de pantalla que queremos usar. Supongamos que son dos: 1024x768 y 1280x800.
Código: Seleccionar todo
$ grep 1024 Xorg.0.log | grep -i modeline
$ grep 1280 Xorg.0.log | grep -i modeline
Código: Seleccionar todo
(II) NV(0): Modeline "1024x768"x84.9 94.50 1024 1096 1200 1376 768 771 775 809 -hsync +vsync (68.7 kHz)
(II) NV(0): Modeline "1280x1024"x59.9 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync (63.7 kHz)
Así pues, acabamos teniendo apuntadas una línea "ranges" y otras tantas "modelines" como resoluciones queramos tener disponibles. Ya podemos cerrar el archivo Xorg.0.log.
Ahora, como root (o con sudo), abriremos el archivo /etc/X11/xorg.conf y buscaremos la sección "monitor" (vuestros nombres variarán respecto a este ejemplo):
Código: Seleccionar todo
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Código: Seleccionar todo
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-71
VertRefresh 50-160
ModeLine "1024x768" 94.50 1024 1096 1200 1376 768 771 775 809
ModeLine "1280x1024" 109.00 1280 1368 1496 1712 1024 1027 1034 1063
EndSection
- En VertRefresh, lo mismo.
- Por último, las Modelines las copiamos tal cual, pero eliminando el refresco vertical, el -hsync y todo lo que venga después. Es decir, sólo tenemos que escribir la resolución en pixels (entre comillas), la velocidad del reloj (un valor que suele tener dos decimales) y ocho cifras enteras, separadas por espacios.
Acabada la sección del monitor, bajamos a la de "screen":
Código: Seleccionar todo
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
EndSection
Código: Seleccionar todo
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x800" "1024x768"
EndSubSection
Guardamos los cambios del xorg.conf y reiniciamos las X con nuestro método favorito (recomendado CTRL+ALT+retroceso, que desahoga mucho).