Como posso preservar o ambiente WSL Linux ao fazer uma "redefinição" do sistema Windows 10?

Como posso preservar o ambiente WSL Linux ao fazer uma "redefinição" do sistema Windows 10?

Esta postagemmenciona simplesmente restaurar o diretório WSL WSL parcialmente restaurado, mas com alguns problemas de funcionalidade.Esta postagemfornece informações genéricas sobre como fazer backup e recuperar uma instalação do Linux.Esta postagemdiz que% appdata% é de fato movido para a pasta Windows.old, que é criada após a redefinição e contém seus arquivos "antigos". ) Que informações podem ter se perdido no primeiro experimento com cartazes? Existem algumas configurações de registro ou arquivos de configuração que permitiriam simplesmente restaurar o diretório raiz do Linux ( %USERPROFILE%/AppData/Local/lxss) para funcionar?

EDITAR

Minha pergunta foi marcada como uma duplicata deComo fazer backup do subsistema Linux (WSL) para Windows 10, antes de redefinir ou reinstalar o sistema?.

No entanto, essa questão era apenas sobre como fazer backup da instalação - basicamente, tar e salvá-la em algum lugar. Eu pergunto explicitamente sobre como restaurá-lo.

Responder1

Pergunta muito antiga que foi respondida hoje, e as coisas mudaram muito nos 4 anos desde que a pergunta foi feita. Na verdade, fiz um "Reset" no meu driver diário há alguns anos e tive uma situação semelhante.

Naquela época, o melhor que você poderia fazer seria copiar qualquerdadosfora do antigo sistema de arquivos. Quando esta pergunta foi feita, esse sistema de arquivos normalmente estava (como você mencionou na pergunta) em algum lugar abaixo de %USERPROFILE%\AppData\Local\lxss. Vou acreditar na sua palavra, já que não me lembro exatamente e não tenho mais instalações tão antigas por aí.

Em algum momento, provavelmente quando o WSL começou a oferecer suporte a múltiplas distribuições, a pasta WSL1 mudou para %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs. Quando fiz uma redefinição no meu PC há vários anos, criei taresse diretório e restaurei arquivos individuais (mas não todo o sistema de arquivos, como você pediu) após a redefinição e a reinstalação do WSL. Eu não considerei o Windows.old, mas essa também teria sido uma maneira válida de obter esses arquivos.

Hoje em dia, sim,antesfazendo um reset, um wsl --exportpode ser executado conforme mencionado na outra resposta aqui.

Mas se o usuário não pensar em fazer isso,poderiaainda será possível restaurar completamente o sistema de arquivos após a redefinição usando Windows.old. Existem dois cenários:

  • O WSL2 torna isso bastante fácil, pois todo o sistema de arquivos é armazenado em uma unidade virtual no formato %USERPROFILE%\AppData\Local\Packages\<PackageName>\LocalState\rootfs\ext4.vhdx. Veresta respostapara obter detalhes, mas você pode basicamente copiar isso ext4.vhdxde Windows.olde para uma nova instalação.

  • Com WSL1, estou90% confianteque você pode recuperar uma instalação WSL Windows.oldusando o método a seguir.

    1. Primeiro, instale uma distribuição da Loja. Eu sei, você quer recuperar seuvelhoinstall, mas vamos usar esta nova instalação para fazer isso. Você sempre pode desinstalar a distribuição da Loja quando terminarmos.

    2. Lance essa distribuição.

    3. Crie /etc/wsl.confcom o seguinte:

      [automount]
      options = "metadata"
      
    4. Próximo,

      cd /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/Packages/<PackageName>/LocalState/rootfs
      

      <PackageName>dependerá da sua distribuição, mas será inicial Canonical...para distribuições Ubuntu. Se a sua instalação do WSL for antiga o suficiente, pode ser /mnt/C/Windows.old/Users/<yourusername>/AppData/Local/lxss. Ao fazer lsisso, você deseja ver o /diretório dessa instalação.

    5. Dentro desse diretório, tar cvf recovery.tar .. A instalação do WSL1 demorará um pouco.

    6. sudo mv recovery.tar <somewhere>mais na C:unidade; algo como /mnt/c/Users/<youruser>/Documents/wsl(é próximo do que eu uso para isso). Este será o novo local de distribuição quando terminarmos.

    7. Sair do WSL

    8. No PowerShell, navegue até o diretório onde você colocou o arquivo recovery.tar.

    9. mkdir OldUbuntu(ou como você quiser chamar)

    10. wsl --import OldUbuntu .\OldUbuntu .\recovery.tar. O comando também opcionalmente leva um --version 1/2(no final) para forçar a versão WSL.

    11. Se desejar, torne esta sua instalação WSL padrão com wsl --set-default OldUbuntu.

    12. Inicie a distribuição com wsl ~ -d OldUbuntu. O -d/--distributionargumento só é necessário se você não o definiu como padrão acima.

    13. Crie um /etc/wsl.confcom o seguinte conteúdo:

      [user]
      default=username
      

      Edite usernamepara ser o seu nome de usuário na distribuição antes de redefinir o Windows.

    14. Opcionalmente, desinstale a distribuição que instalamos e usamos para criar o tarball.

    Deveria ser isso. Na verdade, testei isso com um cenário um pouco diferente. Instalei uma instância WSL1 e passei pelo processo acima em outra instância. Consegui fazer --importisso com sucesso depois de seguir as etapas acima. A propriedade e as permissões de arquivos/diretórios parecem corretas, assim como os links simbólicos. Minha única preocupação é se uma distribuição WSL realmente antiga pode usar metadados diferentes.

    Aviso: Por favor, tente fazer isso apenas em um sistema de arquivos WSL1 se não tiver outra maneira de recuperá-lo. Acessar arquivos em um sistema de arquivos WSL1 por meio de %AppData%(ou equivalente) éconhecido por causar corrupção. É por isso que eu mesmo criei uma instância descartável para testar isso.

    Nota: você pode pensar em tartransferir os arquivos Windows.oldde dentro do Windows, em vez de se preocupar em instalar outra instância do WSL. A minha preocupação aqui é que isto não capte oLinuxpropriedade e permissões, o que provavelmente resultará em uma instalação corrompida durante wsl --importo 'ing.

informação relacionada