Depois de executar um sudo systemctl poweroff
no Ubuntu no WSL e reiniciar, estou vendo:
<3>WSL (814) ERROR: UtilTranslatePathList:2671: Failed to translate C:\Program Files\PowerShell\7
<3>WSL (814) ERROR: UtilTranslatePathList:2671: Failed to translate C:\Windows\System32\OpenSSH\
<3>WSL (814) ERROR: UtilTranslatePathList:2671: Failed to translate C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
<3>WSL (814) ERROR: UtilTranslatePathList:2671: Failed to translate C:\Program Files\dotnet\
...
O Ubuntu inicia, mas nenhuma unidade do Windows é montada no WSL. Além disso, o Ubuntu sai um pouco mais tarde. Depois de reiniciar, tudo parece bem.
O que está acontecendo e como posso resolver isso?
Resposta curta:
wsl --shutdown
reiniciar para se recuperar totalmente.Mais detalhes:
No WSL atualizado que fornece suporte ao Systemd, agora você pode executar determinados comandos de "desligamento", mas isso não significa que você deva . Isso inclui:
sudo systemctl poweroff
sudo systemctl halt
sudo systemctl reboot
Em todos esses casos, o Systemd se substitui pelo
systemd-shutdown
(consulte a página do manual para obter mais detalhes), que continua em execução mesmo depois que o WSL informa que a distribuição não está mais em execução (viawsl.exe -l -v
).Estou tentando adivinhar aqui, mas quando o WSL tenta reiniciar o Ubuntu, parece que ele não pode carregar o seu próprio
init
porque o PID1 ainda está "ocupado" porsystemd-shutdown
(ou talvez porquesystemd
não esteja lá para chamá-lo).Como resultado, grande parte da inicialização "normal" do WSL não ocorre. Isso inclui as montagens de unidade do Windows, bem como o
binfmt_misc
registro que permite que o WSL execute comandos do Windows. Mas não, aparentemente, a tentativa de anexar o caminho do Windows ao caminho do Linux no ambiente base.Após o tempo limite (90 segundos) que você vê nos argumentos de comando acima,
systemd-shutdown
será encerrado e a distribuição do WSL será encerrada (novamente) com ele.Você também pode encerrar com
wsl --terminate <distro_name>
do PowerShell.Em ambos os casos, o Ubuntu recém-reiniciado não exibirá as mensagens de erro listadas na pergunta.
No entanto , você ainda precisará
wsl --shutdown
reiniciar antes de recuperar o acesso à capacidade de executar comandos do Windows. A "corrupção" debinfmt_misc
realmente se estenderá a todas as distribuições WSL2 em execução no seu sistema até que um arquivowsl --shutdown
.