Capítulo 9. El sistema X Windows y las consolas virtuales

9.1. Quiero ejecutar las X, ?cómo lo hago?
9.2. ?Porqué no funciona mi ratón con las X?
9.3. Los menus de X Window y cajas de diálogo no funcionan bien.
9.4. ?Qué es una consola virtual y como creo más?
9.5. ?Cómo accedo a las consolas virtuales desde X?
9.6. ?Cómo arranco XDM desde el archivo /etc/ttys?
9.7. Cuando arranco xconsole obtengo "Couldn't open console".
9.8. Mi ratón PS/2 no funciona bien en X.
9.9. Mi ratón PS/2 de MouseSystems no funciona.
9.10. Cuando compilo una aplicación X. imake no puede encontrar el archivo imake.tmpl. ?Dónde está?
9.11. ?Cómo invierto los botones del ratón?
9.12. ?Cómo instalo un "splash screen" y donde los consigo?

9.1.

Quiero ejecutar las X, ?cómo lo hago?

La manera más fácil es, simplemente, especificar que quieres usar las X durante el proceso de instalación.

Entonces, lee y sigue la documentación de la herramienta xf86config, la cual te ayuda a configurar el sistema XFree86 sobre las características propias de tu sistema (tarjeta de vídeo , ratón, etc).

Quizás te interesaría investigar y probar el servidor Xaccel, disponible a un precio muy razonable. Mira en la sección Xi Graphics o Metro Link para más detalles.

9.2.

?Porqué no funciona mi ratón con las X?

Si estás usando syscons (el driver de consola por defecto), puedes configurar FreeBSD para soportar un ratón en cada consola virtual. Para evitar conflictos con las X, syscons soporta un dispositivo virtual llamado /dev/sysmouse. Todos los eventos recibidos desde el mouse real son escritos en el dispositivo sysmouse, usando el protocolo MouseSystems. Si quieres usar el ratón en una o más consolas virtuales y usar las X, te recomendamos la siguiente configuración:


          /etc/rc.conf:
            moused_type=ps/2          # or whatever your actual type is
            moused_port=/dev/psm0     # or whatever your real port is
            moused_flags=

          /etc/XF86Config
            Section Pointer
                Protocol "MouseSystems"
                Device   "/dev/sysmouse"
                 .....
        

Hay gente que prefiere usar /dev/mouse bajo X. Para que esto funcione, /dev/mouse debe estar lincado a /dev/sysmouse:


          # cd /dev
          # rm -f mouse
          # ln -s sysmouse mouse
        

9.3.

Los menus de X Window y cajas de diálogo no funcionan bien.

Intenta desactivar la tecla Num Lock.

Si tu tecla Num Lock está activada por defecto al arrancar el sistema, deberías añadir la siguiente línea en la sección Keyboard del archivo XF86Config.


          # Let the server do the NumLock processing.  This should only be
          # required when using pre-R6 clients
              ServerNumLock
        

9.4.

?Qué es una consola virtual y como creo más?

Las consolas virtuales te permiten tener sesiones simultáneas en la misma máquina sin necesidad de tener montajes complicados como una red o ejecución de X.

Cuando el sistema arranca, mostrará el prompt de login en el monitor una vez finalizado el mismo. Puedes entonces teclear tu login y password y empezar a trabajar (o jugar), en la primera consola virtual.

En algun momento, es probablemente querras iniciar otra sesion , por ejemplo, para mirar la documentación de un programa que estás ejecutando, o para leer el correo mientras esperas que termine una sesión ftp que tienes establecida. Solo haz Alt-F2 y encontrarás un prompt un prompt de login esperandote en la segunda "consola virtual". Cuando quieras volver a la sesión original, sólo tienes que pulsar Alt-F1.

La instalación por defecto de FreeBSD tiene tres consolas virtuales activadas, y Alt-F1, Alt-F2 y Alt-F3 cambian entre ellas.

Para activar más consolas virtuales, edita /etc/ttys y añade tantas entradas como consolas virtuales quieras a partir de ttyv4, después del comentario "Virtual Terminals":


        # Edit the existing entry for ttyv3 in /etc/ttys and change
        # "off" to "on".
        ttyv3   "/usr/libexec/getty Pc"         cons25  on secure
        ttyv4   "/usr/libexec/getty Pc"         cons25  on secure
        ttyv5   "/usr/libexec/getty Pc"         cons25  on secure
        ttyv6   "/usr/libexec/getty Pc"         cons25  on secure
        ttyv7   "/usr/libexec/getty Pc"         cons25  on secure
        ttyv8   "/usr/libexec/getty Pc"         cons25  on secure
        ttyv9   "/usr/libexec/getty Pc"         cons25  on secure
        ttyva   "/usr/libexec/getty Pc"         cons25  on secure
        ttyvb   "/usr/libexec/getty Pc"         cons25  on secure
        

Utiliza tantas consolas como quieras o necesites. Cuantas más consolas tengas, más recursos utilizas; esto puede ser importante si tienes 8MB de RAM o menos. También te puede interesar cambiar el modo secure a insecure.

NOTA IMPORTANTE si quieres usar un servidor X DEBES dejar, al menos, un terminal virtual sin usar (o desactivado).

La manera más fácil de desactivar una consola es "apagarla". Por ejemplo, para desactivar el terminal 12, cambia esto:


          ttyvb   "/usr/libexec/getty Pc"         cons25  on secure
        

por esto:


          ttyvb   "/usr/libexec/getty Pc"         cons25  off secure
        

Si tu teclado solo tiene 10 teclas de función, tendras que acabar con:


          ttyv9   "/usr/libexec/getty Pc"         cons25  off secure
          ttyva   "/usr/libexec/getty Pc"         cons25  off secure
          ttyvb   "/usr/libexec/getty Pc"         cons25  off secure
        

(También puedes, simplemente, borrar estas líneas.)

Una vez has editado el archivo /etc/ttys, el siguiente paso es asegurarte de que tienes suficientes dispositivos de terminales virtuales. La manera más fácil de hacerlo es:


          # cd /dev
          # ./MAKEDEV vty12                 # For 12 devices
        

A continuación, la manera más fácil de activar las consolas virtuales es rearrancar el sistema. Si, realmente no quieres rearrancarlo, puedes para el servidor de X Window y ejecutar (como root):


          kill -HUP 1
        

Es imperativo que pares el servidor de X Window si está funcionando, antes de ejecutar este comando. Si no lo haces, parecerá que tu sistema está parado/colgado después de ejecutar el comando kill.

9.5.

?Cómo accedo a las consolas virtuales desde X?

Si la consola está actualmente mostrando X Window, puedes usar Ctrl-Alt-F1, etc, para cambiar entre las consolas virtuales. Ten en cuenta que una vez pases de una consola X Window a un terminal virtual, solo tienes que usar la tecla Alf- para volver a conmutar entre terminales virtuales o volver a las X. No necesitas pulsar la tecla Ctrl. Si usas la tecla Ctrl para volver a las X en alguna de las releases antiguas, puedes encontrarte que la consola de texto está bloqueada. Pulsa la tecla Ctrl de nuevo para desbloquearla.

9.6.

?Cómo arranco XDM desde el archivo /etc/ttys?

Existen dos escuelas sobre como arrancar el xdm . Una escuela arranca el xdm desde el archivo /etc/ttys usando el ejemplo dado, mientras que la otra simplemente arranca el xdm desde el archivo rc.local o desde un script X.sh en /usr/local/etc/rc.d. Ambos métodos son igualmente válidos, y uno puede funcionar en situaciones que el otro no. En ambos casos el resultado es el mismo: el sistema X Window lanzará un prompt de login gráfico.

El método ttys tiene la ventaja de documentar en que vty se lanzarán las X pasando la responsabilidad de rearrancar el servidor X al hacer el logout al proceso init. El método rc.local hace más fácil terminar con el proceso xdm en caso de problemas con el servidor X.

Si arrancamos desde rc.local, xdm debe ser arrancado sin argumentos (como un daemon). xdm debe arrancar DESPUES del proceso getty, o ambos entrarán en conflicto bloqueando la consola. La mejor manera de evitar este problema es tener un script que retrase el arranque de xdm durante 10 segundos.

Una versión previa de esta FAQ decía que debías añadir el terminal virtual usado por las X al archivo /usr/X11R6/lib/X11/xdm/Xservers. Esto no es necesario: las X usarán el primer terminal virtual que encuentre libre.

9.7.

Cuando arranco xconsole obtengo "Couldn't open console".

Si arrancas las X con startx, los permisos en /dev/console no serán cambiados, resultando en cosas como que xterm -C y xconsole no funcionen.

Esto se debe a la manera en que son fijados los permisos de la consola. En un sistema multiusuario, podemos no querer que cualquier usuario pueda escribir en la consola de sistema. Para usuarios que realizan logins directamente desde una máquina con un VTY, existe el archivo fbtab para resolver estos problemas.

Asegúrate de que existe al menos una línea como esta sin comentar:


          /dev/ttyv0 0600 /dev/console
        

Está en /etc/fbtab y asegurará que cualquiera que realice un login en /dev/ttyv0 será el propietario de la consola.

9.8.

Mi ratón PS/2 no funciona bien en X.

Tu ratón y el driver de ratón quizás estén fuera de sincronización.

En versiones 2.2.5 y anteriores, conmutando entre sesiones X y sesiones de terminales virtuales, podía provocar una desincronización. Si el problema ocurre muy amenudo, deberías añadir la siguiente opción en el archivo de configuración de tu kernel y recompilarlo.


          options PSM_CHECKSYNC
        

Mira la sección creando un kernel si no tienes experiencia en compilar nuevos kernels.

En versiones 2.2.6 y posteriores, el chequeo de sincronización es realizado de otra manera, y es estándar en el driver de ratón PS/2. Aun así, en casos extraños puedes llegar a ver mensajes de error de sincronización como este:


          psmintr: out of sync (xxxx != yyyy)
        

y parecer que tu ratón no funciona adecuadamente.

Si esto ocurre, desactiva el código de chequeo de sincronización poniendo los flags del driver PS/2 a 0x100. Entra en UserConfig poniendo la opción -c en el prompt de arranque:


          boot: -c
        

Entonces, en la línea de comando de UserConfig, teclea:


          UserConfig> flags psm0 0x100
          UserConfig> quit
        

9.9.

Mi ratón PS/2 de MouseSystems no funciona.

Hemos recibido reportes de que algunos modelos de ratones PS/2 de MouseSystems solo trabajan si están configurados en modo "alta resolución".

Desafortunadamente no hay solución para versiones 2.0.x y 2.1.x. En versiones 2.2.x, aplica el siguiente parche en /sys/i386/isa/psm.c y compila un nuevo kernel.


diff -u psm.c.orig psm.c
@@ -766,6 +766,8 @@
     if (verbose >= 2)
  log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n",
      unit, i);
+    set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH);
+
 #if 0
     set_mouse_scaling(sc->kbdc);  /* 1:1 scaling */
     set_mouse_mode(sc->kbdc); /* stream mode */
        

En versiones 2.2.6 o posteriores, especifica el flag 0x04 al driver PS/2 para poner el ratón en modo de alta resolución. Entra en UserConfig:


          boot: -c
        

y en la línea de comandos teclea:


          UserConfig> flags psm0 0x04
          UserConfig> quit
        

Mira en la sección anterior para posibles causas de problemas con los ratones.

9.10.

Cuando compilo una aplicación X. imake no puede encontrar el archivo imake.tmpl. ?Dónde está?

Imake.tmpl es parte del package Imake, una aplicación estándar de compilación de X. Tanto Imake como headers y otros archivos necesarios para compilar aplicaciones X están en la distribución de programación X. Puedes instalarla desde el sysinstall o manualmente desde los archivos de la distribución X.

9.11.

?Cómo invierto los botones del ratón?

Ejecuta el comando xmodmap -e "pointer = 3 2 1" desde el archivo .xinitrc o .xsession.

9.12.

?Cómo instalo un "splash screen" y donde los consigo?

Justo antes de la publicación de FreeBSD 3.1 se añadió una nueva característica que permite mostrar "splash screens" durante los mensajes de arranque del sistema. Los "splash screen" deben ser un bitmap de 256 colores (*.BMP) o ZSoft PCX (*.PCX). Además, deben tener una resolución de 320x200 o inferior para poder trabajar en controladoras VGA estándares. Si se compila el soporte VESA en el kernel, se pueden usar bitmaps de hasta 1024x768. Recordar que el soporte de VESA requiere que la opción VM86 sea compilada en el kernel. El soporte actual de VESA puede ser compilado directamente en el kernel con la opción de configuración VESA o cargando el módulo kld VESA durante el arranque.

Para usar un "splash screen" necesitas modificar los archivos de inicio que controlan el proceso de arranque de FreeBSD. Estos archivos cambiaron con FreeBSD 3.2, así que ahora existen dos maneras de cargar un "splash screen":

  • FreeBSD 3.1

    El primer paso es encontrar una versión bitmap de tu "splash screen". La release 3.1 sólo soporta bitmaps de Windows. Una vez hayas elegido tu "splash screen" copiala en /boot/splash.bmp. A continuación necesitas tener un archivo /boot/loader.rc que contenga las siguientes líneas:


                  load kernel
                  load -t splash_image_data /boot/splash.bmp
                  load splash_bmp
                  autoboot
                

  • FreeBSD 3.2+

    Además de soportar los "splash screens" en formato PCX, FreeBSD 3.2 incluye un mejor sistema de configuración del proceso de arranque. Si quieres, puedes usar el método señalado para FreeBSD 3.1. Si lo haces, y quieres usar PCX, reemplaza splash_bmp con splash_pcx. Si por el contrario quieres usar la nueva configuración de arranque, necesitas crear un archivo /boot/loader.rc que contenga las siguientes líneas:


                  include /boot/loader.4th
                  start
                

    y otro archivo /boot/loader.conf que contenga lo siguiente:


                  splash_bmp_load="YES"
                 bitmap_load="YES"
                

    Esto asume que estás usando /boot/splash.bmp como tu "splash screen". Si quieres usar un archivo PCX, copialo a /boot/splash.pcx, crea un archivo /boot/loader.rc como se ha indicado anteriormente, y crea un /boot/loader.conf que contenga:


                  splash_pcx_load="YES"
                  bitmap_load="YES"
                  bitmap_name="/boot/splash.pcx"
                

Ahora todo lo que necesitas es un "splash screen". Puedes navegar por una inmejorable galería en http://www.cslab.vt.edu/~jobaldwi/splash/.

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.

Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.