A instância do WSL ainda é desligada automaticamente quando todos os terminais do WSL são fechados

O uso do WSL é muito prático, mas ele tem um comportamento que pode ser um pouco incômodo: ele desliga automaticamente quando não está sendo usado. Isso é bom para economizar recursos, mas pode ser um pouco chato quando você precisa acessar o WSL e ele está desligado, você pode verificar se o WSL está ativo com o comando:

wsl -l -v

Aparentemente a Microsoft não resolveu esse problema e isso é alvo de inúmeras discussões sobre como contornar esse problema. As soluções vão desde tentar configurações que não funcionam até a criação de scripts com loop infinito para manter o WSL ativo. A solução proposta por firejox, disponível em [https://github.com/microsoft/WSL/issues/8854#issuecomment-1490454734] é a mais simples e eficiente que encontrei.

A solução fornecida é gerar o processo do Windows em suspensão no serviço systemd usando o comando interno do Windows waitfor para manter a distribuição viva.

[Unit]
Description=Keep Distro Alive

[Service]
ExecStart=/mnt/c/Windows/System32/waitfor.exe MakeDistroAlive

[Install]
WantedBy=multi-user.target

O arquivo de serviço deve ser salvo em /etc/systemd/system/keep-distro-alive.service.

Para iniciar o serviço, use o comando:

sudo systemctl start keep-distro-alive.service

Para ativar o serviço na inicialização, use o comando:

sudo systemctl enable keep-distro-alive.service