AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1365921
Accepted
user1451380
user1451380
Asked: 2021-09-27 08:16:16 +0800 CST2021-09-27 08:16:16 +0800 CST 2021-09-27 08:16:16 +0800 CST

como mover o Ubuntu no WSL

  • 772

Quando comecei a desenvolver WSLnão sei por que, mas instalei Ubuntu-20.04o aplicativo da Microsoft Store 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 o que eu quero fazer é fazer Ubuntuexatamente como Ubuntu-20.04sem reconfigurá-lo. Pensei em mover todos os arquivos de Ubuntu-20.04para Ubuntu, mas não sei se isso é seguro. Alguém sabe como fazer o que estou tentando fazer? Também devo fazer?

edit: ambas as versões do Ubuntu estão sendo executadas WSL-2, verifiquei usando wsl -l -vcomo @NotTheDr01ds disse.

edit 2: quero que toda a minha configuração Ubuntu-20.04inclua Ubuntutodos os arquivos e pacotes instalados

windows-subsystem-for-linux
  • 1 1 respostas
  • 862 Views

1 respostas

  • Voted
  1. Best Answer
    NotTheDr01ds
    2021-09-27T08:51:54+08:002021-09-27T08:51:54+08:00

    Por que você pode não precisar fazer isso

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

    O fato de que o "Ubuntu" (sem um número de versão) na Loja atualiza 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 com duas coisas:

    • 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. Ele não altera sua instância instalada . (Créditos e agradecimentos a u/zoredache no Reddit, que continua me 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 do WSL/Ubuntu (usando wsl --import). A instância recém-criada usaria então o rootfs atualizado pela Store.

    Nenhum desses cenários é muito comum. Mesmo quando a loja Ubuntusem versão for atualizada para (presumivelmente) 22.04, ela não alterará sua instância instalada de 20.04, apenas o pacote rootfs .

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

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

    Como fazer isso de qualquer maneira

    Dito isso, da maneira como o WSL2 armazena seus dados, não é tão difícil mover as configurações. Todo o sistema de arquivos para uma instância WSL2 é armazenado em um HDD virtual chamado 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 momento, mas tenha cuidado, é claro:

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

    • Em seguida, wsl --shutdownpara garantir que nada esteja em execução no momento.

    • 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 que você copie o caminho certo. Você pode querer executar sua Ubuntu-20.04distribuição e fazer uma mudança rápida para que você possa ver facilmente o último carimbo de data/hora na cópia "certa".

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


    Outra possibilidade - Como você fez backup da configuração desejada com wsl --export, você sempre pode fazer wsl --importisso em uma nova instância chamada Ubuntu.

    • Primeiro, você precisa desinstalar o Store 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 em %userprofile%\Documents\WSL\images. Isso me permite ativar rapidamente novas instâncias via wsl --import. É bom poder testar algo sem afetar meu ambiente diário.


    Observação para qualquer usuário do WSL1 que estiver lendo isso. O rootfs para WSL1 não é armazenado em um arquivo HDD virtual, mas como arquivos e diretórios reais em ...\LocalState\rootfs\. Por favor, não acesse esses arquivos diretamente, pois pode facilmente causar corrupção do sistema de arquivos WSL (consulte Microsoft devblog ).

    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 converter a instância para WSL2 primeiro, 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.

    • 1

relate perguntas

  • Onde está o diretório raiz do sistema de arquivos Ubuntu no Windows Subsystem para Linux e vice-versa?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve