Capítulo 11. El sistema X Window y las consolas virtuales

11.1. ¿Qué es el sistema X Window?
11.2. ¿Quiero correr Xorg, como hago esto?
11.3. He intentado correr X, pero obtengo el error No devices detected. cuando escribo startx. ¿Qué hago ahora?
11.4. ¿Por qué mi mouse no funciona con X?
11.5. Mi mouse tiene una flamante rueda. ¿Puedo usarla en X?
11.6. Mi laptop tiene un touchpad Synaptics. ¿Puedo usarlo en X?
11.7. ¿Como use pantallas X remotas?
11.8. ¿Qué es una consola virtual y como hago más?
11.9. ¿Como accedo a las consolas virtuales desde X?
11.10. ¿Como arranco XDM al iniciar?
11.11. ¿Porque obtengo Couldn't open console al correr xconsole?
11.12. ¿Por qué mi mouse PS/2 se comporta mal bajo X?
11.13. ¿Como revierto los botones del mouse?
11.14. ¿Como instalo una splash screen y donde puedo encontrarlas?
11.15. ¿Puedo usar las teclas Windows en mi teclado en X?
11.16. ¿Como puedo obtener aceleración de hardware 3D para OpenGL®?

11.1.

¿Qué es el sistema X Window?

El sistema X Window (comúnmente X11) es el sistema de ventanas más ampliamente disponible capaz de correr en UNIX® o sistemas de tipo UNIX®, incluyendo FreeBSD. La X.Org Foundation administra estándares de protocolo de X, con la implementación de referencia actual, versión 11 release 7.7, de modo que las referencias suelen acortarse a X11.

Exiten muchas implementaciones disponibles para diferentes arquitecturas y sistemas operativos. Una implementación del código del lado del servidor es conocida propiamente como un servidor X.

11.2.

¿Quiero correr Xorg, como hago esto?

Para instalar Xorg siga uno de los siguientes pasos:

Use el meta-port x11/xorg, que compila e instala todos los componentes de Xorg.

Use x11/xorg-minimal, que compila e instala solo los componentes de Xorg necesarios.

Instale Xorg desde los paquetes de FreeBSD:

# pkg install xorg

Luego de la instalación de Xorg, siga las instrucciones de la sección Configuración de X11 del manual de FreeBSD.

11.3.

He intentado correr X, pero obtengo el error No devices detected. cuando escribo startx. ¿Qué hago ahora?

El sistema probablemente este corriendo en un securelevel elevado. No es posible iniciar X en un securelevel elevado porque X requiere acceso de escritura a io(4). Para más información vea la página de manual de init(8).

Hay dos soluciones a este problema: ponga securelevel en cero o corra xdm(1) (o un gestor gráfico alternativo) en tiempo de arranque antes de que securelevel sea elevado.

Vea P: 11.10 para más información acerca de correr xdm(1) en tiempo de arranque.

11.4.

¿Por qué mi mouse no funciona con X?

Al usar syscons(4), el controlador de consola por defecto, FreeBSD puede configurarse para soportar un puntero del mouse en cada pantalla virtual. Para evitar entrar en conflico con X, syscons(4) soporta un dispositivo virtual llamado /dev/sysmouse. Todos los eventos del mouse recibidos del dispositivo real del mouse se escriben al dispositivo sysmouse(4) mediante moused(8). Para usar el mouse en una o más consolas virtuales, and use X, vea P: 4.4.1 y configuremoused(8).

Luego edite /etc/X11/xorg.conf y asegúrese de que las siguientes líneas existan:

Section "InputDevice"
   Option          "Protocol" "SysMouse"
   Option          "Device" "/dev/sysmouse"
.....

Empezando con la versión 7.4 de Xorg, las secciones InputDevice en xorg.conf son ignoradas en favor de los dispositivos autodetectados. Para restaurar el viejo comportamiento, agregue la siguiente línea a la sección ServerLayout o a ServerFlags:

Option "AutoAddDevices" "false"

Algunas personas prefieran usar /dev/mouse bajo X. Para hacer que esto funcione, /dev/mouse debería estar vinculado a /dev/sysmouse (vea sysmouse(4)) añadiendo la siguiente línea a /etc/devfs.conf (vea devfs.conf(5)):

link    sysmouse    mouse

Este vínculo puede ser creado reiniciando devfs(5) con el siguiente comando (como root):

# service devfs restart

11.5.

Mi mouse tiene una flamante rueda. ¿Puedo usarla en X?

Si, si X se configura para un mouse de 5 botones. Para hacer esto, agregue las líneas Buttons 5 y ZAxisMapping 4 5 a la sección InputDevice de /etc/X11/xorg.conf, como se ve en este ejemplo:

Section "InputDevice"
   Identifier      "Mouse1"
   Driver          "mouse"
   Option          "Protocol" "auto"
   Option          "Device" "/dev/sysmouse"
   Option          "Buttons" "5"
   Option          "ZAxisMapping" "4 5"
EndSection

Para usar el mouse en Emacs, también agregue las siguientes líneas a ~/.emacs:

;; wheel mouse
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)

11.6.

Mi laptop tiene un touchpad Synaptics. ¿Puedo usarlo en X?

Si, luego de configurar un par de cosas para hacerlo funcionar.

Para usar el controlador de synaptics de Xorg, primero remueva moused_enable de rc.conf.

Para habilitar synaptics, agregue las siguiente línea a /boot/loader.conf:

hw.psm.synaptics_support="1"

Agregue lo siguiente a /etc/X11/xorg.conf:

Section "InputDevice"
Identifier  "Touchpad0"
Driver      "synaptics"
Option      "Protocol" "psm"
Option      "Device" "/dev/psm0"
EndSection

Y asegurese de añadir la siguiente línea a la sección ServerLayout:

InputDevice    "Touchpad0" "SendCoreEvents"

11.7.

¿Como use pantallas X remotas?

Por razones de seguridad, la configuración por defecto es no permitir que la maquina abra una ventana directamente.

Para habilitar esta característica arranque X con el argumento opcional -listen_tcp:

% startx -listen_tcp

11.8.

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

Las consolas virtuales proveen varias sesiones simultaneas en una misma máquina sin hacer nada complicado como configurar una red o correr X.

Cuando arranca el sistema, se mostrara un indicador de arranque en el monitor luego de mostrar los mensajes de inicio. Escriba su nombre de usuario y contraseña para comenzar a trabajar en la primera consola virtual.

Para iniciar otra sesion, tal vez para ver documentación para un programa o para leer mail mientras espera que termine una transferencia por FTP, mantenga Alt y presione F2. Esto mostrara el indicador de inicio para la segunda consola virtual. Para volver a la sesión original presione Alt+F1.

La instalación por defecto de FreeBSD tiene ocho consolas virtuales habilitadas. Alt+F1, Alt+F2, Alt+F3, y demás iran cambiando entre estas consolas virtuales.

Para habilitar más consolas virtuales, edite /etc/ttys (vea ttys(5)) y añada entradas para ttyv8 hasta ttyvc, luego del comentario acerca de terminales virtuales:

# Edit the existing entry for ttyv8 in /etc/ttys and change
# "off" to "on".
ttyv8   "/usr/libexec/getty Pc"         xterm  on secure
ttyv9   "/usr/libexec/getty Pc"         xterm  on secure
ttyva   "/usr/libexec/getty Pc"         xterm  on secure
ttyvb   "/usr/libexec/getty Pc"         xterm  on secure

Cuantas más terminales virtuales, más recursos son usados. Esto puede ser problemático en sistemas con 8 MB de RAM o menos. Considere cambiar secure a insecure.

Nota:

Versions de FreeBSD anteriores a 9.0 usaban el tipo de terimnal cons25, en lugar de xterm. Use el format de las entradas existentes al añadir entradas a /etc/ttys.

Importante:

Para correr un servidor X, al menos una terminal virtual debe estar enoff para que la use. Esto significa que solo once de las teclas Alt-function pueden ser usadas como consolas virtuales de manera que una queda para el servidor X.

Por ejemplo, para correr X y once consolas virtuales, la configuración para la terminal 12 debería ser:

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

La manera más fácil de activar las consolas virtuales es reiniciar.

11.9.

¿Como accedo a las consolas virtuales desde X?

Use Ctrl+Alt+Fn para cambiar a una consola virtual. Presione Ctrl+Alt+F1 para volver a la primera consola virtual.

Al estar en una consola de texto, use Alt+Fn para moverse entre ellas.

Para volver a la sesión de X, cambie a la consola virtual corriendo X. Si se inicio X desde la línea de comandos usando startx, la sesión X se adjuntara a la siguiente consola virtual sin uso, no la consola de texto desde la cual fue invocada. Para ocho terminales virtuales activas, X correra en la novena, de modo que useAlt+F9.

11.10.

¿Como arranco XDM al iniciar?

Hay dos escuelas de pensamiento acerca de como arrancar xdm(1). Una escuela arranca xdm desde /etc/ttys (see ttys(5)) usando el ejemplo provisto, mientras la otra corre xdm desde rc.local (see rc(8)) o desde un script de X en /usr/local/etc/rc.d. Ambas son igualmente válidas, y una puede funcionar en situaciones donde la otra no. En ambos casos el resultado es el mismo: X mostrara un indicador de inicio gráfico.

El método ttys(5) tiene la ventaja de documentar en que vty iniciara X will y pasar la responsabilidad de reiniciar el servidor X al desloguearse a init(8). El método rc(8) hace que sea fácil hacer kill a xdm si hay un problema arrancando el servidor X.

Si se carga desde rc(8), xdm debería iniciarse sin argumentos. xdm debe arrancar luego de que corra getty(8), o de lo contrario getty y xdm estarán en conflicto, bloqueando la consola. La mejor manera de solucionar esto es hacer que el script duerma por 10 segundos y luego inicie xdm.

Al iniciar xdm desde /etc/ttys, aún hay una posibilidad de conflicto entre xdm y getty(8). Una manera de evitar esto es añadir el número de vt en /usr/local/lib/X11/xdm/Xservers:

:0 local /usr/local/bin/X vt4

El ejemplo de arriba indicara al servidor X que corra en /dev/ttyv3. Note que el número es mayor en uno. El servidor X cuenta la vty desde uno, mientras que el kernel de FreeBSD numera la vty desde cero.

11.11.

¿Porque obtengo Couldn't open console al correr xconsole?

Cuando X se inicia con startx, los permisos en /dev/console no serán cambiados, lo que hace que cosas como xterm -C y xconsole no funcionen.

Esto es por la manera en que los permisos de consola están configurados por defecto. En un sistema multiusuario, uno no necesariamente quiere que cualquier usuario pueda escribir en la consola del sistema. Para usuarios que se están autenticando directamente en una maquina con una VTY, el archivo fbtab(5) existe para resolver tales problemas.

En resumen, asegurese de que una línea no comentada de esta forma se encuentre en /etc/fbtab (vea fbtab(5)):

/dev/ttyv0 0600 /dev/console

Se asegurara que quien sea que escriba un log en /dev/ttyv0 sea el dueño de la consola.

11.12.

¿Por qué mi mouse PS/2 se comporta mal bajo X?

El mouse y el controlador del mouse pueden haberse dessincronizado. En casos raros, el controlador puede también haber reportado erróneamente errores de sincronización:

psmintr: out of sync (xxxx != yyyy)

Si esto sucede, deshabilite el codigo de verificación de sincronización ajustando las banderas del controlador para el controlador del mouse PS/2 a 0x100. Esto puede lograrse más fácilmente añadiendo hint.psm.0.flags="0x100" a /boot/loader.conf y reiniciando.

11.13.

¿Como revierto los botones del mouse?

Escriba xmodmap -e "pointer = 3 2 1". Añada este comando a ~/.xinitrc o ~/.xsession para hacer que esto pase de manera automática.

11.14.

¿Como instalo una splash screen y donde puedo encontrarlas?

La respuesta detallada a esta pregunta puede encontrarse en la sección Splash Screens en tiempo de arranque del manual de FreeBSD.

11.15.

¿Puedo usar las teclas Windows en mi teclado en X?

Si. Use xmodmap(1) para definir que funciones deben realizar las teclas.

Asumiendo que todos los teclados de windows sean estándares, los códigos de teclas para estas tres teclas son los siguientes:

  • 115 — tecla de Windows, entre las teclas Ctrl izquierdo y Alt

  • 116 — tecla de Windows , a la derecha de AltGr

  • 117Menu, a la derecha de Ctrl derecha

Para hacer que la tecla Windowsizquierda imprima una coma, intente esto.

# xmodmap -e "keycode 115 = comma"

Para que los mapeos de teclas de Windows se habiliten automáticamente cada vez que se inicia X, ponga los comandos xmodmap en ~/.xinitrc o, preferiblemente, cree un archivo ~/.xmodmaprc e incluya las opciones de xmodmap, una por línea, luego añada la siguiente línea a ~/.xinitrc:

xmodmap $HOME/.xmodmaprc

Por ejemplo, para mapear las 3 teclas para que sean F13, F14, y F15, respectivamente. Esto haría relativamente simple mapearlas a funciones útiles dentro de aplicaciones o del gestor de ventanas.

Para hacer esto, coloque lo siguiente en ~/.xmodmaprc.

keycode 115 = F13
keycode 116 = F14
keycode 117 = F15

Para el gestor de escritorio x11-wm/fvwm2, uno podría mapear las teclas de manera que F13 iconifique o desiconofique la ventana en la que esta el cursor, F14 traiga la ventana en la que esta el cursor al frente o, si ya se encuentra al frente la lleve al fondo, y F15 haga surgir el menu principal de Workplace incluso si el cursor no esta en el escritorio, lo cual es útil cuando no hay ninguna parte del escritorio visible.

Las siguientes entradas en ~/.fvwmrc implementan la configuración mencionada:

Key F13        FTIWS    A        Iconify
Key F14        FTIWS    A        RaiseLower
Key F15        A        A        Menu Workplace Nop

11.16.

¿Como puedo obtener aceleración de hardware 3D para OpenGL®?

La disponibilidad de la aceleración 3D depende de la versión de Xorg y el tipo de chip de video. Para un chip nVidia, use los controladores binarios provistos por FreeBSD instalando uno de los siguientes ports:

Las ultimas versiones de tarjetas nVidia estan soportadas por el port x11/nvidia-driver.

Los controladores más viejos están disponibles como x11/nvidia-driver-###

nVidia provee información detallada acerca de que tarjeta esta soportada por que controlador en su sitio web: http://www.nvidia.com/object/IO_32667.html.

Para Matrox G200/G400, vea el port x11-servers/mga_hal.

Para ATI Rage 128 y Radeon vea ati(4), r128(4) y radeon(4).

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>.