Comparação entre o WSL 1 e o WSL 2Comparing WSL 1 and WSL 2

As principais metas da atualização do Subsistema do Windows para Linux para uma nova versão são aumentar o desempenho do sistema de arquivos e dar suporte à compatibilidade completa de chamada do sistema.The primary goals of updating the Windows Subsystem for Linux to a new version are to increase file system performance and support full system call compatibility.

O WSL 2 usa a mais recente e melhor tecnologia de virtualização para executar um kernel do Linux dentro de uma VM (máquina virtual) do utilitário leve.WSL 2 uses the latest and greatest in virtualization technology to run a Linux kernel inside of a lightweight utility virtual machine (VM). No entanto, o WSL 2 não é uma experiência de VM tradicional.However, WSL 2 is not a traditional VM experience. Saiba mais sobre a arquitetura do WSL 2.Learn more about the WSL 2 architecture.

Comparação de recursosComparing features

RecursoFeature WSL 1WSL 1 WSL 2WSL 2
Integração entre o Windows e o LinuxIntegration between Windows and Linux
Tempos de inicialização rápidosFast boot times
Volume de recursos pequenoSmall resource foot print
É executado com as versões atuais do VMWare e do VirtualBoxRuns with current versions of VMWare and VirtualBox
VM gerenciadaManaged VM
Kernel do Linux completoFull Linux Kernel
Compatibilidade total com a chamada do sistemaFull system call compatibility
Desempenho entre sistemas de arquivos do sistema operacionalPerformance across OS file systems

Já está usando o WSL 1 e deseja atualizar para o WSL 2?Already using WSL 1 and want to upgrade to WSL 2? Siga as instruções para atualizar para o WSL 2!Follow the instructions to update to WSL 2!

O WSL 2 só está disponível no Windows 10, versão 1903, Build 18362 ou superior.WSL 2 is only available in Windows 10, Version 1903, Build 18362 or higher. Verifique sua versão do Windows selecionando a tecla do logotipo do Windows + R, digite winver, selecione OK.Check your Windows version by selecting the Windows logo key + R, type winver, select OK. (Ou digite o comando ver no prompt de comando do Windows).(Or enter the ver command in Windows Command Prompt). Você pode precisar atualizar para a última versão do Windows.You may need to update to the latest Windows version. Para builds inferiores ao 18362, não há nenhum suporte para o WSL.For builds lower than 18362, WSL is not supported at all.

Observação

O WSL 2 funcionará com o VMWare 15.5.5+ e o VirtualBox 6+.WSL 2 will work with VMWare 15.5.5+ and VirtualBox 6+.

Usar o sistema de arquivos do Linux para desempenho mais rápidoUse the Linux file system for faster performance

Para otimizar a velocidade de desempenho, armazene os arquivos de projeto no sistema de arquivos do Linux (não no sistema de arquivos do Windows).In order to optimize for the fastest performance speed, be sure to store your project files in the Linux file system (not the Windows file system).

Por exemplo, ao armazenar seus arquivos de projeto do WSL:For example, when storing your WSL project files:

  • Use o diretório raiz do sistema de arquivos do Linux: \\wsl$\Ubuntu-18.04\home\<user name>\ProjectUse the Linux file system root directory: \\wsl$\Ubuntu-18.04\home\<user name>\Project
  • Não o diretório raiz do sistema de arquivos do Windows: C:\Users\<user name>\ProjectNot the Windows file system root directory: C:\Users\<user name>\Project

Os arquivos de projeto com os quais você está trabalhando usando uma distribuição do WSL (como o Ubuntu) devem estar no sistema de arquivos raiz do Linux para aproveitar acesso mais rápido ao sistema de arquivos.Project files that you are working with using a WSL distribution (like Ubuntu) must be in the Linux root file system to take advantage of faster file system access.

Você pode acessar o sistema de arquivos raiz do Linux com aplicativos e ferramentas do Windows, como o Explorador de Arquivos.You can access your Linux root file system with Windows apps and tools like File Explorer. Tente abrir uma distribuição do Linux (como o Ubuntu), verifique se você está no diretório base do Linux digitando este comando: cd ~.Try opening a Linux distribution (like Ubuntu), be sure that you are in the Linux home directory by entering this command: cd ~. Em seguida, abra o sistema de arquivos do Linux no Explorador de Arquivos digitando (não se esqueça do ponto no final) : explorer.exe .Then open your Linux file system in File Explorer by entering (don't forget the period at the end): explorer.exe .

Exceções para uso do WSL 1 em vez do WSL 2Exceptions for using WSL 1 rather than WSL 2

Recomendamos que você use o WSL 2, pois ele oferece desempenho mais rápido e 100% de compatibilidade com a chamada do sistema.We recommend that you use WSL 2 as it offers faster performance and 100% system call compatibility. No entanto, há alguns cenários específicos em que você pode preferir usar o WSL 1.However, there are a few specific scenarios where you might prefer using WSL 1. Considere usar o WSL 1 se:Consider using WSL 1 if:

  • Seus arquivos de projeto devem ser armazenados no sistema de arquivos do Windows.Your project files must be stored in the Windows file system.
    • Se estiver usando sua distribuição do WSL no Linux para acessar arquivos de projeto no sistema de arquivos do Windows e esses arquivos não puderem ser armazenados no sistema de arquivos do Linux, você obterá um desempenho melhor nos sistemas de arquivos do sistema operacional usando o WSL 1.If you will be using your WSL Linux distribution to access project files on the Windows file system, and these files cannot be stored on the Linux file system, you will achieve faster performance across the OS files systems by using WSL 1.
  • Um projeto que requer compilação cruzada usando as ferramentas do Windows e do Linux nos mesmos arquivos.A project which requires cross-compilation using both Windows and Linux tools on the same files.
    • O desempenho de arquivos entre os sistemas operacionais do Windows e do Linux é mais rápido no WSL 1 do que no WSL 2, portanto, se estiver usando aplicativos do Windows para acessar arquivos do Linux, você obterá um desempenho melhor com o WSL 1.File performance across the Windows and Linux operating systems is faster in WSL 1 than WSL 2, so if you are using Windows applications to access Linux files, you will currently achieve faster performance with WSL 1.

Observação

Considere usar a Extensão Remota do WSL do VS Code para permitir que você armazene seus arquivos de projeto no sistema de arquivos do Linux, usando as ferramentas de linha de comando do Linux, mas também usando o VS Code no Windows para criar, editar, depurar ou executar seu projeto em um navegador da Internet sem a lentidão de desempenho associada ao trabalho nos sistemas de arquivos Linux e Windows.Consider trying the VS Code Remote WSL Extension to enable you to store your project files on the Linux file system, using Linux command line tools, but also using VS Code on Windows to author, edit, debug, or run your project in an internet browser without any of the performance slow-downs associated with working across the Linux and Windows file systems. Saiba mais.Learn more.

Arquitetura do WSL 2WSL 2 architecture

Uma experiência de VM tradicional poderá ter inicialização lenta, ser isolada, consumir muitos recursos e requerer seu tempo para gerenciá-la.A traditional VM experience can be slow to boot up, is isolated, consumes lots of resources, and requires your time to manage it. O WSL 2 não tem esses atributos.WSL 2 does not have these attributes.

O WSL 2 fornece os benefícios do WSL 1, incluindo integração direta entre o Windows e o Linux, tempos de inicialização rápidos, um pequeno volume de recursos e não requer nenhuma configuração ou gerenciamento de VM.WSL 2 provides the benefits of WSL 1, including seamless integration between Windows and Linux, fast boot times, a small resource footprint, and requires no VM configuration or management. Embora o WSL 2 use uma VM, ele é gerenciado e executado nos bastidores, deixando você com a mesma experiência do usuário que o WSL 1.While WSL 2 does use a VM, it is managed and run behind the scenes, leaving you with the same user experience as WSL 1.

Kernel do Linux completoFull Linux kernel

O kernel do Linux no WSL 2 é criado pela Microsoft usando a ramificação estável mais recente, com base na origem disponível em kernel.org. Esse kernel foi especialmente ajustado para o WSL 2, otimizando o tamanho e o desempenho para fornecer uma experiência incrível do Linux no Windows.The Linux kernel in WSL 2 is built by Microsoft from the latest stable branch, based on the source available at kernel.org. This kernel has been specially tuned for WSL 2, optimizing for size and performance to provide an amazing Linux experience on Windows. O kernel será atendido pelas atualizações do Windows, o que significa que você obterá as correções de segurança e aprimoramentos de kernel mais recentes sem precisar gerenciá-las por conta própria.The kernel will be serviced by Windows updates, which means you will get the latest security fixes and kernel improvements without needing to manage it yourself.

O kernel do Linux do WSL 2 é de software livre.The WSL 2 Linux kernel is open source. Se você quiser saber mais, confira a postagem no blog Como enviar um kernel do Linux com o Windows escrito pela equipe que o criou.If you'd like to learn more, check out the blog post Shipping a Linux Kernel with Windows written by the team that built it.

Maior desempenho de E/S de arquivoIncreased file IO performance

Operações com uso intensivo de arquivo, como comandos git clone, npm install, apt update, apt upgrade e muito mais, são visivelmente mais rápidas com o WSL 2.File intensive operations like git clone, npm install, apt update, apt upgrade, and more are all noticeably faster with WSL 2.

O aumento da velocidade real dependerá de qual aplicativo você está executando e de como ele está interagindo com o sistema de arquivos.The actual speed increase will depend on which app you're running and how it is interacting with the file system. As versões iniciais do WSL 2 são executadas até 20 vezes mais rapidamente em comparação com o WSL 1 ao desempacotar um tarball compactado e de duas a cinco vezes mais rapidamente ao usar os comandos git clone, npm install e cmake em vários projetos.Initial versions of WSL 2 run up to 20x faster compared to WSL 1 when unpacking a zipped tarball, and around 2-5x faster when using git clone, npm install and cmake on various projects.

Compatibilidade total com a chamada do sistemaFull system call compatibility

Os binários do Linux usam chamadas do sistema para executar funções, como acessar arquivos, solicitar memória, criar processos e muito mais.Linux binaries use system calls to perform functions such as accessing files, requesting memory, creating processes, and more. Enquanto o WSL 1 usava uma camada de conversão criada pela equipe do WSL, o WSL 2 inclui o próprio kernel Linux com compatibilidade total com a chamada do sistema.Whereas WSL 1 used a translation layer that was built by the WSL team, WSL 2 includes its own Linux kernel with full system call compatibility. Os benefícios incluem:Benefits include:

  • Um conjunto totalmente novo de aplicativos que você pode executar dentro do WSL, como o Docker e muito mais.A whole new set of apps that you can run inside of WSL, such as Docker and more.

  • Todas as atualizações para o kernel do Linux estão imediatamente prontas para uso.Any updates to the Linux kernel are immediately ready for use. (Você não precisa esperar que a equipe do WSL implemente atualizações e adicione as alterações).(You don't have to wait for the WSL team to implement updates and add the changes).

O WSL 2 usa uma quantidade menor de memória na inicializaçãoWSL 2 uses a smaller amount of memory on startup

O WSL 2 usa uma VM de utilitário leve em um kernel real do Linux com um pequeno volume de memória.WSL 2 uses a lightweight utility VM on a real Linux kernel with a small memory footprint. O utilitário alocará a memória com suporte de endereço virtual na inicialização.The utility will allocate Virtual Address backed memory on startup. Ela é configurada para começar com uma pequena proporção da memória total em comparação com a necessária para o WSL 1.It is configured to start with a smaller proportion of your total memory that what was required for WSL 1.

Acessar aplicativos de redeAccessing network applications

Como acessar aplicativos de rede do Linux no Windows (localhost)Accessing Linux networking apps from Windows (localhost)

Se você estiver criando um aplicativo de rede (por exemplo, um aplicativo em execução em um NodeJS ou SQL Server) em sua distribuição do Linux, poderá acessá-lo de um aplicativo do Windows (como seu navegador de Internet Microsoft Edge ou Chrome) usando localhost (assim como faria normalmente).If you are building a networking app (for example an app running on a NodeJS or SQL server) in your Linux distribution, you can access it from a Windows app (like your Edge or Chrome internet browser) using localhost (just like you normally would).

No entanto, se você estiver executando uma versão mais antiga do Windows (Build 18945 ou anterior), será necessário obter o endereço IP da VM host do Linux (ou atualizar para a versão mais recente do Windows).However, if you are running an older version of Windows (Build 18945 or less), you will need to get the IP address of the Linux host VM (or update to the latest Windows version).

Para localizar o endereço IP da máquina virtual que está capacitando sua distribuição do Linux:To find the IP address of the virtual machine powering your Linux distribution:

  • Em sua distribuição do WSL (por exemplo, Ubuntu), execute o comando: ip addrFrom your WSL distribution (ie Ubuntu), run the command: ip addr
  • Localize e copie o endereço no valor inet da interface eth0.Find and copy the address under the inet value of the eth0 interface.
  • Se você tiver a ferramenta grep instalada, encontre-a mais facilmente filtrando a saída com o comando: ip addr | grep eth0If you have the grep tool installed, find this more easily by filtering the output with the command: ip addr | grep eth0
  • Conecte-se ao seu servidor Linux usando esse endereço IP.Connect to your Linux server using this IP address.

A imagem abaixo mostra um exemplo disso por meio da conexão com um servidor Node.js usando o navegador Edge.The picture below shows an example of this by connecting to a Node.js server using the Edge browser.

Acessar aplicativos de rede do Linux usando o Windows

Como acessar aplicativos de rede do Windows no Linux (IP do host)Accessing Windows networking apps from Linux (host IP)

Se quiser acessar um aplicativo de rede em execução no Windows (por exemplo, um aplicativo em execução em um NodeJS ou SQL Server) de sua distribuição do Linux (por exemplo, Ubuntu), você precisará usar o endereço IP do seu computador host.If you want to access a networking app running on Windows (for example an app running on a NodeJS or SQL server) from your Linux distribution (ie Ubuntu), then you need to use the IP address of your host machine. Embora esse não seja um cenário comum, você pode seguir estas etapas para fazê-lo funcionar.While this is not a common scenario, you can follow these steps to make it work. - Obtenha o endereço IP do seu computador host executando este comando da sua distribuição do Linux: cat /etc/resolv.confObtain the IP address of your host machine by running this command from your Linux distribution: cat /etc/resolv.conf - Copie o endereço IP após o termo: nameserver.Copy the IP address following the term: nameserver. - Conecte-se a qualquer servidor Windows usando o endereço IP copiado.Connect to any Windows server using the copied IP address.

A imagem abaixo mostra um exemplo disso por meio da conexão com um servidor Node.js em execução no Windows via curl.The picture below shows an example of this by connecting to a Node.js server running in Windows via curl.

Acessar aplicativos de rede do Linux usando o Windows

Considerações adicionais de redeAdditional networking considerations

Conectar-se via endereços IP remotosConnecting via remote IP addresses

Ao usar endereços IP remotos para se conectar aos seus aplicativos, eles serão tratados como conexões de LAN (rede local).When using remote IP addresses to connect to your applications, they will be treated as connections from the Local Area Network (LAN). Isso significa que você precisará verificar se seu aplicativo pode aceitar conexões de LAN.This means that you will need to make sure your application can accept LAN connections.

Por exemplo, talvez seja necessário associar seu aplicativo a 0.0.0.0 em vez de 127.0.0.1.For example, you may need to bind your application to 0.0.0.0 instead of 127.0.0.1. No exemplo de um aplicativo Python usando Flask, isso pode ser feito com o comando: app.run(host='0.0.0.0').In the example of a Python app using Flask, this can be done with the command: app.run(host='0.0.0.0'). Tenha em mente a segurança ao fazer essas alterações, pois isso permitirá conexões de sua LAN.Please keep security in mind when making these changes as this will allow connections from your LAN.

Como acessar uma distribuição do WSL 2 usando a LAN (rede local)Accessing a WSL 2 distribution from your local area network (LAN)

Ao usar uma distribuição do WSL 1, se o computador tiver sido configurado para ser acessado pela sua LAN, os aplicativos executados no WSL também poderão ser acessados em sua LAN.When using a WSL 1 distribution, if your computer was set up to be accessed by your LAN, then applications run in WSL could be accessed on your LAN as well.

Esse não é o caso padrão no WSL 2.This isn't the default case in WSL 2. O WSL 2 tem um adaptador Ethernet virtualizado com um endereço IP exclusivo.WSL 2 has a virtualized ethernet adapter with its own unique IP address. No momento, para habilitar esse fluxo de trabalho, será necessário percorrer as mesmas etapas que você faria para uma máquina virtual normal.Currently, to enable this workflow you will need to go through the same steps as you would for a regular virtual machine. (Estamos analisando maneiras de aprimorar essa experiência.)(We are looking into ways to improve this experience.)

Veja um comando do PowerShell de exemplo para adicionar um proxy de porta que escuta na porta 4000 no host e o conecta à porta 4000 para a VM do WSL 2 com o endereço IP 192.168.101.100.Here's an example PowerShell command to add a port proxy that listens on port 4000 on the host and connects it to port 4000 to the WSL 2 VM with IP address 192.168.101.100.

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

Acesso IPv6IPv6 access

Atualmente, as distribuições do WSL 2 não conseguem acessar endereços IPv6.WSL 2 distributions currently cannot reach IPv6-only addresses. Estamos trabalhando para adicionar esse recurso.We are working on adding this feature.

Como expandir o tamanho do seu Disco de Hardware Virtual do WSL 2Expanding the size of your WSL 2 Virtual Hardware Disk

O WSL 2 usa um VHD (Disco de Hardware Virtual) para armazenar seus arquivos do Linux.WSL 2 uses a Virtual Hardware Disk (VHD) to store your Linux files. Se o tamanho máximo for atingido, talvez seja necessário expandi-lo.If you reach its max size you may need to expand it.

O VHD do WSL 2 usa o sistema de arquivos ext4.The WSL 2 VHD uses the ext4 file system. Esse VHD é redimensionado automaticamente para atender às suas necessidades de armazenamento e tem um tamanho máximo inicial de 256 GB.This VHD automatically resizes to meet your storage needs and has an initial maximum size of 256GB. Se a sua distribuição aumentar de tamanho para exceder 256 GB, você verá erros informando que você ficou sem espaço em disco.If your distribution grows in size to be greater than 256GB, you will see errors stating that you've run out of disk space. Para corrigir esse erro, expanda o tamanho do VHD.You can fix this error by expanding the VHD size.

Para expandir o tamanho máximo do VHD para mais de 256 GB:To expand your maximum VHD size beyond 256GB:

  1. Termine todas as instâncias do WSL usando o comando: wsl --shutdownTerminate all WSL instances using the command: wsl --shutdown

  2. Localize o nome do pacote de instalação da distribuição ('PackageFamilyName')Find your distribution installation package name ('PackageFamilyName')

    • Usando o PowerShell (em que 'distro' é o nome da distribuição), insira o comando:Using PowerShell (where 'distro' is your distribution name) enter the command:
    • Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
  3. Localize arquivo VHD fullpath usado pela sua instalação do WSL 2, que será o seu pathToVHD:Locate the VHD file fullpath used by your WSL 2 installation, this will be your pathToVHD:

    • %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
  4. Redimensione o VHD do WSL 2 concluindo os seguintes comandos:Resize your WSL 2 VHD by completing the following commands:

    • Abra o prompt de comando do Windows com privilégios de administrador e digite:Open Windows Command Prompt with admin privileges and enter:
      • diskpart
      • Select vdisk file="<pathToVHD>"
      • expand vdisk maximum="<sizeInMegaBytes>"
  5. Inicie sua distribuição do WSL (Ubuntu, por exemplo).Launch your WSL distribution (Ubuntu, for example).

  6. Informe ao WSL que ele pode expandir o tamanho do sistema de arquivos executando esses comandos na linha de comando de distribuição do Linux:Make WSL aware that it can expand its file system's size by running these commands from your Linux distribution command line:

    • sudo mount -t devtmpfs none /dev
    • mount | grep ext4
    • Copie o nome dessa entrada, que terá a seguinte aparência: /dev/sdXX (com o X representando qualquer outro caractere)Copy the name of this entry, which will look like: /dev/sdXX (with the X representing any other character)
    • sudo resize2fs /dev/sdXX
    • Use o valor que você copiou anteriormente.Use the value you copied earlier. Talvez você também precise instalar o resize2fs: apt install resize2fsYou may also need to install resize2fs: apt install resize2fs

Observação

em geral, não modifique, mova ou acesse os arquivos relacionados ao WSL localizados dentro da sua pasta AppData usando as ferramentas ou os editores do Windows.In general do not modify, move, or access the WSL related files located inside of your AppData folder using Windows tools or editors. Isso pode fazer com que a distribuição do Linux fique corrompida.Doing so could cause your Linux distribution to become corrupted.