Chroot em um ambiente 32-bits para rodar o Wine

From Funtoo
Revision as of 02:01, October 17, 2021 by Joaopv46 (talk | contribs) (Created page with "O tamanho final do meu ambiente chroot foi de aproximadamente 4.5GB. Claro que você pode usar o ambiente chroot x86 do Gentoo/Funtoo para outras coisas que nescessitam de um...")
Jump to navigation Jump to search

No Funtoo 1.4, programas em 32 bits não podem ser executados diretamente, incluindo o Wine 32-bits. Porém, o Wine 32-bits é nescessário para rodar programas de antigos de Windows. Existem varios métodos para usar aplicações x86 em um sistem 64-bits puro como o Funtoo 1.4. Você pode usar containers como o LXD para criar uma instancia. Aqui será mostrado outro método, que eu testei e é funcional.

A idéia é instalar uma distribuição Linux 32-bits num ambiente logado em com o comando chroot, e redirecionar ele para uma saida gráfica para o sistema principal. Você pode usar a distribuição da sua escolha, mas nesse exemplo eu usarei o Gentoo 32-bits que tem uma instalação similar à que nós usamos no Funtoo.

Você pode colocar a pasta onde realizará a instalação do ambiente em qualquer lugar que você quiser, mas é uma boa idéia colocar no seu diretório home padrão. Faça download do tarbal do stage3 do Gentoo em http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/ e descompacte na pasta escolida.

Como alternativa você pode usar o stage3 do Funtoo 1.4 x86, ou um stage3 generico em https://www.funtoo.org/Generic_32 ou um stage da arquitetura i686 em https://www.funtoo.org/I686 e siga as intruções de instalação padrão no guia de instalação do Funtoo e volte na parte do: X redirection

user $ mkdir ~/gentoo
user $ cd ~/gentoo
user $ wget <stage3_URL>

Entre como root por enquanto, se não o stage3 não será descompactado corretamente. Então siga os procedimentos de instalação de acordo com o manual de instalação do Gentoo.

user $ sudo su
root # tar xpf <stage3>
root # cp /etc/resolv.conf /home/<username>/gentoo/etc
root # mount -t proc none proc
root # mount --rbind /sys sys
root # mount --rbind /dev dev
root # env -i HOME=/root TERM=$TERM /bin/chroot . bash -l
root # export PS1="(chroot) $PS1"
(chroot)# emerge-webrsync
(chroot)# emerge --sync
(chroot)# eselect profile list

e selecione o perfil de desktop. No meu caso foi o número 5, default/linux/x86/17.0/desktop (stable). O perfil de desktop já vem com o Xorg que será nescessário depois para o Wine.

(chroot)# eselect profile set 5

Edite o arquivo /etc/make.conf de acordo com o seu gosto e para configurar corretamente o processo de compilação. Adicione a opção MAKEOPTS="-jn" onde n é a quantidade de threads que você deseja alocar para o processo de compilação, isso vai agilizar o processo para que você não fique horas compilando. É importante ler o manual do Gentoo para entender mais sobre o assunto.

(chroot)# emerge -avuDN @world

Depois de finalizar, inicio o X redirection como chroot , isso ira mostrar a imagem no seu sistema principal.

Agora no ambiente principal em outro terminal:

user $ xauth list

vai mostrar para você o cookie "mágico" na tela do seu ambiente principal. Coloque no seu arquivo .Xauthority como chroot.

user $ sudo xauth extract <path_to_chroot>/root/.Xauthority <hostname>/unix:0

...onde estiver <hostname> é onde vai o nome da sua máquina.

NB: Quando você sai do seu sistema principal e entra novamente, o cookie muda, então você tem que refazer a linha a cima, se não o X redirection vai parar de funcionar


Volte para o chroot e verifique se o cookie está iniciado corretamente:

(chroot)# xauth list

deve mostrar o mesmo cookie que o seu sistema principal.

Depois inicie a variavel DISPLAY no chroot:

user $ echo $DISPLAY

deve mostrar ":0.0"

(chroot)# export DISPLAY=":0.0"

Você pode adicionar a linha acima no arquivo /etc/profile no Gentoo e isso irá iniciar esse comando toda vez que você entra como chroot.

Verefique se isso funcionou. No chroot execute xcalc (você precisa instalar o xcalc primeiro), e isso deve mostrar no seu sistema principal.

(chroot)# xcalc

Caso não ocorre erros, baixe o Wine no sistema chroot e configure ele. Você deve instalar e configurar o Wine 32-bits agora, pronto para rodar os binários 32-bits de Windows (configuração minus, incluindo bibliotecas que estão faltando e etc - mas essas coisas estão fora do escopo desse artigo)

(chroot)# emerge wine

O tamanho final do meu ambiente chroot foi de aproximadamente 4.5GB. Claro que você pode usar o ambiente chroot x86 do Gentoo/Funtoo para outras coisas que nescessitam de um ambiente 32-bits, não apenas para usar o Wine.


And a final trick. Once you have everything setup, if you know how to use shell scripts you can automate the process of setting the cookie and entering the chroot. For instance I use a script that I put in ~/gentoo:

   /home/<username>/gentoo/chr.sh
rm /home/<username>/gentoo/root/.Xauthority
xauth extract /home/<username>/root/.Xauthority <hostname>/unix:0
mount -t proc none proc
mount --rbind /sys sys
mount --rbind /dev dev
env -i HOME=/root TERM=$TERM /bin/chroot . bash -l

Replace <username> with your user name, and <hostname> with your machine's name. By executing that script as root from the ~/gentoo directory it automatically sets the cookie and enters the chroot.

To get the (chroot)# prompt, you can add the line

export PS1="(chroot) $PS1"

at the end of your /home/<username>/gentoo/etc/profile file.