O WSLG é abreviado para o subsistema do Windows para a GUI do Linux e o objetivo do projeto é permitir o suporte para executar aplicativos Linux GUI (X11 e Wayland) no Windows em uma experiência de desktop totalmente integrada.
O WSLG fornece uma experiência integrada para desenvolvedores, cientistas ou entusiastas que preferem ou precisam executar o Windows em seu PC, mas também precisam da capacidade de executar ferramentas ou aplicativos que funcionam melhor ou exclusivamente em um ambiente Linux. Embora os usuários possam fazer isso hoje usando uma configuração de múltiplos sistemas, com PC individual dedicado ao Windows e Linux, hospedagem de máquinas virtuais, Windows ou Linux ou um XServer em execução no Windows e projetado no WSL, o WSLG fornece um mais integrado, amigável e produtivo e produtivo alternativa.
O WSLG se esforça para fazer com que os aplicativos da GUI do Linux pareçam nativos e naturais de usar no Windows. Desde a integração no menu Iniciar para lançar até aparecer na barra de tarefas, experiência de alt-tab para ativar o corte/colar nos aplicativos Windows e Linux, o WSLG permite uma experiência de desktop perfeita e aplicativos de alavancagem de fluxo de trabalho e linux.
O WSLG é suportado no Windows 11 e no Windows 10. Os usuários do Windows 10 devem garantir que sua instalação do Windows 10 esteja totalmente atualizada visitando o Windows Update e instalando todas as atualizações disponíveis.
O WSLG está disponível como parte do suporte da caixa de entrada Windows 11 WSL, bem como através do subsistema do Windows para Linux da Microsoft Store. É altamente recomendável usar a versão da Microsoft Store do WSL, que suporta o Windows 10 e o Windows 11, e contém a versão mais atualizada do WSL e WSLG.
Atualize seu driver gráfico para o driver mais recente disponível no site do fabricante da GPU para se beneficiar da aceleração da GPU em seu ambiente WSL.
A partir de um prompt de comando com privilégios de administrador, execute o comando wsl --install -d Ubuntu
e depois reinicie se solicitado.
Após a reinicialização, a instalação continuará. Você será solicitado a inserir um nome de usuário e senha. Essas serão suas credenciais do Linux, elas podem ser o que você quiser e não precisam corresponder às suas credenciais do Windows.
Voilà! WSL e WSLG estão instalados e prontos para serem usados!
Se você possui uma instalação WSL existente sem o WSLG e deseja atualizar para a versão mais recente do WSL, que inclui WSLG, execute o comando wsl --update
a partir de um prompt de comando elevado.
Observe que o WSLG é compatível apenas com o WSL 2 e não funcionará para a distribuição WSL configurada para funcionar no modo WSL 1. Verifique se o seu Distro Linux está configurado para executar no modo WSL 2, se não for alterado para o WSL 2. Embora você possa continuar executando o Distro Linux no modo WSL 1 após a instalação do WSLG, se você desejar, um distro configurado para executar no modo WSL 1 Não será capaz de se comunicar com o WSLG e não poderá executar aplicativos da GUI.
Você pode listar o seu distro instalado no momento e a versão do WSL, eles estão configurados para usar o seguinte comando de um prompt de comando elevado.
wsl -- list - v
Se estiver em execução no modo versão 1, mude para a versão 2. Isso pode demorar um pouco.
wsl -- set-version _distro_name_ 2
Reinicie o WSL executando este comando de um prompt de comando elevado, economize qualquer trabalho pendente primeiro:
wsl -- shutdown
Para atualizar para a versão mais recente do WSL e WSLG lançados para visualização, basta executar wsl --update
a partir de um prompt de comando elevado ou PowerShell.
Você precisará reiniciar o WSL para que as alterações entrem em vigor. Você pode reiniciar o WSL executando wsl --shutdown
a partir de um prompt de comando elevado. Se o WSL estivesse em execução atualmente, ele será encerrado, certifique -se de salvar qualquer trabalho em andamento! O WSL será reiniciado automaticamente na próxima vez que você iniciar um aplicativo ou terminal WSL.
Se você instalou o Ubuntu
Linux Distro de acordo com essas instruções, encontrará um ícone Ubuntu
no menu Iniciar, iniciará -o. Isso iniciará a VM WSL 2, iniciará a distro WSL Ubuntu nessa VM e fornecerá um terminal para interagir com ela. Voilà! Você está executando o Linux no Windows!
Se você deseja explorar distribuições Linux adicionais construídas para WSL, pode usar o comando wsl --list --online
de um prompt de comando elevado para enumerar a lista de distribuições disponíveis para o seu sistema. Você pode ter várias distribuições Linux instaladas no WSL e elas coexistirão com prazer lado a lado; portanto, não tenha medo de experimentar e experimentar as coisas.
Parabéns que você terminou e pronto para usar aplicativos GUI!
Se você deseja começar com alguns aplicativos da GUI, poderá executar os seguintes comandos do seu terminal Linux para baixar e instalar alguns aplicativos populares. Se você estiver usando uma distribuição diferente do Ubuntu, ele pode estar usando um gerenciador de pacotes 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
Depois que esses aplicativos forem instalados, você os encontrará no menu Iniciar no nome da distro. Por exemplo, Ubuntu -> Microsoft Edge
. Você também pode iniciá -los na janela do seu terminal usando os comandos:
xcalc
, xclock
, xeyes
gimp
gedit ~/.bashrc
nautilus
vlc
google-chrome
teams
microsoft-edge
A distração do usuário é essencialmente a distribuição WSL que você está usando para o seu trabalho Linux. Você pode usar o comando wsl --list --online
a partir de um prompt de comando Windows elevado para listar as distribuições WSL disponíveis no seu sistema. Você pode executar várias distribuições de usuário lado a lado e elas coexistirão pacificamente; portanto, não tenha medo de experimentar uma nova distro. Cada distro do usuário será emparelhada com uma instância exclusiva da distração do sistema, mas você ainda pode interagir nos aplicativos GUI em execução em diferentes distroções de usuários sem problemas, como recortar/colar entre eles. A contêiner subjacente dos vários espaço do usuário deve ser invisível para você.
Todas as distribuições de usuário e sistema para um usuário do Windows específico são executadas na mesma máquina virtual WSL em relação a uma única instância do kernel Linux. Diferentes usuários do Windows em um PC têm sua própria VM e instância do WSL. Seu ambiente Linux é garantido sempre para ser o seu e não compartilhado com outros usuários do Windows no mesmo PC.
A distração do sistema é onde toda a mágica acontece. O System Distro é um ambiente Linux em contêiner, onde o WSLG XServer, o Wayland Server e o Pulse Audio Server estão em execução. O soquete de comunicação para cada um desses servidores é projetado na distração do usuário para que os aplicativos do cliente possam se conectar a eles. Preparamos as variáveis de ambiente de distração do usuário, Wayland_Display e Pulse_Server para consultar esses servidores por padrão, para que o WSLG acenda a caixa.
Os usuários que desejam usar servidores diferentes dos fornecidos pelo WSLG podem alterar essas variáveis de ambiente. O usuário também pode optar por desativar a distribuição do sistema inteiramente adicionando a seguinte entrada em seu arquivo .wslconfig
(localizado em c:usersMyUser.wslconfig
). Isso desativará o suporte para aplicativos da GUI no WSL.
[wsl2]
guiApplications=false
A distração do sistema é baseada no Microsoft CBL-Mariner Linux. Este é um ambiente Linux mínimo, apenas o suficiente para executar as várias peças do WSLG. Para obter detalhes sobre como criar e implantar uma distração do sistema privado, consulte nossas instruções de construção.
Cada distro do usuário do WSL 2 é emparelhada com sua própria instância da distro do sistema. A distração do sistema é executada parcialmente isolada da distro do usuário para a qual está emparelhada, em seu próprio espaço para nome de NS/PID/UTS, mas compartilha outros espaços para nome, como o IPC, para permitir a otimização de memória compartilhada em todo o limite.
Embora um usuário possa colocar um terminal na distração do sistema, a distro do sistema não deve ser usada diretamente pelos usuários. Todas as instâncias da distro do sistema são carregadas somente leitura a partir de seu VHD de apoio. Quaisquer modificações, feitas na instância na memória da distro do sistema (como a instalação de novos pacotes ou a criação de um novo arquivo), são efetivamente descartadas quando o WSL é reiniciado. O motivo pelo qual fazemos isso é ativar um modelo de manutenção para a distração do sistema, onde substituímos o antigo pelo novo sem precisar se preocupar em migrar nenhum dado do usuário contido no interior. Utilizamos um mapeamento somente leitura para que o usuário obtenha um comportamento de descarte bem conhecido em quaisquer alterações, sempre que o WSL é reiniciado, em vez de obter uma surpresa quando o WSL é atendido.
Embora a Microsoft tenha publicado o WSLG System Distro como somente leitura, queremos incentivar as pessoas a mexer com ela e experimentar. Embora esperamos que muito poucas pessoas realmente precisam ou querem fazer isso, compartilhamos instruções detalhadas sobre nossa página contribuinte sobre como criar e implantar uma versão privada da distro do sistema. A maioria dos usuários que apenas deseja usar aplicativos GUI no WSL não precisa se preocupar com esses detalhes.
O WSLGD é o primeiro processo a ser lançado após o init . O WSLGD lança Weston (com Xwayland), Pulseaudio e estabelece a conexão RDP lançando MSTSC.exe no host no modo silencioso. A conexão RDP permanecerá ativa e pronta para mostrar um novo aplicativo da GUI sendo lançado a qualquer momento, sem qualquer atraso no estabelecimento de conexão. O WSLGD monitora esses processos e, se eles sairem por erro (digamos como resultado de uma falha), ele os reinicia automaticamente.
Weston é o Compositor de Referência do Projeto Wayland e o coração da WSLG. Para o WSLG, estendemos o back -end existente do RDP da LibWeston para ensinar como aplicativos remotos em vez de monitorar/desktop. Também adicionamos várias funcionalidades, como suporte para multimonitor, corte/pasta, entrada/saída de áudio, etc ...
A integração de aplicativos é alcançada por meio de uma tecnologia RDP chamada Rail (Application Remote Integrated Localmente) e Vail (aplicativo virtualizado integrado localmente). A principal diferença entre o Rail e o Vail é como os pixels são transportados pelo servidor RDP para o cliente RDP. No Rail, supõe -se que o servidor e o cliente estejam em execução em diferentes sistemas físicos se comunicando pela rede e, portanto, os pixels precisam ser copiados sobre o transporte RDP. Em Vail, entende -se que o servidor e o cliente estão no mesmo sistema físico e podem compartilhar memória no limite da VM do host/host. Adicionamos suporte para o Rail e o Vail ao back -end do LibWeston RDP, embora para WSLG apenas o suporte do VAIL seja efetivamente usado. Enquanto construímos o WSLG, implementamos o trilho primeiro enquanto as peças necessárias que permitem que o interruptor para Vail estavam sendo desenvolvidas em paralelo. Decidimos manter esse apoio, pois ele poderia reutilizar em outros cenários interessantes fora do WSLG, por exemplo, para aplicar um aplicativo remoto de um PI em execução Linux. Para compartilhar memória entre o host do Linux Guest e o Windows, usamos Virtio-Fs.
A Weston é modular e tem várias conchas hoje, como a concha de desktop, a concha de tela cheia (também conhecida como quiosque) e concha automática. Para o WSLG, introduzimos uma nova concha chamada concha de trilho. O objetivo do shell do trilho é ajudar com o remoto de janelas individuais do Linux ao Windows, pois o shell é muito simplista e não envolve nenhum widgets reais ou pixels de propriedade do Shell.
A Weston aproveita o FreerDP para implementar seu servidor RDP de back -end. O FreerDP é usado para codificar todas as comunicações que vão do servidor RDP (em Weston) ao cliente RDP (MSTSC no Windows) de acordo com as especificações do protocolo RDP. Também é usado para decodificar todo o tráfego proveniente do cliente RDP para o servidor RDP.
Para áudio em (microfone) e out (alto -falantes/fone de ouvido) o WSLG executa um servidor Pulseaudio. O WSLG usa um plug -in de pia para saída de áudio e um plug -in de origem para o áudio. Esses plugins transferem efetivamente amostras de áudio entre o PulseServer e o servidor Weston RDP. Os fluxos de áudio são mesclados pelo servidor Weston RDP no transporte RDP, ativando efetivamente o áudio dentro/saída no back -end do Weston RDP em todos os cenários (desgaste/trilho/remoção do estilo Vail), incluindo WSLG.
O WSLG utiliza um canal virtual RDP personalizado entre o servidor Weston RDP e o cliente MSTSC RDP em execução no host do Windows. Este canal é usado pela Weston para enumerar todos os aplicativos da GUI do Linux (ou seja, aplicativos que possuem uma entrada de arquivo de desktop do tipo GUI) junto com sua linha de comando de lançamento e ícone. O código aberto WSLDVCplugin processa a lista de aplicativos Linux GUI enviados por esse canal e cria links para eles no menu Iniciar do Windows.
Embora o WSLG funcione com ou sem suporte virtual à GPU, se você pretende executar aplicativos intensivos em gráficos, como Blender ou Gazebo, é melhor estar em execução em um sistema com uma GPU e driver que pode suportar WSL. Uma visão geral da nossa arquitetura VGPU e como possibilitamos que os aplicativos Linux acessem a GPU no WSL esteja disponível em nosso blog DirectX.
O apoio à renderização acelerada do OpenGL é possível através do trabalho que nossa equipe D3D fez com a Collabora e a comunidade Mesa na criação de um driver de gálio D3D12.
O suporte ao Linux, incluindo o suporte ao WSLG, tem sido upstream e parte da versão Mesa 21.0. Para aproveitar essa aceleração, você precisará atualizar a versão do MESA instalada em sua distração do usuário. Também exige que seu fornecedor de distro tenha escolhido construir e publicar o novo driver de gálio D3D12 para o repositório de pacotes. Estamos trabalhando com os vários editores da WSL Distro para informá -los sobre essas mudanças.
Observe que, para o primeiro lançamento do WSLG, o VGPU interroia com o Compositor Weston através da memória do sistema. Se estiver em execução em uma GPU discreta, isso significa efetivamente que os dados renderizados são copiados de VRAM para a memória do sistema antes de serem apresentados ao compositor no WSLG e enviados novamente na GPU no lado do Windows. Como resultado, há uma penalidade de desempenho proporcional à taxa de apresentação. Em taxas de quadros muito altas, como 600fps, em uma GPU discreta, essa sobrecarga pode chegar a 50%. Na taxa de quadros mais baixa ou na GPU integrada, o desempenho muito mais próximo do nativo pode ser alcançado, dependendo da carga de trabalho. O uso de um VGPU ainda fornece uma melhoria muito significativa de desempenho e experiência sobre o uso de um renderizador de software, apesar dessa limitação V1.
O WSLG se baseia no excelente trabalho da comunidade Linux e utiliza um grande número de projetos de código aberto. A maioria dos componentes é usada como é a partir de sua versão a montante e não exigiu alterações para iluminar no WSLG. Alguns componentes no coração do WSLG, em particular Weston, FreerDP e Pulseaudio, exigiram alterações para permitir a rica integração WSLG. Essas mudanças ainda não estão upstream. A Microsoft está trabalhando com a comunidade para compartilhar essas contribuições com cada projeto de modo que, com o tempo, o WSLG possa ser construído a partir do componente a montante diretamente, sem a necessidade de modificações específicas do WSLG.
Todas essas contribuições de bordo são mantidas nos repositórios do Microsoft Mirror. Mantemos esses espelhos atualizados com lançamentos a montante e encenamos nossas alterações no WSLG nesses repositórios. O WSLG puxa e cria código a partir desses repositórios de espelho como parte de nossos lançamentos de visualização do WSLG Insider. Esses espelhos são públicos e acessíveis a todos. Os desenvolvedores curiosos podem dar uma olhada nos estágios iniciais de nossa contribuição, olhando o código nesses espelhos, tendo em mente que a versão final do código provavelmente parecerá diferente assim que a contribuição atingir o projeto a montante e ser adaptada com base no feedback recebido por os vários proprietários do projeto. Todos os nossos espelhos seguem o mesmo modelo. Há um ramo principal que corresponde à ramificação a montante em nosso último ponto de sincronização. Atualizamos a filial principal periodicamente para escolher a atualização do projeto Upstream. Há também um ramo de trabalho que contém todas as nossas mudanças de bordo. O WSLG é construído usando o ramo de trabalho de cada um dos projetos de espelho.
Os projetos para os quais o WSLG mantém os espelhos mudarão com o tempo à medida que as contribuições de bordo evoluem. Uma vez que algumas contribuições estiverem a montante, pode não ser mais necessário manter um espelho, quando será removido e o WSLG começará a aproveitar diretamente a versão a montante do componente. À medida que iluminamos novas funcionalidades no WSLG, novos espelhos podem ser introduzidos nas contribuições de estágio para novos componentes. Como tal, espere que a lista de espelhos mude de horas extras.
Neste momento, temos o seguinte projeto reflete as contribuições atualmente de bordo.
Projeto | Repo a montante | Mirror 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 |
A seguir, é apresentada uma visão geral de alto nível das contribuições de voo atualmente para cada projeto contido nesses espelhos.
O WSLG utiliza Weston como o Wayland Compositor que pondera os mundos Linux e Windows usando a tecnologia RDP para o conteúdo remoto de aplicativos entre eles. Weston já tinha um back-end do RDP, mas estava limitado ao remoto monitor-monitor-desktop. Aprimoramos muito o back-end do RDP para incluir funcionalidades avançadas, como suporte a vários monitores, integração da área de transferência para copiar/colar e áudio IN/OUT. Ativamos os novos modos remotos chamados Rail (aplicativo remoto integrado localmente) e Vail (aplicativo virtualizado integrado localmente), onde aplicativos individuais, em vez de desktops/monitores, são remotados. Essas mudanças não são específicas para o WSLG; Eles adicionam funcionalidade ao back -end do RDP existente e também são reutilizáveis em outros cenários (ou seja, usando o novo back -end do Weston RDP para aplicativos remotos em execução em um Raspberry Pi para outro dispositivo executando um cliente RDP).
Para ativar a integração rica no WSLG, também adicionamos um pequeno plug -in ao back -end do RDP específico ao WSLG. Em Weston, o plug -in é responsável por conectar -se à distração do usuário e pela pesquisa de aplicativos instalados (também conhecidos como arquivo da área de trabalho). O plug -in envia ao host do Windows uma lista de todos os aplicativos encontrados junto com seus comandos de lançamento e ícones. No host do Windows, uma parte do plug -in MSTSC de código aberto do projeto WSLG usa essas informações para criar atalhos para esses aplicativos Linux no menu Iniciar o Windows.
Também corrigimos vários bugs que afetam vários aplicativos. Geralmente, esses foram problemas que impactaram Weston em todos os modos e não eram específicos para o WSLG.
Atualmente, a Weston usa o FreerDP para o back -end do RDP. O WSLG continua a aproveitar o FreerDP e adicionamos suporte a um novo protocolo/canal RDP para ativar o cenário otimizado do VAIL, bem como o suporte ao plug -in WSLG. Também corrigimos vários erros que estavam impactando o Interops com o MSTSC ou causando instabilidade.
Para o PULSEAUDIO, nossas contribuições se concentraram em uma pia e um plug -in de origem que embaralham os dados de áudio entre Pulseaudio e o back -end do Weston RDP, de modo que os dados de áudio possam ser integrados sobre a conexão RDP de volta ao host. Não há alterações no núcleo do pulseaudio fora de adicionar esses novos plugins.
Se você deseja mexer ou contribuir para o WSLG, consulte nossa página contribuindo para obter detalhes, incluindo como criar e executar uma versão privada do WSLG.
Para problemas relacionados à segurança, como relatar um bug ou fazer uma sugestão para um novo recurso, use o rastreador de problemas deste projeto.
Para relatar problemas de segurança com a WSLG ou qualquer outro produto da Microsoft, siga as instruções detalhadas aqui.
Este projeto pode conter marcas comerciais ou logotipos para projetos, produtos ou serviços. O uso autorizado de marcas comerciais ou logotipos da Microsoft está sujeito e deve seguir as diretrizes de marca registrada e marca da Microsoft. O uso de marcas comerciais da Microsoft ou logotipos em versões modificadas deste projeto não deve causar confusão ou implicar o patrocínio da Microsoft. Qualquer uso de marcas comerciais ou logotipos de terceiros estão sujeitas às políticas de terceiros.