WSLG es el subsistema de Windows para Linux GUI y el propósito del proyecto es habilitar el soporte para la ejecución de aplicaciones de GUI de Linux (X11 y Wayland) en Windows en una experiencia de escritorio totalmente integrada.
WSLG proporciona una experiencia integrada para desarrolladores, científicos o entusiastas que prefieren o necesitan ejecutar Windows en su PC, pero también necesitan la capacidad de ejecutar herramientas o aplicaciones que funcionen mejor o exclusivamente en un entorno Linux. Si bien los usuarios pueden lograr esto hoy utilizando una configuración de sistema múltiple, con PC individual dedicada a Windows y Linux, virtual máquina alojando Windows o Linux, o un XServer que se ejecuta en Windows y proyectado en WSL, WSLG proporciona un más integrado, fácil de usar y productivo alternativa.
WSLG se esfuerza por hacer que las aplicaciones GUI de Linux se sientan nativas y naturales de usar en Windows. Desde la integración en el menú de inicio para el lanzamiento hasta aparecer en la barra de tareas, la experiencia de la tabla de alt hasta habilitar las aplicaciones de corte/pegar en Windows y Linux, WSLG permite una experiencia de escritorio sin costuras y las aplicaciones de Windows y Linux de flujo de trabajo.
WSLG es compatible con Windows 11 y Windows 10. Los usuarios de Windows 10 deben asegurarse de que su instalación de Windows 10 esté completamente actualizada visitando Windows Update e instalando todas las actualizaciones disponibles.
WSLG está disponible tanto como parte del soporte de la bandeja de entrada de Windows 11, así como a través del subsistema de Windows para Linux desde la tienda Microsoft. Se recomienda usar la versión de Microsoft Store de WSL, que admite Windows 10 y Windows 11, y contiene la versión más actualizada de WSL y WSLG.
Asegúrese de actualizar su controlador de gráficos al último controlador disponible en el sitio web de su fabricante de GPU para beneficiarse de la aceleración de GPU en su entorno WSL.
Desde un símbolo del sistema con privilegios de administrador, ejecute el comando wsl --install -d Ubuntu
, luego reinicie si se le solicita.
Después de reiniciar la instalación continuará. Se le pedirá que ingrese un nombre de usuario y contraseña. Estas serán sus credenciales de Linux, pueden ser lo que desee y no tienen que coincidir con sus credenciales de Windows.
¡Voilà! ¡WSL y WSLG están instalados y listos para ser utilizados!
Si tiene una instalación WSL existente sin WSLG y desea actualizar la última versión de WSL que incluye WSLG, ejecute el comando wsl --update
desde un símbolo del sistema elevado.
Tenga en cuenta que WSLG solo es compatible con WSL 2 y no funcionará para la distribución de WSL configurada para funcionar en modo WSL 1. Verifique que su distribución de Linux esté configurada para ejecutarse en modo WSL 2, si no cambia a WSL 2. Mientras puede continuar ejecutando Linux Distruy en el modo WSL 1 después de instalar WSLG si así lo desea, una distribución configurada para ejecutar en modo WSL 1 No podrá comunicarse con WSLG y no podrá ejecutar aplicaciones GUI.
Puede enumerar su distribución actualmente instalada y la versión de WSL, están configurados para usar el siguiente comando desde un símbolo del sistema elevado.
wsl -- list - v
Si se ejecuta en el modo de la versión 1, cambie a la versión 2. Esto puede llevar un tiempo.
wsl -- set-version _distro_name_ 2
Reinicie WSL ejecutando este comando desde un símbolo del sistema elevado, asegúrese de guardar cualquier trabajo pendiente primero:
wsl -- shutdown
Para actualizar la última versión de WSL y WSLG lanzada para la vista previa, simplemente ejecute wsl --update
desde un símbolo del sistema elevado o PowerShell.
Deberá reiniciar WSL para que los cambios entren en vigencia. Puede reiniciar WSL ejecutando wsl --shutdown
desde un símbolo del sistema elevado. Si WSL se estaba ejecutando actualmente, cerrará, ¡asegúrese de guardar primero cualquier trabajo en progreso! WSL se reiniciará automáticamente la próxima vez que inicie una aplicación o terminal WSL.
Si ha instalado la distribución de Ubuntu
Linux según estas instrucciones, encontrará un icono Ubuntu
en su menú de inicio, lóbelo. Esto lanzará la VM WSL 2, lanzará la distribución de Ubuntu WSL en esa VM y le dará un terminal para interactuar con él. ¡Voilà! ¡Estás ejecutando Linux en Windows!
Si desea explorar distribuciones de Linux adicionales creadas para WSL, puede usar el comando wsl --list --online
desde un símbolo del sistema elevado para enumerar la lista de distribuciones disponibles para su sistema. Puede tener múltiples distribuciones de Linux instaladas dentro de WSL y felizmente coexistirán de lado a lado, así que no tenga miedo de experimentar y probar las cosas.
¡Felicidades, ya está listo y listo para usar aplicaciones GUI!
Si desea comenzar con algunas aplicaciones GUI, puede ejecutar los siguientes comandos desde su terminal Linux para descargar e instalar algunas aplicaciones populares. Si está utilizando una distribución diferente a la de Ubuntu, puede estar utilizando un administrador de paquetes diferente.
# # Update list of available packages
sudo apt update
# # Gedit
sudo apt install gedit - y
# # GIMP
sudo apt install gimp - y
# # Nautilus
sudo apt install nautilus - y
# # VLC
sudo apt install vlc - y
# # X11 apps
sudo apt install x11 - apps - y
# # Google Chrome
cd / tmp
sudo wget https: // dl.google.com / linux / direct / google - chrome - stable_current_amd64.deb
sudo dpkg - i google - chrome - stable_current_amd64.deb
sudo apt install -- fix - broken - y
sudo dpkg - i google - chrome - stable_current_amd64.deb
# # Microsoft Teams
cd / tmp
sudo curl - L - o " ./teams.deb " " https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb "
sudo apt install . / teams.deb - y
# # Microsoft Edge Dev Browser
sudo curl https: // packages.microsoft.com / repos / edge / pool / main / m / microsoft - edge - dev / microsoft - edge - dev_118. 0.2060 . 1 - 1_amd64.deb - o / tmp / edge.deb
sudo apt install / tmp / edge.deb - y
Una vez que se instalen estas aplicaciones, las encontrará en su menú de inicio bajo el nombre de distribución. Por ejemplo, Ubuntu -> Microsoft Edge
. También puede iniciarlos desde la ventana de su terminal usando los comandos:
xcalc
, xclock
, xeyes
gimp
gedit ~/.bashrc
nautilus
vlc
google-chrome
teams
microsoft-edge
La distribución del usuario es esencialmente la distribución de WSL que está utilizando para su trabajo de Linux. Puede usar el comando wsl --list --online
desde un símbolo elevado del sistema de Windows para enumerar las distribuciones WSL disponibles en su sistema. Puede ejecutar múltiples distribuciones del usuario lado a lado y coexistirán pacíficamente, así que no tenga miedo de probar una nueva distribución. Cada distribución del usuario se combinará con una instancia única de la distribución del sistema, pero aún puede interactuar a través de aplicaciones GUI que se ejecutan en diferentes distribución del usuario sin problemas, como cortar/pegar entre ellas. La contenedores subyacentes de los diversos espacio de usuario debe ser invisible para usted.
Todas las distribuciones de usuario y sistema para un usuario de Windows en particular se ejecutan dentro de la misma máquina virtual WSL en una sola instancia del núcleo de Linux. Diferentes usuarios de Windows en una PC tienen su propia VM e instancia de WSL. Se garantiza que su entorno de Linux siempre será suyo y no se comparte con otros usuarios de Windows en la misma PC.
La distribución del sistema es donde sucede toda la magia. La distribución del sistema es un entorno de Linux en contenedores donde se ejecutan WSLG XServer, Wayland Server y Pulse Audio Server. El socket de comunicación para cada uno de estos servidores se proyecta en la distribución del usuario para que las aplicaciones de clientes puedan conectarse a ellos. Preconfiguramos la pantalla de las variables de entorno de distribución del usuario, Wayland_Display y Pulse_Server para referir estos servidores de forma predeterminada, por lo que WSLG se ilumina fuera de la caja.
Los usuarios que desean usar servidores diferentes al proporcionado por WSLG pueden cambiar estas variables de entorno. El usuario también puede optar por desactivar la distribución del sistema por completo agregando la siguiente entrada en su archivo .wslconfig
(ubicado en c:usersMyUser.wslconfig
). Esto desactivará el soporte para aplicaciones GUI en WSL.
[wsl2]
guiApplications=false
La distribución del sistema se basa en el Microsoft CBL-Mariner Linux. Este es un entorno mínimo de Linux, lo suficiente para ejecutar las diversas piezas de WSLG. Para obtener detalles sobre cómo construir e implementar una distribución del sistema privado, consulte nuestras instrucciones de compilación.
Cada distribución del usuario de WSL 2 se combina con su propia instancia de la distribución del sistema. La distribución del sistema se ejecuta parcialmente aislada de la distribución del usuario a la que está emparejada, en su propio espacio de nombres NS/PID/UTS, pero comparte otros espacios de nombres como IPC, para permitir la optimización de la memoria compartida en el límite.
Si bien un usuario puede obtener un terminal en la distribución del sistema, la distribución del sistema no debe ser utilizada directamente por los usuarios. Cada instancia de la distribución del sistema se carga de solo lectura desde su respaldo VHD. Cualquier modificación, realizada en la instancia en memoria de la distribución del sistema (como instalar nuevos paquetes o crear un archivo nuevo), se descartan de manera efectiva cuando se reinicia WSL. La razón por la que hacemos esto es habilitar un modelo de servicio para la distribución del sistema, donde reemplazamos el anterior con el nuevo sin tener que preocuparse por migrar los datos de los usuarios contenidos. Utilizamos un mapeo de solo lectura de modo que el usuario obtenga un comportamiento de descarte bien conocido en cualquier cambio, cada vez que se reinicia WSL, en lugar de recibir una sorpresa cuando WSL recibe servicio.
Aunque Microsoft publicó WSLG System Distro como de solo lectura, queremos alentar a las personas a jugar con él y experimentar. Aunque esperamos que muy pocas personas realmente necesiten o quieran hacer eso, hemos compartido instrucciones detalladas sobre nuestra página contribuyente sobre cómo construir e implementar una versión privada de la distribución del sistema. La mayoría de los usuarios que solo desean usar aplicaciones GUI en WSL no necesitan preocuparse por esos detalles.
WSLGD es el primer proceso en lanzar después de Init . WSLGD lanza Weston (con Xwayland), PULSEAUDIO y establece la conexión RDP lanzando MSTSC.exe en el host en modo silencioso. La conexión RDP permanecerá activa y lista para mostrar una nueva solicitud de GUI que se lanzará en un momento, sin ningún retraso en el establecimiento de la conexión. WSLGD luego monitorea estos procesos y si salen por error (por ejemplo, como resultado de un bloqueo), los reinicia automáticamente.
Weston es el compositor de referencia del Proyecto Wayland y el corazón de WSLG. Para WSLG, hemos extendido el backend existente de RDP de Libweston para enseñarle cómo aplicaciones remotas en lugar de monitorear/escritorio. También le hemos agregado diversas funcionalidades, como soporte para monitores múltiples, corte/pasta, audio en/out, etc.
La integración de la aplicación se logra a través de una tecnología RDP llamada Rail (aplicación remota integrada localmente) y Vail (aplicación virtualizada integrada localmente). La principal diferencia entre Rail y Vail es cómo se transportan los píxeles a través del servidor RDP al cliente RDP. En el riel, se supone que el servidor y el cliente se ejecutan en diferentes sistemas físicos que se comunican a través de la red y, por lo tanto, los píxeles deben copiarse a través del transporte RDP. En Vail, se entiende que el servidor y el cliente están en el mismo sistema físico y pueden compartir memoria en el límite de VM de invitado/host. Hemos agregado soporte tanto para Rail como para Vail al backend de Libweston RDP, aunque para WSLG solo el soporte de Vail se usa de manera efectiva. Mientras construimos WSLG, primero implementamos Rail mientras las piezas necesarias que permitían el cambio a Vail se desarrollaban en paralelo. Decidimos mantener ese soporte, ya que podría reutilizar en otros escenarios interesantes fuera de WSLG, por ejemplo, para controlar la aplicación de un PI que ejecuta Linux. Para compartir la memoria entre el host de Linux y Windows, usamos Virtio-FS.
Weston es modular y tiene varias conchas hoy, como la carcasa de escritorio, la carcasa de pantalla completa (también conocido como quiosco) y shell automativo. Para WSLG presentamos una nueva carcasa llamada Shell Rail. El propósito de la carcasa del riel es ayudar con la extracción de ventanas individuales de Linux a Windows, como tal, el shell es muy simplista y no implica ningún widgets real o píxeles de propiedad de shell.
Weston aprovecha a FreerDP para implementar su servidor Backend RDP. FreerDP se usa para codificar todas las comunicaciones que van del servidor RDP (en Weston) al cliente RDP (MSTSC en Windows) de acuerdo con las especificaciones del protocolo RDP. También se usa para decodificar todo el tráfico que proviene del cliente RDP al servidor RDP.
Para audio en (micrófono) y salida (altavoces/auriculares) WSLG ejecuta un servidor Pulseaudio. WSLG utiliza un complemento de sumidero para Audio Out, y un complemento de origen para Audio In. Estos complementos transfieren las muestras de audio de manera efectiva entre el Pulserver y el servidor Weston RDP. El servidor Weston RDP fusionan las transmisiones de audio en el transporte RDP, habilitando efectivamente el audio en/out en el backend de Weston RDP en todos los escenarios (escritorio/riel/vil estilo remoto), incluido WSLG.
WSLG utiliza un canal virtual RDP personalizado entre el servidor Weston RDP y el cliente MSTSC RDP que se ejecuta en el host de Windows. Weston utiliza este canal para enumerar todas las aplicaciones GUI de Linux (es decir, aplicaciones que tienen una entrada de archivo de escritorio de GUI de tipo) junto con su línea de comando de lanzamiento e icono. El código abierto WSLDVCPlugin procesa la lista de aplicaciones GUI de Linux enviadas a través de este canal y crea enlaces para ellos en el menú de inicio de Windows.
Si bien WSLG funciona con o sin soporte de GPU virtual, si tiene la intención de ejecutar aplicaciones intensivas de gráficos como Blender o Gazebo, es mejor ejecutar un sistema con una GPU y un controlador que pueda admitir WSL. Una descripción general de nuestra arquitectura VGPU y cómo hacemos posible que las aplicaciones de Linux accedan a la GPU en WSL están disponibles en nuestro blog de DirectX.
El apoyo para la representación acelerada de OpenGL es posible a través del trabajo que nuestro equipo D3D ha realizado con Collabora y la comunidad Mesa sobre la creación de un conductor de galio D3D12.
El soporte para Linux, incluido el soporte para WSLG, ha sido aguas arriba y parte del lanzamiento de Mesa 21.0. Para aprovechar esta aceleración, deberá actualizar la versión de MESA instalada en su distribución del usuario. También requiere que su proveedor de distribución elija construir y publicar el nuevo controlador de Gallium D3D12 en su repositorio de paquetes. Estamos trabajando con los diversos editores de distribución de WSL para informarles de estos cambios.
Tenga en cuenta que para la primera versión de WSLG, VGPU interportan con el compositor de Weston a través de la memoria del sistema. Si se ejecuta en una GPU discreta, esto significa efectivamente que los datos renderizados se copian de VRAM a la memoria del sistema antes de presentarse al compositor dentro de WSLG, y se carga en la GPU nuevamente en el lado de Windows. Como resultado, existe una multa de rendimiento proporcional a la tasa de presentación. A velocidades de cuadro muy altas, como 600 fps en una GPU discreta, esa sobrecarga puede ser tan alta como 50%. A una velocidad de fotogramas más baja o en GPU integrada, el rendimiento mucho más cercano al nativo se puede lograr según la carga de trabajo. El uso de un VGPU todavía proporciona un rendimiento muy significativo y una mejora de la experiencia sobre el uso de un renderizador de software a pesar de esta limitación de V1.
WSLG se basa en el gran trabajo de la comunidad de Linux y utiliza una gran cantidad de proyectos de código abierto. La mayoría de los componentes se usan como es de su versión aguas arriba y no requirieron ningún cambio para iluminarse en WSLG. Algunos componentes en el corazón de WSLG, en particular Weston, FreerDP y Pulseaudio, requirieron cambios para habilitar la rica integración de WSLG. Estos cambios aún no son aguas arriba. Microsoft está trabajando con la comunidad para compartir estas contribuciones con cada proyecto de modo que, con el tiempo, WSLG se puede construir a partir del componente aguas arriba directamente, sin la necesidad de modificaciones específicas de WSLG.
Todas estas contribuciones en el vuelo se mantienen en Microsoft Mirror Repos. Mantenemos estos espejos actualizados con versiones aguas arriba y organizamos nuestros cambios de WSLG en esos repos. WSLG extrae y construye código de estos reposadores de espejo como parte de nuestras versiones de vista previa de WSLG Insider. Estos espejos son públicos y accesibles para todos. Los desarrolladores curiosos pueden echar un vistazo a las primeras etapas de nuestra contribución al observar el código en esos espejos, teniendo en cuenta que la versión final del código probablemente se verá diferente una vez que la contribución llegue al proyecto aguas arriba y se adapte en función de los comentarios recibidos por Los diversos propietarios de proyectos. Todos nuestros espejos siguen el mismo modelo. Hay una rama principal que corresponde a la rama aguas arriba en nuestro último punto de sincronización. Actualizamos la rama principal de vez en cuando para elegir la actualización del proyecto ascendente. También hay una rama de trabajo que contiene todos nuestros cambios en el vuelo. WSLG se construye utilizando la rama de trabajo de cada uno de los proyectos de espejo.
Los proyectos por los que WSLG mantiene los espejos cambiarán con el tiempo a medida que evolucionen las contribuciones en vuelo. Una vez que algunas contribuciones están aguas arriba, es posible que ya no sea necesario mantener un espejo, momento en el que se eliminará y WSLG comenzará a aprovechar la versión aguas arriba del componente directamente. A medida que iluminamos una nueva funcionalidad en WSLG, se pueden introducir nuevos espejos a las contribuciones escénicas a nuevos componentes. Como tal, espere que la lista de espejos cambie las horas extras.
En este momento, tenemos los siguientes espejos del proyecto para las contribuciones actualmente en vuelo.
Proyecto | Repositorio aguas arriba | Espejo WSLG |
---|---|---|
Weston | https://github.com/wayland-project/weston | https://github.com/microsoft/weston-mirror |
Freerdp | https://github.com/freerdp/freerdp | https://github.com/microsoft/freerdp-mirror |
Pulseaudio | https://github.com/pulseaudio/pulseaudio | https://github.com/microsoft/pulseaudio-mirror |
La siguiente es una descripción general de alto nivel de las contribuciones actualmente en vuelo a cada proyecto contenido en estos espejos.
WSLG aprovecha a Weston como el compositor de Wayland que cierra los mundos de Linux y Windows utilizando la tecnología RDP para contenido remoto de la aplicación entre ellos. Weston ya tenía un backend de RDP, pero se limitaba a un solo monitor de control remoto. Hemos mejorado en gran medida que el backend de RDP incluya una funcionalidad avanzada, como soporte de monitores múltiples, integración del portapapeles para copiar/pegar y audio en/out. Hemos habilitado nuevos modos de remota llamados Rail (aplicación remota integrada localmente) y Vail (aplicación virtualizada integrada localmente), donde las aplicaciones individuales, en lugar de las computadoras de escritorio/monitores, están remotadas. Estos cambios no son específicos de WSLG; Agregan la funcionalidad al Backend RDP existente y también son reutilizables en otros escenarios (es decir, utilizando el New Weston RDP Backend a la aplicación remota que se ejecuta en un Raspberry Pi a otro dispositivo que ejecuta un cliente RDP).
Para habilitar una rica integración en WSLG, también hemos agregado un pequeño complemento al Backend RDP específico para WSLG. En Weston, el complemento es responsable de adjuntar a la distribución del usuario y buscar aplicaciones instaladas (también conocido como el archivo de escritorio). El complemento envía al host de Windows una lista de todas las aplicaciones encontradas junto con sus comandos e íconos de lanzamiento. En el host de Windows, una parte de complemento MSTSC de código abierto del proyecto WSLG utiliza esa información para crear accesos directos para estas aplicaciones Linux en el menú de inicio de Windows.
También hemos solucionado varios errores que afectan varias aplicaciones. En general, estos fueron problemas que afectaron a Weston en todos los modos y no eran específicos de WSLG.
Weston actualmente usa FreerDP para su backend RDP. WSLG continúa aprovechando FreerDP y hemos agregado soporte para un nuevo protocolo/canal RDP para habilitar el escenario optimizado de Vail, así como soporte para el complemento WSLG. También hemos solucionado varios errores que impactaron las interpelaciones con MSTSC o causando inestabilidad.
Para PulseAudio, nuestras contribuciones se centraron en un fregadero y un complemento fuente que baraja los datos de audio entre PulseAudio y el backend de Weston RDP de modo que los datos de audio se pueden integrar a través de la conexión RDP de regreso al host. No hay cambios en el núcleo de Pulseaudio fuera de agregar estos nuevos complementos.
Si desea jugar o contribuir a WSLG, consulte nuestra página contribuyente para obtener detalles, incluida cómo construir y ejecutar una versión privada de WSLG.
Para cuestiones no relacionadas con la seguridad, como informar un error o hacer una sugerencia para una nueva característica, utilice el rastreador de problemas de este proyecto.
Para informar problemas de seguridad con WSLG o cualquier otro producto de Microsoft, siga las instrucciones detalladas aquí.
Este proyecto puede contener marcas comerciales o logotipos para proyectos, productos o servicios. El uso autorizado de marcas o logotipos de Microsoft está sujeto y debe seguir las pautas de marca y marca de Microsoft. El uso de marcas registradas de Microsoft o logotipos en versiones modificadas de este proyecto no debe causar confusión o implicar el patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de esas partes de terceros.