Al momento de escribir estas líneas, prácticamente todo lo que conectamos a nuestros dispositivos es mediante el llamado Universal Serial Bus (USB): cámaras, micrófonos, almacenamiento externo… ¡Es la manera más rápida y segura de sincronizar y respaldar información entre nuestro teléfono móvil y ordenador! ¿Pero qué tiene todo esto que ver con el Windows Subsystem for Linux (WSL2 Ubuntu)? Veamos.

Estudio en WSL2 con Ubuntu: software privativo y libre

De entrada, os dejo un enlace a un artículo publicado en este blog, para así facilitar el conocimiento de la tecnología que iré nombrando. Agregaré más de ellos a lo largo del texto. Tenemos bastante tela que cortar, así que recomiendo una buena y humeante taza de café negro en vuestras manos antes de empezar.

*Las pruebas que he realizado han sido sobre máquinas virtuales (VirtualBox®: se pueden crear, borrar, modificar, etcétera sobre Solid State Drive). 

Breve retrospectiva

Siempre afirmo que «para saber a dónde vamos, necesitamos saber de dónde venimos». Desde 1989 yo he trabajado con los productos que vende la empresa Microsoft Corporation: primero el sistema operativo MS-DOS y su única forma de interacción por línea de comandos y, luego, Microsoft Windows, el cual utiliza, además, el entorno gráfico. Sí, lo sé bien, el MS-DOS® como tal fue eliminado, pero aún quedan sus comandos. Fue sustituido con Powershell®, del cual ya hemos hemos hablado, y es importante para el tema de hoy.

Acabando 2016, Microsoft nos sorprendió con la noticia de que su SQL Server® podía ser ejecutado sobre GNU/Linux. Para mí, que durante muchos años trabajé instalando y manteniendo servidores de datos para mis clientes, fue una noticia impactante. Pero esperad, aún hay más, en mi periplo, descubrí que el BASHware puede afectar a un sistema Windows por medio del WSL. Lo que nos lleva al artículo de hoy, donde  entraremos en el manejo de los dispositivos USB, con particular atención a micrófonos y cámaras web, bajo WSL2 con Ubuntu 20.04.

WSL y WSL2

Recomiendo, de nuevo, el excelente artículo sobre WSL2. Aunque el tiempo ha transcurrido y existen algunos cambios significativos. En aquella oportunidad el WSL2 se instalaba por medio de comandos. Ahora, y quiero recalcarlo, noto que por el Panel de Control de MS Windows, «Programas y características», podemos agregar los dos componentes claves que son Virtual Machine Platform y, obviamente, Windows Subsystem for Linux en el apartado de «Activar o desactivar características de Windows»:

Después de esto se debe reiniciar el sistema operativo, ¡esto es ya idiosincrasia de la casa de Redmond! (Después vendrán muchos reinicios más que dejaré fuera. Estarán implícitos). 

Otro aspecto que fue agregado en julio de 2021 es la posibilidad de agregar las distribuciones Linux que uno desee, directamente, por la línea de comandos en Powershell (dependiendo de la versión y tipo de MS Windows que tengáis instalado).

Para ver las distribuciones disponibles:

wsl --list --online

Para instalar Ubuntu 20.04:

wsl --install -d Ubuntu-20.04

Después de cierto tiempo, dependiendo de la velocidad de descarga de Internet, preguntará por nombre de usuario y contraseña. Inmediatamente mostrará el estado de las actualizaciones para Ubuntu. 

Para configurar WSL2 como predeterminada:

wsl --set-default-version 2

La opción de descargar y usar desde  la Microsoft Store sigue siendo válida y disponible, para Ubuntu 20.04 ocupa casi medio gigabyte de espacio.

La diferencia fundamental entre WSL y WSL2 es que la última descarga es un kernel completo de Linux, pero no un kernel cualquiera, es uno especialmente diseñado para que se acople con el kernel de Windows. Esto quiere decir que las aplicaciones ejecutadas en WSL2 siempre deberán ser «pasadas» -mas no interpretadas, como era en WSL- antes de interactuar con cualquier hardware, USB incluído.

En lo único que WSL supera a WSL2 es el intercambio de ficheros entre los dos sistemas operativos. El resto son todo ventajas y mejoras en WSL2.

Podman en WSL2

Para que os hagáis una idea de lo útil que es incluir un kernel completo de Linux en MS Windows, el software Podman (sucesor de Docker), puede ser ejecutado sobre WSL2. Si aún no sabéis lo que es Podman, haced más café y visitad otro de nuestros artículos.

Modo de desarrollador

Una característica que ofrece Powershell y que podemos usar a nuestro favor, una vez hayamos instalado y configurado WSL2, es el modo de desarrollador. Se accede pulsando la tecla de inicio de Windows, tecleando «Powershell» y escogiendo la configuración de desarrollador. Lo primero es activar el modo de desarrollador y esperar a que se termine de instalar el software necesario.

Este consta de dos componentes principales: 

  • Device Portal.
  • Device Discovery.

El Device Portal abrirá el puerto 50080 (recordad configurar debidamente el Windows Defender Firewall), y desde cualquier navegador web podremos introducir las credenciales configuradas y acceder a una variedad de aspectos que podréis observar en la siguiente imagen.


*Hay un tutorial para establecer conexiones seguras con HTTPS pero no viene al caso para este artículo: 

Guardando las distancias, esto es parecido a lo que ofrece eHorus para una monitorización tanto básica como avanzada, si es utilizado en conjunto con Pandora FMS. He incluído esta característica porque las credenciales configuradas son necesarias para el siguiente punto.

El segundo componente es el Device Discovery que, entre otros aspectos, abrirá un servidor SSH para realizar conexión. 

Esto permite abrir una terminal con la línea de comandos de Windows y, una vez allí, podremos utilizar directamente WSL2 para cualquier tarea que necesitemos desarrollar de manera remota desde otro equipo. En este caso, de ejemplo he utilizado el software PuTTY para conectar desde la máquina real a la máquina virtual Windows 10 con WSL2 instalado y configurado: 

Como veis, una vez se ha establecido la configuración por defecto, solo con escribir el comando wsl estaremos listos en un ambiente Linux, no GNU/Linux sino MSW/Linux.

USB en WSL2

Llegamos al propósito de esta entrada en el blog: el manejo de USB en WSL2. Al momento de redactar estas líneas, hay dos noticias, una mala y otra buena.

  • La mala noticia es que no, por ahora WSL2 es incapaz de ofrecer soporte para USB, así que, por ejemplo, vuestras cámaras y micrófonos conectados por esta vía no estarán disponibles para ser utilizados desde WSL2.
  • La buena noticia es que podemos compilar nuestro propio kernel Linux para WSL2 y tener acceso a algún que otro micrófono o cámara web desde nuestra distribución Linux elegida. ¿Pero qué aplicaciones podríamos usar para ello?

Compilando kernel Linux para WSL2

Antes de hacer cualquier cosa, primero debemos actualizar Ubuntu WSL2 con los comandos de siempre:

$ sudo apt update

$ sudo apt upgrade

Y si creían que con esto era suficiente descarga de software… pues no, ahora se debe instalar lo que yo llamo el entorno de programación (dependencias):

$ sudo apt install build-essential flex bison libssl-dev libelf-dev

Y ahora sí se puede descargar el código fuente del kernel base para Ubuntu en WSL2:

$ sudo git clone https://github.com/microsoft/WSL2-Linux-Kernel.git

Son tres gigabytes a descargar. El código fuente. Brutal. Aunque siempre se puede usar el parámetro git clone -depth=1 <repositorio> , esa opción no la utilicé. Recomiendo al menos 100 gigabytes libres en almacenamiento antes de entrar a la carpeta descargada (repositorio clonado) y ejecutar:

$ make -d KCONFIG_CONFIG=Microsoft/config-wsl

En este punto debo aclarar que encontré muchas opciones de configuración para compilar. Por ejemplo, para instalar el software de manejo de paquetes Snap sobre Debian. Ahora bien, todo esto está excluido del soporte de Microsoft, nada podréis reclamar a esta empresa si algo sale mal en el proceso de compilación.

Para finalizar deberemos apagar WSL2 con el comando wsl –shutdown y copiar el kernel recién compilado en la siguiente vía no sin antes respaldar el kernel original:

C:\Windows\System32\lxss\tools\kernel

A esta altura ya deberíamos poder conectar cualquier micrófono o cámara web y tener acceso desde WSL2… Pero va a ser que no. Resulta que primero debemos conseguir los controladores de hardware para MS Windows, obvio, y luego los de Linux, meterlos en el código fuente estos últimos y volver a compilar de nuevo. Además a eso le sumamos instalar en Ubuntu WSL2:

sudo apt install linux-tools-5.4.0-77-generic hwdata

sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20

Y de paso también se debe instalar del lado de Windows, con un paquete instalador MSI, el proyecto USBIPD-WIN…

Como podemos observar, ya que nos hemos mal acostumbrado a la sencillez gráfica de Windows, si deshabilitamos el USB por el Administrador de dispositivos ningún hardware podrá conectarse con o sin nuestro consentimiento, ya que estará bloqueado a nivel de sistema operativo.

Instalando aplicaciones gráficas en WSL2

Para finalizar, aunque en el caso del instalador de paquetes snap está explícitamente sin soporte alguno en Ubuntu sobre WSL2, otras aplicaciones que interactúan con hardware (como el sonido, por ejemplo), podrán ser instaladas, pero cuando intenten acceder a los ficheros de hardware (recordar que en Linux todo es un fichero) pues sencillamente no encontrarán tales recursos. Es el caso del software espeak:

En teoría, en el blog de Ubuntu se indica que por medio de X Window System Architecture se puede «pasar» la interfaz gráfica de las aplicaciones instaladas en WLS2. Oficialmente Microsoft anunció justo antes de terminar el año 2021 que las siguientes aplicaciones gráficas se pueden ejecutar:

  • Gedit (mi editor de texto GNU gráfico favorito).
  • GIMP (potente para diseño gráfico).
  • Nautilus (explorador de archivos).
  • VLC (reproductor de audio y vídeo).
  • Aplicaciones basadas en X11 (calculadora, reloj, etcétera).
  • Google Chrome (bajo vuestro propio riesgo debido a su gran consumo de RAM y recursos).
  • Microsoft Teams (por cierto, Pandora FMS tiene un conector especial).
  • ¡Incluso Microsoft Edge web browser para Linux!

Pero esto tiene algunos inconvenientes. Primero, se debe tener Windows 11 Build 22000.  Segundo, tener instalados los controladores de hardware de vídeo para WSL2. Tercero, estar inscrito en el programa Windows Insider. ¡Espero os haya gustado la información!


Recursos:

Librería de plugins Pandora FMS

Foro oficial Pandora FMS

Quiero saber MaaS

Nuestro Trial

Shares