Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Difference between revisions of "32 bit chroot environment for Wine/es"

From Funtoo
Jump to navigation Jump to search
(Created page with "Entorno de 32 bits para Wine (Usando chroot)")
 
(Created page with "al final de su archivo /home/<username>/gentoo/etc/profile")
 
(23 intermediate revisions by the same user not shown)
Line 1: Line 1:
In Funtoo 1.4, 32-bit applications cannot run directly, including 32-bit Wine. However, 32-bit Wine is required to run legacy Windows applications. There are several methods for using x86 applications on a "pure" 64-bit system such as Funtoo 1.4. You can use containers like LXD for instance. Here is another method, which I have tested and works.  
En Funtoo 1.4, las aplicaciones de 32 bits no pueden ser ejecutadas directamente, esto incluye a Wine de 32 bits. Sin embargo, Wine de 32 bits es necesario para ejecutar aplicaciones comunes de Windows. Existen varios métodos para utilizar aplicaciones x86 en un sistema "puro" de 64 bits como Funtoo 1.4. Puede utilizar contenedores LXD por ejemplo. Aquí documentaremos otra forma, una que ya se ha probado y funciona.  


The idea is to install a 32-bit Linux distribution in a chroot-ed environment, and redirect its graphical output to the host system. You can use the distribution of your choice, but in this example I use 32-bit Gentoo as it's quite similar to install and use to Funtoo.  
La idea es instalar una distribución Linux de 32 bits en un entorno al que se pueda acceder por chroot y redirigir su salida gráfica hacia el sistema anfitrión. Puede utilizar la distribución que le apetezca, pero en este ejemplo utilizaremos una instalación de Gentoo de 32 bits ya que es muy similar en uso e instalación con respecto a Funtoo.  


You can put the chroot folder anywhere you want, but I think it's a good idea to put it in your regular user's home directory. Download in that folder a x86 Gentoo stage3 tarball from http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/ (at the time of this article's creation, http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/stage3-i686-20191008T214502Z.tar.xz )
Usted puede colocar el directorio de chroot donde lo prefiera, le sugerimos hacerlo dentro de su carpeta home. Descargue dentro de ese directorio el tarball "x86 Gentoo stage3" de http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/ (En el tiempo de esta edición, http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/stage3-i686-20191008T214502Z.tar.xz )


Alternatively, you can use a Funtoo 1.4 x86 stage3, either a generic 32-bit from https://www.funtoo.org/Generic_32 or a i686 one https://www.funtoo.org/I686 then follow standard installation instructions in the Funtoo installation guide then resume below at <b>{{c|X redirection}}</b>.
De igual forma, puede utilizar un tarbal Funtoo 1.4 x86 stage3, sea una construcción genérica de 32 bits de https://www.funtoo.org/Generic_32 o una i686 de https://www.funtoo.org/I686 luego, siga las instrucciones de instalación de la Guía de instalación y continúe más abajo en <b>{{c|X redirection}}</b>.


{{console|body=
{{console|body=
Line 12: Line 12:
$##i## wget <stage3_URL>}}
$##i## wget <stage3_URL>}}


Become root from now on, or else the stage3 won't decompress properly. Then follow the installation procedure according to the Gentoo manual.
Tome el control de root por ahora, de otra forma el stage3 no podrá extraerse correctamente. Luego, siga los pasos de instalación que le proporcione el manual de Gentoo.


{{console|body=
{{console|body=
Line 27: Line 27:
\##r####b##(chroot)##bl#####i## eselect profile list}}
\##r####b##(chroot)##bl#####i## eselect profile list}}


and select a desktop profile. For me it was #5, default/linux/x86/17.0/desktop (stable). The desktop profile brings in Xorg which will be needed later for wine anyway.
y seleccione un perfil de escritorio. Para este ejemplo fue el #5, default/linux/x86/17.0/desktop (stable). El perfil de escritorio traerá Xorg el cual será necesario para Wine más adelante.


{{console|body=
{{console|body=
\##r####b##(chroot)##bl#####i## eselect profile set 5 }}
\##r####b##(chroot)##bl#####i## eselect profile set 5 }}


Edit make.conf to add the correct MAKEOPTS ("-j7" worked for me) then do a world update, and go do something else for a couple of hours.  
Edite el archivo make.conf y añada la opción MAKEOPTS correcta para su sistema ("-j7" funcionó para nosotros) y realice una actualización completa, le sugerimos hacer algo por las próximas horas.  


{{console|body=
{{console|body=
\##r####b##(chroot)##bl#####i## emerge -avuDN @world }}
\##r####b##(chroot)##bl#####i## emerge -avuDN @world }}


Once done, set up <b>{{c|X redirection}}</b> in chroot so it displays the image on the host.
Una vez todo esté listo, configure la <b>{{c|X redirection}}</b> en el entorno chroot para que éste pueda mostrar imagen en el sistema anfitrión.


On the host in another terminal:  
En el sistema anfitrión, en otra terminal:  


{{console|body=
{{console|body=
$##i## xauth list }}
$##i## xauth list }}


will show you the "magic" cookie of your host display. Put it into .Xauthority on the chroot:  
mostrará la cookie "mágica" de la pantalla del sistema anfitrión. Coloque esto dentro del archivo .Xauthority en el sistema chroot:  


{{console|body=
{{console|body=
$##i## sudo xauth extract <path_to_chroot>/root/.Xauthority <hostname>/unix:0 }}
$##i## sudo xauth extract <path_to_chroot>/root/.Xauthority <hostname>/unix:0 }}


...where <hostname> is the name of your host machine.
...donde <hostname> es el nombre de su sistema anfitrión.


<b>NB: when you log out of your host then log back in, the cookie changes so you will have to redo the line above, or X redirection will stop working.</b>  
<b>NB: Cuando cierre sesión en su sistema anfitrión la cookie cambiará, así que tendrá que repetir este paso o la redirección de X dejará de funcionar.</b>  




Back to the chroot, and verify that the cookie is set correctly:  
Regrese al entorno chroot y verifique que la cookie está colocada correctamente:  


{{console|body=
{{console|body=
\##r####b##(chroot)##bl#####i## xauth list }}
\##r####b##(chroot)##bl#####i## xauth list }}


should show the same cookie as on the host.
debería mostrar la misma cookie que en el sistema anfitrión.


Next set the DISPLAY variable in chroot:
Luego, coloque la variable DISPLAY en el entorno chroot:


{{console|body=
{{console|body=
$##i## echo $DISPLAY }}
$##i## echo $DISPLAY }}


should show ":0.0"  
debería mostrarse un ":0.0"  


{{console|body=
{{console|body=
\##r####b##(chroot)##bl#####i## export DISPLAY=":0.0" }}
\##r####b##(chroot)##bl#####i## export DISPLAY=":0.0" }}


You can add the above line to /etc/profile in Gentoo so it gets automatically set every time you enter the chroot.
Puede añadir la siguiente línea a /etc/profile en Gentoo para que se configure automáticamente cada que ingrese al entorno chroot.


Verify that it works. In chroot run xcalc (you may have to install xcalc first), and it should display on the host.  
Verifique que eso funcione. Dentro de su entorno chroot ejecute xcalc (puede que necesite instalarlo primero) y éste debería mostrarse en su monitor anfitrión.  


{{console|body=
{{console|body=
\##r####b##(chroot)##bl#####i## xcalc }}
\##r####b##(chroot)##bl#####i## xcalc }}


If no errors, emerge wine in the chroot and configure it. You should have a 32-bit wine now, ready to run 32-bit Windows binaries (minus configuring, figuring out missing libs etc - but this is beyond the scope of this writeup)  
Si no hay errores, instale wine en el entorno chroot y configure a su gusto. Finalizado esto, debería tener wine de 32 bits listo para ejecutar binarios de Windows (sin contar las configuraciones, adivinar las bibliotecas faltantes, etc - pero eso está fuera del alcance de este artículo)  


{{console|body=
{{console|body=
\##r####b##(chroot)##bl#####i## emerge wine }}
\##r####b##(chroot)##bl#####i## emerge wine }}


Final size of the chroot Gentoo on my disk was close to 4.5GB. Of course you can use the chroot x86 Gentoo/Funtoo for other things that require a 32-bit environment, not only Wine.
El tamaño final del directorio chroot con Gentoo tiene un tamaño aproximado de 4.5GB. Además, puede utilizar este entorno para otras cosas que necesiten de un entorno de 32 bits, no solo 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:
Como truco final. Una vez que tenga todo configurado, si sabe como utilizar scripts de shell, puede automatizar el proceso de cambiar la cookie para entrar al entorno chroot. Por ejemplo el siguiente script se puso dentro de ~/gentoo:


{{file|name=/home/<username>/gentoo/chr.sh|body=
{{file|name=/home/<username>/gentoo/chr.sh|body=
Line 96: Line 96:
env -i HOME=/root TERM=$TERM /bin/chroot . bash -l}}
env -i HOME=/root TERM=$TERM /bin/chroot . bash -l}}


Replace <username> with your user name, and <hostname> with your machine's name.  
Reemplace <username> con su nombre de usuario y <hostname> con el nombre de su máquina. Al ejecutar ese script como root en el directorio ~/gentoo automáticamente cambiará la cookie y entrará al chroot.  
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
Para tener la línea de comandos (chroot)# puede añadir la línea


<b>export PS1="(chroot) $PS1"</b>
<b>export PS1="(chroot) $PS1"</b>


at the end of your /home/<username>/gentoo/etc/profile file.
al final de su archivo /home/<username>/gentoo/etc/profile
[[Category:HOWTO]]
[[Category:HOWTO]]
[[Category:Official Documentation]]
[[Category:Official Documentation]]

Latest revision as of 07:45, April 13, 2020

En Funtoo 1.4, las aplicaciones de 32 bits no pueden ser ejecutadas directamente, esto incluye a Wine de 32 bits. Sin embargo, Wine de 32 bits es necesario para ejecutar aplicaciones comunes de Windows. Existen varios métodos para utilizar aplicaciones x86 en un sistema "puro" de 64 bits como Funtoo 1.4. Puede utilizar contenedores LXD por ejemplo. Aquí documentaremos otra forma, una que ya se ha probado y funciona.

La idea es instalar una distribución Linux de 32 bits en un entorno al que se pueda acceder por chroot y redirigir su salida gráfica hacia el sistema anfitrión. Puede utilizar la distribución que le apetezca, pero en este ejemplo utilizaremos una instalación de Gentoo de 32 bits ya que es muy similar en uso e instalación con respecto a Funtoo.

Usted puede colocar el directorio de chroot donde lo prefiera, le sugerimos hacerlo dentro de su carpeta home. Descargue dentro de ese directorio el tarball "x86 Gentoo stage3" de http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/ (En el tiempo de esta edición, http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/stage3-i686-20191008T214502Z.tar.xz )

De igual forma, puede utilizar un tarbal Funtoo 1.4 x86 stage3, sea una construcción genérica de 32 bits de https://www.funtoo.org/Generic_32 o una i686 de https://www.funtoo.org/I686 luego, siga las instrucciones de instalación de la Guía de instalación y continúe más abajo en X redirection.

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

Tome el control de root por ahora, de otra forma el stage3 no podrá extraerse correctamente. Luego, siga los pasos de instalación que le proporcione el manual de 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

y seleccione un perfil de escritorio. Para este ejemplo fue el #5, default/linux/x86/17.0/desktop (stable). El perfil de escritorio traerá Xorg el cual será necesario para Wine más adelante.

(chroot)# eselect profile set 5

Edite el archivo make.conf y añada la opción MAKEOPTS correcta para su sistema ("-j7" funcionó para nosotros) y realice una actualización completa, le sugerimos hacer algo por las próximas horas.

(chroot)# emerge -avuDN @world

Una vez todo esté listo, configure la X redirection en el entorno chroot para que éste pueda mostrar imagen en el sistema anfitrión.

En el sistema anfitrión, en otra terminal:

user $ xauth list

mostrará la cookie "mágica" de la pantalla del sistema anfitrión. Coloque esto dentro del archivo .Xauthority en el sistema chroot:

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

...donde <hostname> es el nombre de su sistema anfitrión.

NB: Cuando cierre sesión en su sistema anfitrión la cookie cambiará, así que tendrá que repetir este paso o la redirección de X dejará de funcionar.


Regrese al entorno chroot y verifique que la cookie está colocada correctamente:

(chroot)# xauth list

debería mostrar la misma cookie que en el sistema anfitrión.

Luego, coloque la variable DISPLAY en el entorno chroot:

user $ echo $DISPLAY

debería mostrarse un ":0.0"

(chroot)# export DISPLAY=":0.0"

Puede añadir la siguiente línea a /etc/profile en Gentoo para que se configure automáticamente cada que ingrese al entorno chroot.

Verifique que eso funcione. Dentro de su entorno chroot ejecute xcalc (puede que necesite instalarlo primero) y éste debería mostrarse en su monitor anfitrión.

(chroot)# xcalc

Si no hay errores, instale wine en el entorno chroot y configure a su gusto. Finalizado esto, debería tener wine de 32 bits listo para ejecutar binarios de Windows (sin contar las configuraciones, adivinar las bibliotecas faltantes, etc - pero eso está fuera del alcance de este artículo)

(chroot)# emerge wine

El tamaño final del directorio chroot con Gentoo tiene un tamaño aproximado de 4.5GB. Además, puede utilizar este entorno para otras cosas que necesiten de un entorno de 32 bits, no solo Wine.


Como truco final. Una vez que tenga todo configurado, si sabe como utilizar scripts de shell, puede automatizar el proceso de cambiar la cookie para entrar al entorno chroot. Por ejemplo el siguiente script se puso dentro de ~/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

Reemplace <username> con su nombre de usuario y <hostname> con el nombre de su máquina. Al ejecutar ese script como root en el directorio ~/gentoo automáticamente cambiará la cookie y entrará al chroot.

Para tener la línea de comandos (chroot)# puede añadir la línea

export PS1="(chroot) $PS1"

al final de su archivo /home/<username>/gentoo/etc/profile