Arch Linux fornece uma imagem oficial de WSL (Windows Subsystem for Linux ou, em português, Subsistema do Windows para Linux) como parte do projeto archlinux-wsl.
As imagens são criadas e lançadas mensalmente e têm como objetivo fornecer o sistema mais simples, porém completo, para oferecer uma experiência completa do Arch Linux com WSL.
Instalação
Instalação do WSL
Habilitar virtualização na configuração UEFI e, em seguida, instalar o Subsistema Windows para Linux na Microsoft Store.
Atualização do WSL
Para atualizar para a versão estável mais recente do WSL e do WSLg, execute o seguinte comando em um prompt elevado do PowerShell.
> wsl --update
Para atualizar para a versão de pré-lançamento mais recente, execute:
> wsl --update --pre-release
Instalar Arch Linux no WSL
Em um sistema Windows com WSL 2 instalado, use um dos seguintes métodos de instalação.
Instalação automatizada
Execute o seguinte comando em um prompt do PowerShell:
> wsl --install archlinux
Você pode então executar o Arch Linux no WSL por meio do aplicativo archlinux no menu Iniciar ou executando wsl -d archlinux em um prompt do PowerShell.
Instalação manual
Baixe a imagem mais recente do .wsl do Arch Linux e clique duas vezes nela para iniciar a instalação ou execute o seguinte comando em um prompt do PowerShell:
> wsl --install --from-file image_WSL
Por exemplo:
> wsl --install --from-file C:\Users\Nome_de_usuário\Downloads\archlinux-2025.04.01.121271.wsl
archlinux. Se desejar importá-lo com um nome diferente, adicione a opção --name [Nome_da_distro].Você pode então executar o Arch Linux no WSL por meio do aplicativo archlinux no menu Iniciar ou executando wsl -d archlinux em um prompt do PowerShell.
Dicas e truques
Definir o usuário padrão
Para definir um usuário padrão diferente de root, primeiro certifique-se de que o usuário foi criado e, em seguida, anexe o seguinte ao arquivo /etc/wsl.conf:
[user] default=nome_de_usuário
Certifique-se de fornecer uma senha ao seu usuário root antes de encerrar a sessão. Se você estiver "bloqueado", execute
> wsl -u root
a partir de uma janela de comando no host Windows.
A alteração será aplicada na próxima sessão. Para encerrar a sessão atual, execute o seguinte comando em um prompt do PowerShell:
> wsl --terminate archlinux
Executar aplicativos gráficos com WSLg
WSLg (Windows Subsystem for Linux GUI) é um projeto que visa permitir a execução de aplicativos Linux com suporte a áudio (PulseAudio) e gráficos (X11 e Wayland) dentro do WSL.
Para poder executar aplicativos gráficos com o WSLg, habilite o suporte a aplicativos GUI no arquivo %USERPROFILE%\.wslconfig do seu sistema Windows (crie-o se ainda não existir) com o seguinte conteúdo:
[wsl2] guiApplications = true
Com o conjunto acima, o WSL cria links simbólicos ao abrir uma sessão para os soquetes dos servidores X11 e Wayland, mas estes são sobrescritos pelo systemd durante a inicialização. Consulte microsoft/wslg#1032 para obter mais detalhes.
Enquanto aguarda a resolução do problema pelo upstream, crie os links simbólicos manualmente. Primeiro, crie uma configuração systemd-tmpfiles para vincular o diretório que contém o soquete do servidor X11:
/etc/tmpfiles.d/wslg.conf
# Path Mode UID GID Age Argument L+ %T/.X11-unix - - - - /mnt/wslg/.X11-unix
Em seguida, crie o seguinte arquivo para vincular o diretório que contém o soquete do servidor PulseAudio e Wayland, bem como definir o driver Gallium:
/etc/profile.d/wslg.sh
export GALLIUM_DRIVER=d3d12 for i in "/mnt/wslg/runtime-dir/"*; do [ "$XDG_RUNTIME_DIR" = "$HOME" ] && XDG_RUNTIME_DIR="/var/run/user/$UID" if [ ! -L "$XDG_RUNTIME_DIR$(basename "$i")" ]; then [ -d "$XDG_RUNTIME_DIR$(basename "$i")" ] && rm -r "$XDG_RUNTIME_DIR$(basename "$i")" ln -s "$i" "$XDG_RUNTIME_DIR$(basename "$i")" fi done
As alterações serão aplicadas na próxima sessão. Para encerrar a sessão atual, execute o seguinte comando em um prompt do PowerShell:
> wsl --terminate archlinux
Renderização acelerada por hardware
Para utilizar a renderização acelerada por hardware no WSL, instale os seguintes pacotes:
- mesa - Contém o driver Gallium
d3d12para OpenGL - vulkan-dzn - Contém o driver Vulkan experimental
dzn(também conhecido comomicrosoft-experimental)
Você precisará instalar o vulkan-icd-loader (e o lib32-vulkan-icd-loader se também quiser executar aplicativos de 32 bits).
Se o OpenGL recorrer ao renderizador de software llvmpipe para GPUs Intel, você precisará criar um link simbólico para o libedit:
# ln -s /usr/lib/libedit.so /usr/lib/libedit.so.2
Consulte https://github.com/microsoft/wslg/issues/996 e https://wiki.gentoo.org/wiki/Gentoo_in_WSL#OpenGL_falling_back_to_llvmpipe_software_renderer_on_Intel_GPUs para obter mais informações.
Interoperabilidade do WSL
O WSL contém [1] interoperabilidade entre o Windows e o WSL. Isso permite que você execute binários do Windows a partir do WSL.
Para usar a interoperabilidade, certifique-se de que ela esteja habilitada no arquivo /etc/wsl.conf com o seguinte conteúdo:
[interop] enabled = true
Diversas ferramentas foram criadas para permitir que você utilize serviços e recursos do Windows a partir do WSL.
Fazer ponte do serviço ssh-agent do Windows
wsl2-ssh-agent é uma ferramenta que permite usar o agente SSH do Windows de dentro do WSL.
Isso é especialmente útil se você utiliza chaves SSH *-sk que exigem o uso de chaves de segurança físicas ou mesmo Windows Hello.
Instale o wsl2-ssh-agentAUR e adicione o seguinte ao seu ~/.bashrc:
eval "$(/usr/sbin/wsl2-ssh-agent)"
Reinicie o shell e a variável de ambiente SSH_AUTH_SOCK deverá estar configurada corretamente.
Autenticação PAM com Windows Hello
WSL-Hello-Sudo é um plugin PAM que permite autenticar seu usuário via Windows Hello.
Instale wsl-hello-sudo-binAUR e execute /opt/wsl-hello-sudo/install.sh. O instalador copiará um executável do Windows para um diretório de sua escolha e armazenará um certificado usado para autenticação ao lado dele.
Adicione auth enough pam_wsl_hello.so a quaisquer arquivos de configuração /etc/pam.d que você deseja autenticar com o Windows Hello. Por exemplo, com sudo:
/etc/pam.d/sudo
#%PAM-1.0 auth sufficient pam_wsl_hello.so auth include system-auth account include system-auth session include system-auth
Passando dispositivos para WSL
O WSL 2 é uma máquina virtual Hyper-V. Isso permite a passagem de dispositivos físicos do host (Windows) para o convidado (WSL 2).
Montar um disco
O WSL 2 suporta a anexação e montagem de discos disponíveis para Windows.
Para isso, primeiro identifique o DeviceID do disco fornecido com o seguinte comando do PowerShell:
> GET-CimInstance -query "SELECT * from Win32_DiskDrive"
Depois de encontrar o disco que deseja passar, execute o seguinte no Windows (com privilégios de administrador):
> wsl --mount DeviceID --bare
Após a conexão, você poderá visualizar o dispositivo com lsblk.
Para desmontar um disco, execute:
> wsl --unmount DeviceID
Para mais informações, veja https://learn.microsoft.com/pt-br/windows/wsl/wsl2-mount-disk.
Conectar dispositivos USB
usbipd-win é um projeto que permite o compartilhamento de dispositivos USB conectados localmente com outras máquinas, incluindo o WSL 2.
Primeiro, você precisa instalar o software no Windows. Você pode executar o instalador (.msi) a partir da versão mais recente ou usar o Gerenciador de Pacotes do Windows:
> winget install usbipd
Após a instalação, identifique os dispositivos USB disponíveis e anote o ID do barramento executando o seguinte no Windows:
> usbipd list
Prepare o dispositivo USB que você selecionou executando (isso requer privilégios de Administrador):
> usbipd bind --busid id_barramento
Em seguida, conecte o dispositivo USB ao WSL 2 usando:
> usbipd attach --wsl --busid id_barramento
Uma vez conectado, você poderá ver o dispositivo com lsusb.
Para desconectar um dispositivo USB, execute:
> usbipd detach --busid id_barramento
Para mais informações, veja https://learn.microsoft.com/pt-br/windows/wsl/connect-usb.
Solução de problemas
Suporte a systemd
A imagem WSL do Arch Linux oferece suporte ao systemd.
No entanto, existem problemas pendentes conhecidos que podem exigir ações adicionais para que o systemd funcione corretamente.
systemd requer suporte a cgroup v2
Atualmente, o WSL inicia sistemas com suporte a cgroup v1 por padrão[2], mas o systemd >= 256 removeu o suporte para ele[3] e requer suporte a cgroup v2 simples.
Enquanto aguarda o WSL iniciar sistemas com suporte a cgroup v2 simples por padrão, você pode forçar isso desabilitando o suporte a cgroup v1 no arquivo %USERPROFILE%\.wslconfig do seu sistema Windows (crie-o se ele não existir) com o seguinte conteúdo:
[wsl2] kernelCommandLine = cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1
A alteração será aplicada na próxima sessão. Para encerrar sua sessão atual, execute o seguinte comando em um prompt do PowerShell:
> wsl --terminate archlinux
Falha ao executar contêineres Docker
Você pode enfrentar o seguinte erro ao executar um contêiner Docker do WSL:
Error response from daemon: path / is mounted on / but it is not a shared or slave mount Error: failed to start containers
Também é possível que comandos como docker run simplesmente travem para sempre sem produzir nenhuma saída.
Isso ocorre porque o Docker espera que o diretório raiz (/) seja montado com propagação de rshared.
Para isso, execute:
# mount --make-rshared /
Para tornar a alteração persistente, você pode criar um serviço systemd que execute este comando no início da inicialização:
/etc/systemd/system/mount-root-rshared.service
[Unit] Description=Remount / with shared propagation Requires=-.mount After=-.mount [Service] Type=oneshot ExecStart=/bin/mount --make-rshared / [Install] WantedBy=local-fs.target
Então, inicie/habilite mount-root-rshared.service.
