Recentemente, instalei o Arch no WSL2 e queria saber por que a importação oficial da imagem de bootstrap falha, mas a importação de uma imagem extraída do Docker do Arch funciona bem.
Caso 1
- Baixei a última imagem de bootstrap de um dos espelhos listados em archlinux.org .
- Recompactado para se livrar do
root.x86_64
sub-diretório com:fakeroot -- bash -c "tar -xf bootstrap.tar.gz && tar -czaf rootfs.tar.gz root.x86_64/*"
- Movido
.tar
para o sistema de arquivos do Windows - Importou o
.tar
e correuwsl -d Arch
. Isso gerou o seguinte erro, tornando a distribuição inútil.Error mounting one of the file systems. Run 'dmesg' for more details.
- Eu tentei executar
dmesg
comwsl -d Arch --exec dmesg
, mas foi retornado o mesmo erro anterior, então não consegui identificar o problema.
Caso 2
- Criou um contêiner do Docker com a imagem do Arch mais recente.
docker run -t --name arch archlinux ls /
- Exportou para um arquivo tar.
docker export arch -o arch-wsl.tar
- Importado. Correu
wsl -d Arch
. E isso imediatamente me deixou embash
.
Alguma idéia de por que esses dois casos produzem resultados diferentes?
Resposta curta:
Sua primeira tentativa usando a imagem de bootstrap e
fakeroot
está produzindo um rootfs inválido. Na verdade, não está removendo oroot.x86_64
diretório pai.Mais detalhes:
O
Error mounting one of the file systems. Run 'dmesg' for more details.
, na minha experiência, geralmente significa que o arquivo não contém um rootfs válido (para WSL).No começo eu pensei que isso era devido à importação de um arquivo gzipado, já que o padrão para
--export
é um tar simples (e você faz isso nas etapas do Docker).No entanto, acabei de testar com a
tar
e a.tar.gz
e funcionou para mim de qualquer maneira. No entanto, usei etapas um pouco diferentes - Especificamente, useisudo
em vez de usáfakeroot
-lo em uma distribuição existente do Ubuntu 20.04. Edit : Eu também tentei comfakeroot
a minha distribuição Artix e encontrei o problema. Veja a seção abaixo "Por que sua tentativa de fakeroot não funcionou" .Eu tive sucesso com o seguinte. Primeiro, do Ubuntu 20.04:
Em seguida, do PowerShell (você já está familiarizado com essas etapas, obviamente):
Por que sua tentativa de fakeroot não funcionou
Executei sua linha de comando para testá-lo no Artix e posso ver o problema. O tar que é criado a partir dele ainda tem o arquivo
root.x86_64
nele. Para se livrar dele, você precisa usar a-C/--directory
opção para especificar a raiz real:No entanto, ainda há um problema com isso, pois o arquivo de resultados não possui o recurso de segurança adequado em alguns comandos:
Tentar usar
--xattrs
como fiz com um simplessudo
acima, ainda não funciona, e não tenho certeza do porquê neste momento:Resulta em:
Se você puder descobrir por que isso está falhando em
fakeroot
, me avise. Mas asudo
versão funciona muito bem para mim.Algumas notas laterais:
Depois de criar seu usuário padrão, você desejará defini-lo como o usuário padrão do WSL usando estas etapas .
Arch ainda é uma distribuição do Systemd e (como você já deve saber), o Systemd não é bem suportado no WSL devido (a) ao
/init
sistema do WSL que configura a integração WSL/Windows e (b) à exigência do Systemd de que seja PID1.Eu rapidamente migrei do Arch para o Artix, já que o último é uma distribuição baseada no Arch sem Systemd. Ainda estou "cedo" (estou nisso há cerca de um mês), mas os resultados são animadores. O Artix suporta 5 diferentes supervisores de processo alternativos e possui scripts/arquivos de unidade para a maioria dos serviços instalados
pacman
(mas não, no entanto, AUR). Se você quiser seguir esse caminho, me avise e eu posso compartilhar minhas instruções de configuração.Obrigado a @NotTheDr01ds por reservar um tempo e apontar os problemas com minha tentativa anterior e o arquivo
tar
.Descobri que usar
bsdtar
incluído comlibarchive
funciona perfeitamente, em vez deGNU tar
comfakeroot
:Isso resulta em uma importação perfeita. Você pode continuar inicializando o
pacman
chaveiro e outras coisas.Quanto ao por que
GNU tar
produz avisos, não tenho certeza. De acordo com isso , trata-se apenas de um conflito de compatibilidade entre as duas ferramentas. Encontrei um tópico de comparação aqui .