A Microsoft começou a testar o lançamento de aplicativos Linux GUI no Windows. Isso é implementado com base no subsistema WSL2 (Windows Subsystem for Linux), que a empresa vem desenvolvendo há muitos meses. É de notar que os aplicativos são totalmente integrados com a área de trabalho do Windows, incluindo a colocação de atalhos no menu Iniciar, reprodução de som, gravação de um microfone, aceleração de hardware OpenGL. A exibição de informações sobre o software na barra de tarefas também é implementada, você pode alternar entre os programas por Alt + Tab, os dados entre os aplicativos Linux e Windows podem ser copiados usando a área de transferência.
A interface do aplicativo Linux é exibida na área de trabalho principal do Windows usando o gerenciador composto RAIL-Shell. Ele usa o protocolo Wayland e é baseado na base de código de Weston. A saída é implementada por meio do backend RDP-RAIL (RDP Remote Application Integrated Locally), que não renderiza a área de trabalho, mas redireciona superfícies individuais sobre o canal RDP RAIL para serem exibidas na área de trabalho principal do Windows. Os aplicativos X11 são executados usando o XWayland.
Outros detalhes
A empresa usa uma maneira interessante de produzir som - usando o servidor PulseAudio. O servidor interage com o sistema operacional por meio do protocolo RDP (o plug-in rdp-sink é usado para saída de som e rdp-source para entrada). Este servidor e o XWayland estão alojados em uma minidistribuição WSLGd genérica. Inclui componentes para abstração de subsistemas gráficos e de som.
Tudo isso é baseado na distribuição CBL-Mariner Linux, que a Microsoft também usa - em sua infraestrutura de nuvem. A minidistribuição é lançada usando mecanismos de virtualização. Ao mesmo tempo, o acesso compartilhado entre o ambiente convidado Linux e o host Windows é implementado usando virtio-fs.
Os desenvolvedores escolheram o FreeRDP como o servidor RDP executado no ambiente WSLGd Linux. Para a mesma tarefa, o Widnows OS usa o mstsc. O manipulador WSLDVCPlugin é usado para identificar os aplicativos gráficos Linux disponíveis e exibi-los no menu do Windows. Ele permite que você interaja com distribuições Linux em um ambiente WLS2, fornecendo sockets que tratam de solicitações Wayland, X11 e PulseAudio. As ligações preparadas para WSLGd são licenciadas sob a licença MIT.
Como obtenho acesso a novos recursos?
Para fazer isso, você precisa instalar o Windows 10 Insider Preview pelo menos a versão 21362. Os desenvolvedores prometem que, em um futuro próximo, as edições regulares do Windows serão suficientes para instalar o WSLGd e o usuário não precisará participar do programa Insider Preview .
Instala o WSLGd usando o comando "wsl --install", por exemplo, para Ubuntu - "wsl --install -d Ubuntu". No caso de ambientes WSL2 existentes, WSLGd é instalado por meio do comando "wsl --update" (apenas ambientes WSL2 que usam o kernel Linux são suportados, não chama a conversão). Os aplicativos gráficos são instalados por meio do gerenciador de pacotes regular do kit de distribuição.
WSLGd suporta apenas gráficos 2D. Se você precisa de gráficos 3D baseados em OpenGL, um mecanismo diferente é usado - a GPU virtual (vGPU). Os drivers para ele são fornecidos em três versões - para chips AMD , Intel e NVIDIA... O trabalho com gráficos é realizado fornecendo uma camada com a implementação do OpenGL no topo do DirectX 12. A camada é projetada na forma do driver d3d12, incluído na parte principal do Mesa 21.0, e está sendo desenvolvida em conjunto com a Collabora.
No Linux, a GPU virtual é implementada no dispositivo / dev / dxg com serviços que imitam o Windows Display Driver Model (WDDM) D3DKMT do kernel do Windows. Nesse sistema, o driver estabelece uma conexão com o chip de vídeo físico por meio do barramento VM. Os aplicativos Linux têm o mesmo nível de acesso GPU que os aplicativos nativos do Windows, não há compartilhamento de recursos entre o Windows e o Linux.
Durante o teste de desempenho de um sistema baseado em Surface Book Gen3 com uma GPU Intel, descobriu-se que o benchmark Geeks3D GpuTest mostra 19 FPS no Windows, 18 FPS no Linux. No Mesa, com renderização de software - apenas 1 FPS.
Um pouco de fundo
WSL2 foi disponibilizado para usuários do Windows em 20 de agosto de 2020 - foi quando a Microsoft lançou a atualização cumulativa KB4566116.
Depois de instalá-lo, os usuários do Windows 10, versão 1903 e versão 1909 começaram a testar o WSL2 e as análises foram em sua maioria positivas. Até 20 de agosto, apenas o WSL da primeira versão estava disponível, e apenas no Windows 10 versão 2004.
Quanto à primeira versão do WSL, o trabalho começou há vários anos. O anúncio oficial sobre o subsistema foi feito na conferência Microsoft Build 2016. O anúncio foi curto - então eles falaram sobre os recursos da WSL em alguns minutos. Mas ele causou tanto rebuliço e um afluxo de tráfego para a página com o anúncio de que os organizadores da conferência até suspeitavam que alguém havia organizado um ataque DDoS.
Desde então, o WSL evoluiu muito e agora o subsistema continua a evoluir.