Esta página web pertenece a un grupo de pequeños proyectos que exploran las características de la placa Smart Zynq.
Este proyecto está también publicado en HelloFPGA, un sitio recomendado para los lectores chinos. También hay un vídeo corto que demuestra el método que se describe en esta página.
Introducción
En los ordenadores con Linux es posible que un programa gráfico abra una ventana en otro ordenador. En otras palabras, el programa (por ejemplo, Google Chrome) puede ejecutarse en un ordenador, mientras que el usuario de ese programa está sentado delante de otro ordenador distinto. También hay soluciones parecidas con Microsoft Windows, pero suelen ofrecer una mala experiencia de uso. Linux está mucho mejor preparado para trabajar desde un lugar remoto.
Esta funcionalidad no se usa con frecuencia, porque normalmente cada persona trabaja en su propio ordenador o portátil. Pero cuando el ordenador no tiene un monitor conectado, esta funcionalidad puede resultar muy útil.
Este tutorial explica cómo ejecutar programas gráficos en Xillinux de modo que el ratón, el teclado y el monitor estén conectados a un ordenador con Microsoft Windows.
El servidor X
La base del escritorio de Linux es X-windows. Es un software muy antiguo, pero sigue funcionando bien hoy en día. A diferencia de los ordenadores con Microsoft Windows, la interfaz gráfica se basa en el servidor X. Este es un programa de ordenador normal (que se ejecuta en espacio de usuario) que implementa un servidor TCP/IP. Normalmente, este servidor escucha en el puerto 6000. Cualquier programa que quiera mostrar una ventana en la pantalla del ordenador se conecta a ese servidor mediante TCP/IP. Toda la información gráfica se envía a través de esa conexión TCP/IP. Las pulsaciones de teclado y el movimiento del ratón del usuario también se transmiten por esa conexión.
El programa que controla la ventana puede ejecutarse en el mismo ordenador o en otro distinto. Eso no importa, porque la conexión se basa en TCP/IP.
En la mayoría de los ordenadores Linux actuales no es posible conectarse al servidor X directamente por TCP/IP desde otro ordenador. Esta opción está desactivada por motivos de seguridad. Por otro lado, existe una alternativa segura para hacer esa conexión entre dos ordenadores Linux: «ssh -X». No obstante, los programas gráficos que se ejecutan en un ordenador Linux suelen poder conectarse a la pantalla de otro ordenador.
Por tanto, resulta útil ejecutar un servidor X en un ordenador con Microsoft Windows. Ese servidor X permite que los programas que se ejecutan en otro ordenador presenten su interfaz gráfica en el ordenador con Microsoft Windows. Voy a presentar dos opciones: en la primera, aparecerá un escritorio Linux completo en el ordenador con Microsoft Windows. En la segunda, se presentará únicamente una ventana perteneciente a un programa que se ejecuta en el ordenador Linux.
Preparativos
En primer lugar, descargue e instale vcxsrv. El procedimiento de instalación es el mismo que con cualquier aplicación de Microsoft Windows.
El siguiente paso es averiguar la dirección IP del ordenador que ejecuta Microsoft Windows: use ipconfig en una ventana del símbolo del sistema (Command Prompt), como se muestra a continuación:
> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 192.168.1.11
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.3
El siguiente paso es apagar el Firewall del Centro de seguridad de Microsoft Defender (Microsoft Windows Defender Firewall). De lo contrario, los programas que se ejecutan en Xillinux no podrán conectarse al servidor X. De hecho, ni siquiera funcionará ping desde Xillinux.
Evidentemente, apagar el firewall hace que el ordenador sea vulnerable a ataques provenientes de la red. Por tanto, se recomienda considerar si la red informática está protegida por un firewall externo antes de hacer esto.
Vaya a «Activar o desactivar el Firewall de Windows Defender».
A continuación, apague el firewall:
Después de apagar el firewall, compruebe que la placa Xillinux puede comunicarse con el ordenador con Microsoft Windows. Por ejemplo, pruebe ping desde Xillinux:
root@localhost:~# ping 192.168.1.11 PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data. 64 bytes from 192.168.1.11: icmp_seq=1 ttl=128 time=0.797 ms 64 bytes from 192.168.1.11: icmp_seq=2 ttl=128 time=0.790 ms 64 bytes from 192.168.1.11: icmp_seq=3 ttl=128 time=0.782 ms ^C --- 192.168.1.11 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.782/0.789/0.797/0.033 ms
Ejecutar un escritorio de Linux en Microsoft Windows
Para iniciar vcxsrv, haga clic en el icono llamado XLaunch.
En la primera ventana emergente:
- Elija One Large Window (una ventana grande).
- En cuanto al número de pantalla (Display number), elija cero. El valor por defecto, -1, permite que el programa elija el número de servidor. Esto puede dar lugar a un comportamiento confuso.
En la segunda ventana emergente: seleccione «Start no client» (no iniciar ningún cliente).
En la tercera ventana emergente: seleccione «disable access control» (deshabilitar el control de acceso). Esto permite conectarse desde la placa Xillinux.
Una vez cerradas estas tres ventanas emergentes, vcxsrv abre una ventana grande y vacía. Todo el contenido de esa ventana es negro.
Ahora llenaremos esta ventana grande con el escritorio de Xillinux. Escriba esto en un shell de la placa Xillinux:
root@localhost:~# DISPLAY=192.168.1.11:0 /etc/X11/Xsession
El escritorio gráfico aparece en el ordenador con Microsoft Windows unos segundos después de ejecutar este comando.
También se puede usar ssh para iniciar el escritorio. Por ejemplo, supongamos que la dirección IP de la placa Xillinux es 192.168.1.123. Se puede usar este comando en una ventana del símbolo del sistema (Command Prompt) del ordenador con Microsoft Windows:
> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 /etc/X11/Xsession"
Antes de usar ssh hay que establecer la contraseña del usuario root.
Tenga en cuenta que es posible usar Copiar dentro de la ventana de vcxsrv y luego usar Pegar en una ventana normal de Microsoft Windows. También funciona al revés.
«/etc/X11/Xsession» es el comando que inicia el escritorio. «DISPLAY=192.168.1.11:0» asigna un valor a una variable de entorno. Esto le dice al programa que se conecte a un ordenador remoto.
La asignación de DISPLAY consta de dos partes. La primera parte es la dirección IP (192.168.1.11 en este ejemplo). La segunda parte es el número de pantalla (Display number). Recuerde que al iniciar vcxsrv, el número de pantalla se fijó en 0. Por eso, la segunda parte de DISPLAY es «:0». Esto indica al cliente TCP que se conecte al puerto 6000. Si se elige otro número de pantalla, hay que cambiar DISPLAY en consecuencia. Por ejemplo, si el número de pantalla es 5, DISPLAY debería ser «192.168.1.11:5». En esa situación, el cliente TCP intentará conectarse al puerto 6005.
Abrir una sola ventana de Linux en Microsoft Windows
Ahora voy a mostrar cómo ejecutar un programa gráfico en Xillinux de modo que la ventana se abra en el ordenador con Microsoft Windows.
Inicie vcxsrv como antes, pero con una diferencia: en lugar de elegir One Large Window, elija Multiple Windows (varias ventanas). Salvo por esta diferencia, haga las mismas elecciones que antes.
A diferencia de antes, no se abrirá ninguna ventana nueva después de las tres ventanas emergentes. Parecerá que no ocurre nada al terminar la configuración. Pero esa impresión es engañosa: el servidor X se está ejecutando y esperando peticiones.
Por ejemplo, pruebe esto en Xillinux:
root@localhost:~# DISPLAY=192.168.1.11:0 gnome-text-editor &
Esto abre un editor de texto en el ordenador con Microsoft Windows. También se puede abrir una ventana de terminal:
root@localhost:~# DISPLAY=192.168.1.11:0 lxterminal &
Abrir una ventana de terminal de esta manera tiene una ventaja: ya no hace falta añadir «DISPLAY=192.168.1.11:0» en lo sucesivo: es el valor por defecto para todos los comandos que se ejecuten dentro de esa terminal.
Como ya se ha mencionado, se puede enviar el comando mediante ssh. Escriba esto en el símbolo del sistema (Command Prompt) de Microsoft Windows para abrir una ventana de terminal:
> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 lxterminal"
Como antes, este ejemplo supone que la dirección IP de la placa Xillinux es 192.168.1.123.
Desgraciadamente, no parece haber una forma sencilla de cerrar el servidor X. Cuando el servidor X se ejecuta en este modo, no hay ninguna ventana que represente al programa. Por tanto, el método para detener el servidor es usar el Administrador de tareas (Task Manager): busque la tarea llamada «VcXsrv windows xserver» y haga clic en «Finalizar tarea» (End Task).





