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

Por: Xerxes em 20/04/2021 | Blog: https://static.vivaolinux.com.br/imagens/dicas/comunidade/300.jpg


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

Ganhe uma camiseta do Viva o Linux ajudando o Viva o Android

Como instalar o XAMPP no GNU/Linux

Gnome-shell sob a perspectiva da usabilidade

Apresentando Cinnamon

Conkyzando e atalhando o Lubuntu 12.10

Leitura recomendada

Apache2 + PHP5 + VirtualHosts no Debian e Ubuntu

Windows e Linux no mesmo micro

Como transformar Salix OS em Slackware

Configurando o NRPE (Nagios Remote Plugin Executor) no Ubuntu Desktop 9.10/Server 8.04 com criptografia SSL

Instalando e configurando ntfs-3g no CentOS 5.2 Linux

  
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.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts