como mover o Ubuntu no WSL

como mover o Ubuntu no WSL

Quando comecei a desenvolver, WSLnão sei por que, mas instalei Ubuntu-20.04o aplicativo da loja da Microsoft em vez de apenas o Ubuntu. Eu sei que a única diferença é que Ubuntu-20.04não será atualizado automaticamente quando uma nova Ubuntuversão for lançada. Tudo que eu quero fazer é fazer Ubuntuigual Ubuntu-20.04sem reconfigurá-lo. Pensei em mover todos os arquivos de Ubuntu-20.04para Ubuntu, mas não sei se é seguro fazer isso. Alguém sabe como fazer o que estou tentando fazer? Também devo fazer isso?

editar: ambas as versões do Ubuntu estão rodando. WSL-2Eu verifiquei usando wsl -l -vcomo @NotTheDr01ds disse.

edição 2: quero toda a minha configuração Ubuntu-20.04incluindo Ubuntutodos os arquivos e pacotes instalados

Responder1

Por que você pode não precisar fazer isso

Ok, as primeiras coisas primeiro. Isso provavelmente é bastante desnecessário.

O fato de o "Ubuntu" (sem número de versão) na Loja ser atualizado automaticamente é ... verdade, mas um pouco enganador na realidade.

Isso é um pouco difícil de explicar, mas quando você instala o "Ubuntu" (sem versão) da Loja, você acaba comdoiscoisas:

  • Um pacote rootfs ( install.tar.gz) em C:\Program Files\WindowsApps\CanonicalGroup.... Você pode ver isso iniciando um PowerShell administrativo e executando o Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Where-Object {$_.Name -eq 'install.tar.gz' } | % { $_.DirectoryName }.

  • Quando executado pela primeira vez (via ubuntu.exe), o instalador cria sua instância WSL real em seu arquivo %UserProfile%\AppData\Local\Packages\CanonicalGroup....

Quando há uma nova versão na Loja, a única coisa que é atualizada é o pacote rootfs. Isso acontecenãomude seu instaladoinstância. (Crédito e agradecimento a u/zoredache no Reddit que mantémme lembrando disso.)

Isso é bastante inútil para a maioria dos usuários, a menos que você:

  1. Cancele o registro da instância (que exclui toda a configuração) e reconfigure-a executando novamente o ubuntu.execomando.
  2. Deseja usar isso install.tar.gzpara criar uma segunda instância WSL/Ubuntu (usando wsl --import). A instância recém-criada usaria então os rootfs atualizados pela Store.

Nenhum desses cenários é muito comum. Mesmo quando a Loja não versionada Ubuntufor atualizada para (presumivelmente) 22.04, isso não mudará seuinstaladoinstância de 20.04, apenas o rootfspacote.

Você ainda precisará executar um sudo do-release-upgrade -dquando quiser atualizar para 22.04 (ou uma versão provisória).

Então, dado isso... Como você já Ubuntu-20.04configurou o seu da maneira que deseja, não há grande vantagem para você alterá-lo, a não ser obter um Ubuntunome mais curto e limpo para a instância WSL.

Como fazer de qualquer maneira

Dito isto, da maneira como o WSL2 armazena seus dados, não é tão difícil mover as configurações. Todo o sistema de arquivos de uma instância WSL2 é armazenado em um HDD virtual denominado ext4.vhdx.

Como você tem duas instalações do Ubuntu ( Ubuntue Ubuntu-20.04), você encontrará dois desses ext4.vhdxarquivos em %userprofile%\AppData\Local\Packages\. Para obter os locais exatos, execute o seguinte no PowerShell:

Get-ChildItem "$env:USERPROFILE\AppData\Local\Packages\CanonicalGroupLimited*\LocalState\*"

Para minha instalação, isso é:

...\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
...\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

A solução pode ser bastante óbvia neste ponto, mas tenha cuidado, é claro:

  • Saia de todas as suas instâncias WSL em execução.

  • Então, wsl --shutdownpara ter certeza de que nada está em execução.

  • Um backup de sua configuração existente não seria uma má ideia wsl --export Ubuntu-20.04 2021-09-26_Ubuntu-20.04_backup.tar(ou como você quiser chamar o arquivo de backup). Isso basicamente cria um tarball dos rootfs atuais, incluindo todos os arquivos, propriedade e permissões.

  • Nesse ponto, basta copiar o desejado (Ubuntu-20.04) ext4.vhdxsobre o recém-instalado (Ubuntu). O verdadeiro truque é simplesmente certificar-se de copiar o correto. Você pode querer executar sua Ubuntu-20.04distribuição e fazer uma alteração rápida para poder ver facilmente o último carimbo de data/hora na cópia "correta".

O único requisito real é que o usuário padrão para ambas as instâncias seja o mesmo.


Outra possibilidade - já que você fez backup da configuração desejada wsl --export, você sempre pode apenas wsl --importfazer isso em uma nova instância chamada Ubuntu.

  • Primeiro, você precisa desinstalar a Loja Ubuntu.
  • Em seguida, escolha um diretório para sua nova instância. Ele pode estar em qualquer lugar e não precisa mais ficar no seu AppDatadiretório.
  • wsl --import Ubuntu <directory> path\to\2021-09-26_Ubuntu-20.04_backup.tar --version 2

Eu mantenho o meu %userprofile%\Documents\WSL\instancese meus tarbackups no formato %userprofile%\Documents\WSL\images. Isso me permite criar rapidamente novas instâncias via wsl --import. É bom poder testar algo sem impactar meu ambiente diário.


Nota para qualquer usuário WSL1 que esteja lendo isto. Os rootfs para WSL1 não são armazenados em um arquivo HDD virtual, mas como arquivos e diretórios reais em ...\LocalState\rootfs\. Por favor, não acesse esses arquivos diretamente, pois isso pode facilmente causar corrupção no sistema de arquivos WSL (consulteDevblog da Microsoft).

Se você precisar simplesmente acessar os arquivos do Windows, use o \\wsl$\<distro>caminho no Windows conforme indicado no blog da Microsoft. Mas se você precisar copiar tudo, como nesta questão, a melhor aposta seria primeiro converter a instância para WSL2, via wsl --set-version <distro> 2(faça um wsl --exportbackup primeiro). Após a conversão, o sistema de arquivos estará no ext4.vhdxformato WSL2.

informação relacionada