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: 2.210 ]

Por: Xerxes em 20/04/2021 | Blog: https://notabug.org/xerxeslins/dicasgnulinux


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

Fedora: 5 passos essenciais

Introdução ao Arch Build System

Brutal DOOM no Linux Mint (Ubuntu)

Gnome-shell no Ubuntu em um clique

Não quebre o Debian

Leitura recomendada

Driver nVidia se sua placa tem chipset da SiS

coLinux - Linux dentro do Windows

Trazendo toda a usabilidade do GNOME 2 para o GNOME 3 do Ubuntu 11.10

Adicionando suporte ao Layer7 no Debian Lenny

Habilitando DDNS com BIND e DHCP remoto

  
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 Leo CCB 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 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?

[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 ru4n 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 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]

[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 mauricio123 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 bilufe 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 mauricio123 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 lucasjosef23 em 27/07/2021 - 12:10h

Excelente, Xerxes


Contribuir com comentário