Eu tenho uma distribuição existente do Ubuntu, quero uma segunda que seja uma nova imagem do Ubuntu.
Eu suspeito que posso:
- exportar minha distribuição existente para tar com
wsl.exe --export
- cancelar o registro da minha distro existente com
wsl unregister
- desinstale o Ubuntu da Microsoft Store
- reinstale o Ubuntu da Microsoft Store, dando-me uma nova instalação
- importar do alcatrão via
wsl --import
Isso deve me dar 2 distros, meu existente mais um novo. Existe uma maneira mais fácil/melhor?
Isto é para o Windows 10 Build 19035 mais recente (no momento da escrita)
Importante: O procedimento a seguir funciona apenas no Windows 10 Build 18305 ou superior. Certifique-se de que
wsl.exe
tem--import
opção na linha de comando. Para uma versão mais antiga do Windows 10, tente este método alternativo .Procedimento:
Primeiro precisamos do tarball rootfs do Ubuntu. Abra https://cloud-images.ubuntu.com/releases/ em um navegador da web. Vá para a pasta com a versão necessária do Ubuntu.
Baixe o
ubuntu-x.x-server-cloudimg-amd64-wsl.rootfs.tar.gz
arquivo (xx usado como número da versão). Certifique-se de que o nome do arquivo tenhaamd64-wsl
e o tipo de arquivo seja.tar.gz
(GZIP tarball). Como exemplo, o link direto ficará assim:wsl.exe
a linha de comando. Abra o prompt de comando. O formato real do comando será assim:wsl.exe -d DistroA
.Notas:
O procedimento pode ser usado com qualquer espaço de usuário de distribuição GNU/Linux.
Isso não usa a Windows Store. Portanto, a Windows Store não mostra o nome nem atualiza a instalação.
No Windows 10 ARM64 (AArch64), use a
arm64-wsl
imagem da nuvem para o Ubuntu.Neste procedimento a pasta de instalação pode ser acessada por outros usuários na mesma máquina. Se você estiver usando uma máquina compartilhada, use as permissões adequadas.
Se você deseja compartilhar a instalação com outros usuários da mesma máquina, basta exportar este registro
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
. Em seguida, importe-o em outros usuários da mesma máquina.Leituras Adicionais:
A resposta de Biswapriyo funciona muito bem, mas são necessárias etapas adicionais para alterar o usuário padrão. Observe que isso requer a compilação 18980 e superior .
Adicione o usuário não root via
adduser
comando:Habilitar privilégios sudoer para
${NEW_USER}
:Adicione definir o usuário padrão em /etc/wsl.conf:
Saia do WSL via
logout
e, em seguida, emita o comando WSL shutdown para que as alterações entrem em vigor:Na próxima vez que
wsl -d DistroA
for invocado, o${NEW_USER}
usuário estará ativo.Talvez um pouco atrasado, mas encontrei sua postagem e tentei de uma maneira diferente.
Eu queria 2 xa imagem Ubuntu 20.04 LTS. O primeiro foi fácil, apenas o padrão da loja do Windows. Para o segundo, instalei uma imagem do Ubuntu 18.04 LTS para a Windows Store e fiz um "do-release-upgrade" para atualizá-lo para o Ubuntu 20.04 LTS.
Recentemente, tive o mesmo problema, pois estou trabalhando com empresas diferentes ao mesmo tempo e precisava de um script que pudesse criar facilmente uma nova instância do WSL2 e excluí-la com a mesma facilidade.
A exclusão por si só não é difícil, pois o comando oficial
wsl --unregister <distro_name>
funciona muito bem e elimina as instâncias do WSL2 perfeitamente, sem deixar rastros.A criação, no entanto, pode ser problemática ou até tediosa. Meu script faz exatamente isso: https://github.com/IAL32/WSL2-Create-Distro
O exemplo a seguir cria uma instância WSL2 usando Ubuntu20.04 (Focal Fossa) usando um tarball baixado anteriormente (o exemplo usa o seguinte: https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg- amd64-wsl.rootfs.tar.gz ), cria um usuário com nome de usuário
myuser
e o adiciona ao gruposudo
. Ele também define a senha do usuário para aquela fornecida no pipeline e a senha para o usuário root, também fornecida no pipeline.Sob o capô, se um novo usuário for criado, ele também mudará seu shell padrão de
/bin/sh
para/bin/bash
.Sugiro usar as imagens "base" do Ubuntu (menos inchadas que as imagens "nuvem"):
Você baixa o rootfs e o importa:
UPDATE Primeira linha de
/etc/passwd
ou o usuário definido em/etc/wsl.conf
+passwd
define um aplicativo que inicia.Para solucionar problemas, você mesmo pode especificar o ponto de entrada com
-e
:wsl -d BaseUbuntu -e /bin/sh
Você pode olhar dentro do arquivo rootfs para ver quais aplicativos estão em
/bin
//usr/bin
. Depois de encontrar o shell, você pode executar a imagem como root:e atualize o shell padrão com
chsh
ou outras ferramentas disponíveis.