A Microsoft lançou o release da ferramenta WSL 3.0 (Windows Subsystem for Linux), que permite executar aplicativos Linux no Windows. Esta nova versão se destaca pela implementação da capacidade de iniciar contêineres Linux no Windows e pela migração para o uso do kernel Linux 6.18. O código das utilidades de linha de comando, processos em segundo plano para ambientes Linux, serviços para execução de contêineres e máquinas virtuais, assim como a pilha gráfica wslg, está disponível sob a licença MIT. As mudanças para o kernel Linux são fornecidas sob a licença GPLv2.
O WSL fornece uma máquina virtual com um kernel Linux completo (baseado na versão 6.18), onde distribuições Linux podem ser executadas. O kernel inclui alterações específicas para WSL, como otimizações para reduzir o tempo de inicialização e o consumo de memória, a capacidade de liberar memória ocupada por processos Linux de volta ao Windows e configurações para excluir drivers e subsistemas desnecessários. O sistema é instalado em uma imagem de disco separada (VHD) com um sistema de arquivos ext4 e um adaptador de rede virtual.
A nova versão inclui ferramentas para criar, implantar e executar contêineres Linux no Windows, que incluem a interface de linha de comando wslc (WSL Containers) e uma API associada, permitindo iniciar contêineres Linux a partir de programas Windows. As principais funcionalidades do wslc são:
- Operações para gerenciar o ciclo de vida dos contêineres, como criação, execução, parada, exportação, limpeza, inspeção, verificação de funcionamento, transmissão de eventos de atividade do contêiner, cópia de arquivos para dentro e fora do contêiner.
- Limitação do consumo de CPU e memória para contêineres individuais.
- Criação, upload, envio, importação, salvamento e verificação de imagens de sistema. Comandos para visualizar listas de imagens disponíveis. Operações em lote com várias imagens ao mesmo tempo. Capacidade de empacotar várias imagens em um único arquivo tar.
- Criação e gerenciamento de redes virtuais. Anexação de contêineres a várias redes. Criação de tipos de redes personalizados. Encaminhamento de portas de rede.
- Criação, visualização e remoção de partições. Trabalhando com discos virtuais (VHD).
- Acesso à GPU a partir de contêineres e fornecimento de bibliotecas para que usuários não privilegiados interajam com a GPU.
- Criação de sessões conforme necessário, atribuição de nomes às sessões, localização de armazenamento configurável.
- SDK com API para automação de trabalho com contêineres em programas C++ e C#/WinRT.
- O comando "wslc logs" para visualizar e extrair dados dos logs. Exibição de estatísticas sobre o funcionamento do contêiner. Realce da saída na ferramenta "wslc".
- Integração com MSBuild e CMake.
- Suporte para gerenciamento via políticas de grupo ADMX.
- Suporte à extensão do VS Code dev container para executar e compilar código em desenvolvimento dentro do contêiner.
- Possibilidade de usar wslc como runtime para executar contêineres no kit de ferramentas Aspire.
- Extensão vscode-container-client para gerenciar contêineres a partir do editor de código VS Code.
- Gerenciamento de contêineres wslc através da interface de texto Lazywslc ou do aplicativo desktop WinUI 3.
- Camada para executar contêineres Linux a partir de distribuições Linux em execução no WSL.

Os contêineres utilizam por padrão o sistema de arquivos "virtiofs", que demonstra o dobro da velocidade de acesso aos arquivos do Windows, e o modo de operação de rede "consomme", garantindo melhor compatibilidade com várias configurações de rede (VPN, proxy, etc.). No modo "consomme", o tráfego Linux é redirecionado através do Windows, permitindo que os aplicativos Linux utilizem todos os recursos do ambiente de rede do Windows, incluindo políticas de segurança e ferramentas para integração com sistemas corporativos.
A execução dos contêineres é responsabilidade do serviço Windows privilegiado wslservice.exe, que inicia máquinas virtuais e os utiliza para executar Linux. Diferente do WSL, o serviço wslservice.exe cria para os contêineres um subprocesso wslcsession.exe, executado com os direitos do usuário atual e que se encarrega de operações como criação de contêineres, montagem de diretórios e reencaminhamento de portas de rede. Diferentes sessões são rigidamente isoladas entre si e operam em processos distintos. Cada sessão está vinculada a um armazenamento VHD separado, localizado no diretório %AppData%\Local\wslc\sessions. É possível montar caminhos do Windows em um contêiner Linux para compartilhamento de arquivos.

Fonte: opennet.ru
