
Estaba siguiendo un tutorial de "El semestre perdido"aquí(marca de tiempo incluida en el enlace). Se suponía que debía haber un led
directorio en /sys/class
. Estoy usando WSL2 y no pude encontrar ningún directorio de ese tipo. ¿WSL oculta algunas de las /sys/class
ubicaciones? ¿Y hay alguna forma de acceder a ellos sin tener que realizar un arranque dual en mi máquina?
Respuesta1
Bien quizás,siSu teclado es USB, pero parece que incluso así requerirá algo de esfuerzo. Si se trata de una computadora portátil con un teclado que se conecta internamente a través de un bus que no es USB, entonces, AFAIK, no es posible.
Hay dos versiones de WSL y ninguna permitirá esto "listo para usar".
En un nivel alto, WSL1 "convierte/traduce" llamadas al sistema de Linux al equivalente de Windows. Es una especie de "VINO inverso" en ese sentido. En el lado positivo, estohacele permite acceder directamente a algún hardware físico, pero normalmente sólo de forma limitada.
Por ejemplo,
ip link
en WSL1 se mostrarán todas las interfaces de red disponibles paraventanas, pero no puedes subirlos o bajarlos ni tener realmente ningún otro control sobre ellos.En WSL1, tengo un
/sys/class/backlight
(mencionado justo antes de la marca de tiempo en el video), pero no hay ningunobrightness
allí. Y tampoco tengo/sys/class/backlight/led
WSL1.En WSL1, Microsoft se centró en el85% de las llamadas al sistema Linuxque permitiría a los desarrolladores lograr99% de sus actividades normales. Desafortunadamente, eso no incluye algunas de las cosas más "de esquina", como configurar los LED del teclado.
WSL2 utiliza un kernel de Linux real con cambios menores (contribuidos en sentido ascendente, AFAIK) para admitir la interoperabilidad entre Windows y Linux. Puedes encontrar el repositorio.aquí.
El desafío de hacer esto bajo WSL2 es que Ubuntu esencialmente se ejecuta como un contenedor en un conjunto de espacios de nombres.adentrola máquina virtual WSL2 (a la que no tiene acceso). Dentro de esa VM, hay acceso limitado al hardware físico, incluido, por supuesto, su teclado y sus LED asociados. El propio Windows proporciona la entrada del teclado a Ubuntu a través de [Consola/Terminal de Windows/WSLg/servidor X de terceros/etc.]. Ubuntu no ve un dispositivo de teclado ni LED.
Sin embargo, como @muru menciona a través de un enlace en los comentarios, WSL2 tiene la capacidad deconectarse a dispositivos USB a través de USB/IP. Básicamente, instalasusbipd-winen Windows, comparta el dispositivo allí y conéctese a través
usbip
de Ubuntu. Todo esto está bastante automatizado, por lo que generalmente puede hacerlo mediante un solo comando en Windows/PowerShell, que luego configuraambosextremos de la conexión por usted.Desafortunadamente, incluso con esto implementado (ya tengo USB/IP configurado) y mi teclado USB compartido con Ubuntu, todavía no hay ningún archivo
/sys/class/led
.Yo creo estopuedeser porque el kernel WSL2 no está configurado con
CONFIG_NEW_LEDS
.Puede configurar y compilar su propio kernel WSL2 utilizando esas fuentes, pero no puedo asegurarle que esto le permitirá controlar los LED de su teclado USB a través de USB/IP.
También (importante) tenga en cuenta que, si comparte el teclado a través de USB/IP, puede perder el acceso a él en Windows, lo que significa que ya no podrá escribir. No me di cuenta de esto al principio, ya que estaba conectado a través de Escritorio remoto al sistema con mi teclado USB, pero cuando regresé, me encontré "bloqueado" hasta cierto punto. Sólo asegúrese de tener el teclado en pantalla de Windows (habilite "Teclado táctil" en la configuración de la barra de tareas) para tener una entrada alternativa con la que posteriormentedespegarel teclado desde USB/IP.