Neste post no estilo “pensando em voz alta” o autor gostaria de comparar o WSL da primeira e segunda versão, visto que há experiência de comunicação.
WSL 1 vs WSL 2, o que me deixou feliz
Fonte do MSDN
1. Usando um kernel Linux real
A inclusão de um kernel Linux real aumentou o IO do sistema de arquivos e as chamadas do sistema.
Um kernel Linux especialmente otimizado faz com que o WSL 2 pareça ser mais rápido do que o WSL 1.
Em algumas tarefas, de acordo com as medições da Microsoft , como descompactar arquivos, o WSL 2 foi 20 vezes mais rápido do que o WSL 1 e cerca de 5 vezes mais rápido quando usado Clone Git e instalação npm.
Você pode passar seu tempo olhando benchmarks aqui e aqui .
2. Suporte de dock nativo.
Em princípio, essa oportunidade apareceu apenas com a WSL 2.
A alegria acabou aí.
WSL 1 vs WSL 2, o que não agradou
Vamos começar com as mais novas muletas da Microsoft e o tipo de inovação que me chateou pessoalmente.
A primeira versão do WSL não usava um kernel Linux real, nem virtualização. WSL era um pouco como Wine, mas não exatamente.
Alguma camada especial foi usada lá para traduzir chamadas de programas Linux para este shell.
Isso, é claro, tornava tudo mais lento, mas também tinha vantagens.
Por exemplo, todos os programas executados no WSL 1 eram visíveis no gerenciador de tarefas, essas tarefas poderiam ser priorizadas e receber kernels específicos para execução.
Além disso, todos os processos da primeira versão do WSL eram visíveis aos antivírus, eles podiam ter ou não acesso às pastas, assim como os programas normais do Windows.
Com o advento do WSL 2, processos específicos nesta máquina virtual não são mais visíveis e a capacidade de proteção contra gravação em pastas também desapareceu. WSL 2 tem acesso ao sistema de arquivos ignorando o Windows Defender. Que vulnerabilidades específicas isso trará no futuro - veremos. Mas o WSL 2 pode se tornar um vetor de ataque para criptografar todo o disco.
A rede também mudou ligeiramente no WSL 2. A primeira versão do WSL tinha uma implementação muito estranha da pilha de rede, ela pendia em uma rede que o próprio Windows usava, além disso, as portas de escuta WSL podiam ser verificadas no Netstat e fechadas com o Firewall do Windows usual.
Agora, no WSL 2 há um switch separado especificamente para WSL, porque agora é uma máquina virtual separada, puro tédio.
Benchmarks
WSL tornou possível usar comandos de WSL diretamente no Windows. Incluindo no PowerShell.
Usando o divino Powerhell, o autor mediu seus programas WSL favoritos, que ele mesmo usa com mais frequência.
Todos os benchmarks usaram Ubuntu 18.04 LTS para WSL1 e WSL2.
Jekyll
Geração de sites. Uma passagem:
WSL1
WSL2
Como você pode ver, WSL2 é muito inferior ao WSL1 ao construir um site usando Jekyll. 1,5 segundos contra 9,6. O resultado é a favor da WSL1. Curiosamente, WSL1 sempre exigiu Sudo para acesso de gravação e não queria gerar sem raiz.
Velocidade de chamada
Aqui testamos a velocidade de chamar o shell e executar um comando simples.
Measure-Command {
[int]$i
do {
$i++
wsl.exe -e 'uname'
} until ($i -eq 20)
}
WSL1
WSL2
WSl2 carrega um pouco mais lento. Isso é completamente imperceptível, já que se tira o resultado de 20 lançamentos.
Git init e Mkdir
Agora vamos vencer o Git init e Mkdir. Crie uma pasta com Mkdir e execute Git init dentro dessa pasta usando WSL.
O código:
Measure-Command {
[int]$i
do {
Set-Location "C:\Users\user\Desktop\TestFolder"
$i++
$Foldername = Get-Random
wsl.exe ''mkdir $Foldername''
Set-Location $Foldername
wsl.exe ''git init''
} until ($i -eq 20)
}
WSL1
WSL2
Os resultados são idênticos.
WSL vs. outras muletas
Então, por que escolher WSL?
WSL 2 ainda mantém a capacidade de usar comandos do Linux diretamente do Windows. É conveniente invocar o Bash diretamente de uma string do explorer.
E, claro, WSL usa o ambiente de sistema operacional padrão que você forneceu, você não precisa usar o odioso Vim de Mingw se estiver acostumado a trabalhar com editores humanos.
Por que é melhor ignorar o WSL.
Libnotify, em WSL1, assim como / proc / sys / fs, estão completamente ausentes em WSL1, como mencionado acima, a primeira versão não usa o mesmo kernel Linux e WSL 2 teve que consertar este batente.
Todas essas bibliotecas apareceram no WSL 2, agora tudo funciona no hipervisor, mas os problemas não diminuíram. A geração automática quando um novo arquivo é criado e às vezes até quando o antigo é alterado não funciona.
Fãs de NPM e outras coisas, só isso, por enquanto, podem contornar WSL, usar soluções desenvolvidas para Windows.
Cool Lay Hack para WSL (͡ ° ͜ʖ ͡ °)
Agora vamos falar sobre o único motivo para instalar WSL - Vlmcsd .
Você deseja ativar sua cópia licenciada do Windows de uma maneira ligeiramente diferente apenas para fins de um experimento científico, mas não deseja usar ativadores KMS estranhos baixados da Internet?
Obrigado Microsoft, você pode usar WSL, aqui está um guia rápido.
Link para o projeto Github , link para lançamentos .
Snap no Ubuntu
Instalar Snap:
sudo apt update
sudo apt install snapd
Instalar vlmcsd:
sudo snap install vlmcsd
Usando ip addr, verificamos o endereço IP no qual o WSL trava e o usamos como um servidor KMS. Aqui está um link para a página do projeto no snapstore .
vlmcsd e Docket em WSL
O mesmo pode ser feito através do próprio Docker, ou WSL e Docker. Aqui está um link para o projeto , não posso explicar melhor.
Lado do Windows:
É assim que se parece a ativação do Windows 10 PRO por meio do KMS.
-ipk-W269N o slmgr.vbs WFGWX-YVC9B-4J6C9-T83GX
o slmgr.vbs -skms 192.168.88.166
o slmgr.vbs -ato
Este método de instalação é adequado apenas para piadas, porque a instância WSL sempre será desligada assim que você fechar sua janela, como no aliás, por enquanto, todo WSL é bom apenas para piadas e Git.
O autor espera que você não esteja muito entediado.