Instale uma distro dentro de outra

Veja como instalar uma distro dentro da outra. Assim você poderá usar os programas da distro "convidada" na distro "hospedeira".

[ Hits: 4.682 ]

Por: Xerxes em 20/04/2021


Introdução



Artigo testado com as distribuições Gentoo e Void. Sendo que Gentoo é a distribuição "hospedeira" e a Void a distribuição "convidada".

Apesar de eu testar com Gentoo e Void, teoricamente você pode fazer o procedimento com qualquer distribuição. Vai ter que adaptar alguma coisa, mas se tiver, vai ser pouco.

Primeiro passo: na distribuição hospedeira, crie um diretório com o nome que preferir. No meu exemplo, eu criei um diretório chamado "void", pois a distribuição convidada será Void Linux.

# mkdir /mnt/void

Obs.: se usar outro nome, não esqueça de alterar nos comandos a seguir.

Entre no diretório:

# cd /mnt/void

Baixe o arquivo rootfs da Void Linux em:
Veja na imagem, em destaque, o arquivo que eu escolhi: a versão do Void com glibc, para 64-bits.
Após copiar o link, baixe o arquivo com:

# wget [link]

Extraia-o:

# tar xvf arquivo-baixado.tar.xz

Depois proceda com os comandos para o chroot:

# mount --rbind /sys /mnt/void/sys && mount --make-rslave /mnt/void/sys
# mount --rbind /dev /mnt/void/dev && mount --make-rslave /mnt/void/dev
# mount --rbind /proc /mnt/void/proc && mount --make-rslave /mnt/void/proc
# cp /etc/resolv.conf /mnt/void/etc/
# PS1='(chroot) # ' chroot /mnt/void/ /bin/bash

Pronto, agora você está dentro do Void Linux.

Atualize o xbps (gerenciador de pacotes do Void), os pacotes existentes e depois instale o editor Vim:

# xbps-install -Su xbps
# xbps-install -u
# xbps-install vim

Edite o arquivo rc.conf:

# vim /etc/rc.conf

Ele é bem comentado e autoexplicativo.

Veja imagem:
Opcionalmente edite o arquivo do idioma do sistema e atualize a configuração:

# vim /etc/default/libc-locales
# xbps-reconfigure -f glibc-locales

Crie a senha de root:

# passwd

Agora vamos fazer a configuração para que os aplicativos gráficos do Void possam aparecer no Gentoo.

Ainda no Void, instale o xauth:

# xbps-install xauth

Depois execute o comando:

# xauth list

Isso vai dizer qual é o arquivo que deve ser criado para fazer a "ligação gráfica" entre o hospedeiro e o convidado.

Aqui o resultado foi:

xauth: file /root/.xauthcktac6 does not exist

Então o arquivo é o ".xauthcktac6".

Em um novo terminal, na distro hospedeira, execute o mesmo comando. Aqui resultou em:

ladybug/unix:0 MIT-MAGIC-COOKIE-1 bb3b796bd8fdb677735d74f057df6758

O "ladybug" é o nome da máquina hospedeira! Importante.

Ainda no sistema hospedeiro execute:

# xauth extract /mnt/void/root/.xauthcktac6 ladybug/unix:0

Esse comando vai enviar para o arquivo ".xauthcktac6" (dentro do Void Linux), o código identificador (MAGIC COOKIE) do sistema hospedeiro (ladybug).

Altere os nomes onde for necessário com base no resultado dos comandos anteriores.

Agora, se você executar:

# echo $DISPLAY

Tanto no Void, quanto no Gentoo, deve obter o MESMO resultado. Aqui deu ":0".

Se no sistema convidado não der o mesmo resultado, execute nele:

# export DISPLAY=":0"

Para testar se um aplicativo gráfico instalado no sistema convidado vai abrir no sistema hospedeiro, instale o xcalc no sistema convidado:

# xbps-install xcalc

Depois execute:

# xcalc

Se der certo, o aplicativo irá abrir:
Para evitar ter problemas com fontes, instale:

# xbps-install xorg-fonts

Para evitar problemas com drivers de vídeo, instale o pacote apropriado para o seu hardware. No meu caso:

# xbps-install xf86-video-amdgpu mesa-vulkan-radeon

Será que a "gambiarra" funciona com um aplicativo mais complexo? Testei o emulador de GameCube:

# xbps-install dolphin-emu
# dolphin-emu
O emulador Dolphin da imagem acima, estava instalado no Void, não no Gentoo, porém abriu no Gentoo. A ROM do jogo estava no Gentoo, em um disco externo. Precisei montar o disco dentro do Void assim, no sistema hospedeiro:

# mount /dev/sda1 /mnt/void/mnt/

Conclusão

Uma distro dentro da outra é diferente do uma máquina virtual. Coisas são compartilhadas com o sistema hospedeiro, como o Kernel. Veja:
O Void está usando o kernel do sistema hospedeiro. Mas mesmo assim, fazer isso pode ser uma tarefa divertida de realizar, e também pode ser útil para testar programas sem interferir no sistema principal.

Para desfazer o procedimento, faça o seguinte no terminal do sistema convidado:

# exit

Para sair do chroot.

Depois:

# umount /mnt/void/sys -l
# umount /mnt/void/dev -l
# umount /mnt/void/proc -l

Agora, se quiser, pode deletar o diretório inteiro:

# rm -rf /mnt/void

Ou, se quiser montar novamente, não delete o diretório e repita os passos:

# cd /mnt/void
# mount --rbind /sys /mnt/void/sys && mount --make-rslave /mnt/void/sys
# mount --rbind /dev /mnt/void/dev && mount --make-rslave /mnt/void/dev
# mount --rbind /proc /mnt/void/proc && mount --make-rslave /mnt/void/proc
# PS1='(chroot) # ' chroot /mnt/void/ /bin/bash

Aceito sugestões e críticas construtivas!

Obrigado.

Fontes:
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Incrementando os efeitos do Ubuntu

Brutal DOOM no Linux Mint (Ubuntu)

Tema minimalista para Xubuntu 12.04

Instalação do Funtoo a partir do Debian já instalado

Porque eu uso Linux Mint

Leitura recomendada

Xen: Criando dom0 e domU no Fedora

Rsyslog - Configurando o Centralizador de Logs

Acessando o celular Siemens MC60 no Linux

Como fazer: Chroot Dosemu (Clipper no Linux)

Servidor web nginx com PHP-FPM e memcached

  
Comentários
[1] Comentário enviado por cizordj em 20/04/2021 - 12:59h

No Debian temos o deboostrap que instala a distribuição dentro uma pasta e que podemos dar chroot, muito bom o seu artigo. Esse método é legal porque daí todos os programas rodam no <em>bare metal</em>

[2] Comentário enviado por sacioz em 20/04/2021 - 17:19h

Muito bom , Xerxes ...pela minha parte , obrigado.

[3] Comentário enviado por leoCCB em 20/04/2021 - 18:01h


Legal, cara. Funciona como um chroot mas com a parte gráfica, se entendi direito

[4] Comentário enviado por removido em 20/04/2021 - 19:11h

Muito bom!

Isso poderia ser feito tmb em uma partição separada, ou em outro hd, formatando a partição para ext4 com o mkfs.ext4 e montando a raiz da distro convidada? Sendo assim, instalando o kernel no void e adicionando uma entrada no grub da distro hospedeira, a princípio, poderia dar boot nessa distro convidada. Correto?

[5] Comentário enviado por xerxeslins em 20/04/2021 - 21:34h


[4] Comentário enviado por ru4n em 20/04/2021 - 19:11h

Muito bom!

Isso poderia ser feito tmb em uma partição separada, ou em outro hd, formatando a partição para ext4 com o mkfs.ext4 e montando a raiz da distro convidada? Sendo assim, instalando o kernel no void e adicionando uma entrada no grub da distro hospedeira, a princípio, poderia dar boot nessa distro convidada. Correto?



Correto. Resumiu a instalação do Gentoo.

[6] Comentário enviado por removido em 20/04/2021 - 22:56h


[5] Comentário enviado por xerxeslins em 20/04/2021 - 21:34h

Correto. Resumiu a instalação do Gentoo.



Isso que nunca instalei o Gentoo kk

[7] Comentário enviado por maurixnovatrento em 20/04/2021 - 23:45h


"Aceito sugestões e críticas construtivas!"

Não tem nem como sugerir ou criticar. Eu achei muito bom. Pode salvar em distros com repositório muito limitado. Vou testar no Slackware.

Não sei se é pedir demais, mas rola um startx dentro da distro convidada? Aí seria fantástico.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[8] Comentário enviado por cizordj em 21/04/2021 - 18:36h


[7] Comentário enviado por mauricio123 em 20/04/2021 - 23:45h


"Aceito sugestões e críticas construtivas!"

Não tem nem como sugerir ou criticar. Eu achei muito bom. Pode salvar em distros com repositório muito limitado. Vou testar no Slackware.

Não sei se é pedir demais, mas rola um startx dentro da distro convidada? Aí seria fantástico.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Boa pergunta, também quero saber kk

[9] Comentário enviado por xerxeslins em 21/04/2021 - 20:28h


[7] Comentário enviado por mauricio123 em 20/04/2021 - 23:45h


"Aceito sugestões e críticas construtivas!"

Não tem nem como sugerir ou criticar. Eu achei muito bom. Pode salvar em distros com repositório muito limitado. Vou testar no Slackware.

Não sei se é pedir demais, mas rola um startx dentro da distro convidada? Aí seria fantástico.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Tentei e deu erro.

Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)



[10] Comentário enviado por maurixnovatrento em 24/04/2021 - 12:56h


[9] Comentário enviado por xerxeslins em 21/04/2021 - 20:28h


[7] Comentário enviado por mauricio123 em 20/04/2021 - 23:45h


"Aceito sugestões e críticas construtivas!"

Não tem nem como sugerir ou criticar. Eu achei muito bom. Pode salvar em distros com repositório muito limitado. Vou testar no Slackware.

Não sei se é pedir demais, mas rola um startx dentro da distro convidada? Aí seria fantástico.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Tentei e deu erro.

Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)





Que pena, já tinha algumas ideias. Talvez um dia eu estude isso.

[11] Comentário enviado por removido em 27/04/2021 - 22:11h

Muito bom.

Vou tentar essa solução para rodar alguns programas antigos que nas distribuições modernas não instalam mais.

[12] Comentário enviado por albfneto em 07/05/2021 - 15:28h

Legal. Muito bom. Favoritado.
Funciona com qualquer distro se eu tiver o arquivo rootfs?


¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].

[13] Comentário enviado por xerxeslins em 09/05/2021 - 21:48h


[12] Comentário enviado por albfneto em 07/05/2021 - 15:28h

Legal. Muito bom. Favoritado.
Funciona com qualquer distro se eu tiver o arquivo rootfs?


Não sei com certeza. Mas aposto que sim.
Obrigado!

[14] Comentário enviado por NidoBr em 11/05/2021 - 14:32h

Artigo top! Testei com o Manjaro como hospedeira e o Ubuntu como convidado e foi de boa, nesse caso o arquivo é o "filesystem.squashfs" e o resto foi só adaptar os comandos para os do Ubuntu e ser feliz.

[15] Comentário enviado por maurixnovatrento em 12/05/2021 - 21:58h


[14] Comentário enviado por MINEMAM em 11/05/2021 - 14:32h

Artigo top! Testei com o Manjaro como hospedeira e o Ubuntu como convidado e foi de boa, nesse caso o arquivo é o "filesystem.squashfs" e o resto foi só adaptar os comandos para os do Ubuntu e ser feliz.


Muito bom.

[16] Comentário enviado por edufaria em 28/06/2021 - 02:25h

Seguindo esse métodp seria possível instalar Android dentro de uma distro?

[17] Comentário enviado por xerxeslins em 30/06/2021 - 04:16h


[16] Comentário enviado por edufaria em 28/06/2021 - 02:25h

Seguindo esse métodp seria possível instalar Android dentro de uma distro?


Creio que não =/

[18] Comentário enviado por removido em 27/07/2021 - 12:10h

Excelente, Xerxes

[19] Comentário enviado por maurixnovatrento em 30/07/2021 - 20:42h


[17] Comentário enviado por xerxeslins em 30/06/2021 - 04:16h


[16] Comentário enviado por edufaria em 28/06/2021 - 02:25h

Seguindo esse métodp seria possível instalar Android dentro de uma distro?


Creio que não =/


poxa seria legal, mas certamente teria que habilitar os recursos do android no kernel.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts