Gentoo Logo

Come configurare un chroot a 32 bit

Indice:

1.  Introduzione

Introduzione ai sistemi a 64bit

La guida Gentoo Linux per il chroot a 32 bit offre un aiuto per configurare un chroot a 32 bit per un sistema Gentoo/AMD64.

Come è noto, i sistemi a 64bit non eseguono ancora le applicazioni a 32 nativamente (almeno non con portage), perciò è necessario utilizzare apposite librerie di emulazione o creare un vero e proprio ambiente a 32bit all'interno di un chroot, dove eseguire nativamente tali applicazioni. Naturalmente, per gli usi più comuni, la creazione di un ambiente in chroot non è strettamente indispensabile. Tuttavia, desiderando eseguire programmi per i quali non è possibile realizzare un binario, tranne che a 32 bit, si è forzatamente costretti a fare uso di librerie a 32bit o, appunto, generare un apposito ambiente in chroot. Questa guida insegna a configurare un ambiente in chroot 32 bit e a installare ed avviare applicazioni da esso.

2.  Installazione

Installazione di un chroot a 32 bit

Per installare un ambiente in chroot, è necessario eseguire molti dei passi necessari ad installare Gentoo Linux su un computer x86. Per ora, è opportuno procurarsi l'ultimo stage3 disponibile sui nostri mirror.

Codice 2.1: scaricare uno stage3 da un mirror di gentoo

$ cd /home/user/downloads
$ wget -c ftp://distfiles.gentoo.org/releases/x86/2006.1/stages/stage3-i686-2006.1.tar.bz2

Nota: Si osservi con attenzione che bisogna scaricare uno stage per x86 e non per AMD64.

Dopo aver scaricato lo stage3, si deve creare una nuova cartella per costruirvi dentro il nuovo chroot.

Codice 2.2: creazione di una cartella per un chroot a 32bit

$ su root inserire la password di root
# cd /mnt
# mkdir gentoo32

Ciò fatto, bisogna spostare lo stage appena scaricato, scompattarlo e configurarlo come in questo esempio.

Codice 2.3: installazione da stage3

# cd /mnt/gentoo32
# tar -xvjpf /home/user/downloads/stage3-i686-2006.1.tar.bz2
# cp -L /etc/resolv.conf /mnt/gentoo32/etc/
# cp -L /etc/passwd /mnt/gentoo32/etc/

Ecco. Il nuovo chroot è pronto per il setup. Nel prossimo capitolo è spiegato come fare.

3.  Setup

Preparare la configurazione per il nuovo chroot

Se ogni cosa fin qui è andata a buon fine, è possibile configurare il sistema e completare l'installazione del chroot a 32 bit.

Il prossimo passo consiste nella definizione dei parametri del file /mnt/gentoo32/etc/make.conf.

Codice 3.1: Configurare il nuovo make.conf

CFLAGS="-O2 -march=athlon-xp -msse2 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"

A questo punto, si devono montare i necessari file system virtuali:

Codice 3.2: Mount virtual file systems

# mount -o bind /dev /mnt/gentoo32/dev
# mount -o bind /dev/pts /mnt/gentoo32/dev/pts
# mount -o bind /dev/shm /mnt/gentoo32/dev/shm
# mount -o bind /proc /mnt/gentoo32/proc
# mount -o bind /proc/bus/usb /mnt/gentoo32/proc/bus/usb
# mount -o bind /sys /mnt/gentoo32/sys

Ecco, ora siamo in possesso di un vero e proprio sistema a 32 bit, sistemato all'interno dell'installazione a 64 e pronto per il chroot. Ora, è opportuno sistemare un link dalla cartella di portage della distribuzione a 64 verso quella a 32 bit. In questo modo, sarà possibile ottenere un aggiornamento sistematico del database senza necessità di inutili duplicazioni dei dati.

Codice 3.3: Creare un link del portage verso /usr/portage al chroot a 32bit

# mkdir -p /mnt/gentoo32/usr/portage/
# mount -o bind /usr/portage /mnt/gentoo32/usr/portage/

Nota: Ogni volta che verrà aggiornato il portage per mezzo di un emerge sync, risulterà aggiornato contemporaneamente anche l'ambiente a 32 bit.

Inoltre, se c'è necessità di eseguire applicazioni grafiche a 32bit, che fanno uso di X, si dovrà anche montare una cartella /tmp

Codice 3.4: Mount /tmp per le applicazioni in modalità GUI

# mount -o bind /tmp /mnt/gentoo32/tmp

Finalmente, siamo pronti per l'accesso all'interno del chroot.

Codice 3.5: Ingresso nel chroot

(Eseguire questo passo esclusivamente se il pacchetto setarch non è già stato
installato in precedenza)
# emerge linux32
# linux32 chroot /mnt/gentoo32 /bin/bash
(Verificare la corretta configurazione di un sistema i686)
# uname -m
i686

Avvertenza: La utility linux32 è indispensabile per modificare l'impostazione della variabile CHOST. In assenza, non sarà probabilmente possibile compilare alcunchè all'interno dell'ambiente di chroot.

Ora, il nuovo chroot a 32 è pronto per l'aggiornamento. I passi seguenti contengono le istruzioni necessarie.

Codice 3.6: Aggiornare il nuovo ambiente a 32bit di chroot

# source /etc/profile
# env-update
# emerge -au world

Dopo di ciò, la configurazione del sistema a 32 bit, può dirsi essenzialmente completata. Per mantenere il sistema in chroot immediatamente fruibile fin dall'avvio, consigliamo di generare un apposito script che abiliti l'accesso al chroot in fase di boot.

Codice 3.7: generazione di un nuovo script di init in /etc/init.d

# nano -w /etc/init.d/gentoo32
#!/sbin/runscript

depend() {
   need localmount
   need bootmisc
}

start() {
    ebegin "Mounting 32bit chroot dirs"
    mount -o bind /dev /mnt/gentoo32/dev >/dev/null
    mount -o bind /dev/pts /mnt/gentoo32/dev/pts >/dev/null &
    mount -o bind /dev/shm /mnt/gentoo32/dev/shm >/dev/null &
    mount -o bind /proc /mnt/gentoo32/proc >/dev/null
    mount -o bind /proc/bus/usb /mnt/gentoo32/proc/bus/usb >/dev/null &
    mount -o bind /sys /mnt/gentoo32/sys >/dev/null &
    mount -o bind /tmp /mnt/gentoo32/tmp >/dev/null &
    mount -o bind /usr/portage /mnt/gentoo32/usr/portage/ >/dev/null &
    eend $? "An error occured while attempting to mount 32bit chroot directories"
    ebegin "Copying 32bit chroot files"
    cp -pf /etc/resolv.conf /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/passwd /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/shadow /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/group /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/gshadow /mnt/gentoo32/etc >/dev/null &
    cp -pf /etc/hosts /mnt/gentoo32/etc > /dev/null &
    cp -Ppf /etc/localtime /mnt/gentoo32/etc >/dev/null &
    eend $? "An error occured while attempting to copy 32 bits chroot files."
}

stop() {
    ebegin "Unmounting 32bit chroot dirs"
    umount -f /mnt/gentoo32/dev/pts >/dev/null
    umount -f /mnt/gentoo32/dev/shm >/dev/null
    umount -f /mnt/gentoo32/dev >/dev/null &
    umount -f /mnt/gentoo32/proc/bus/usb >/dev/null
    umount -f /mnt/gentoo32/proc >/dev/null &
    umount -f /mnt/gentoo32/sys >/dev/null &
    umount -f /mnt/gentoo32/tmp >/dev/null &
    umount -f /mnt/gentoo32/usr/portage/ >/dev/null &
    eend $? "An error occured while attempting to unmount 32bit chroot directories"
}

A questo punto, è sufficiente eseguire il comandorc-update add gentoo32 default per predisporre l'attivazione di chroot in avvio.

Successivamente, ogniqualvolta sarà necessario accedere al nuovo ambiente, basterà eseguire il seguente comando: linux32 chroot /mnt/gentoo32 /bin/bash.

Adesso, il nuovo sistema a 32bit è pronto per installare nuove applicazioni.

4.  Applicazioni

Installare nuove applicazioni in chroot

Adesso che siamo in possesso di un chroot a 32bit pienamente funzionante, possiamo installare qualunque applicazione in modalità a 32bit. Spieghiamo ora come installare nuovi pacchetti all'interno del chroot.

Codice 4.1: Installare foo dentro al chroot

# linux32 chroot /mnt/gentoo32 /bin/bash
# source /etc/profile
# env-update
# emerge foo

Nota: Ricordarsi sempre di eseguire il comando source /etc/profile e env-update subito dopo l'ingresso nel sistema di chroot.

Così, è stato installato un nuovo pacchetto a 32bit. Per eseguirlo, è ora necessario collocarsi all'interno del chroot. Per eseguire, invece, applicazioni grafiche, la soluzione migliore è quella di utilizzare la tecnica dell'xhost. Per avviare applicazioni grafiche a 32 bit, eseguire prima di tutto il comando dall'ambiente a 64:

Codice 4.2: Xhost trick

# xhost local:localhost

Dopo di ciò, introdursi nuovamente in chroot, dove sarà possibile eseguire ogni applicazione compilata all'interno.

5.  Conclusioni

Conclusione di questa guida

Con la tecnica del chroot si possono installare molti pacchetti disponibili esclusivamente per l'architettura x86. Alcuni di essi, come OpenOffice, possono essere installati con l'uso di binari disponibili nella distribuzione Gentoo/AMD64. Alcuni dei codecs esistenti per MPlayer, richiedono esclusivamente un ambiente a 32bit, cosicché è possibile installare i win32codecs soltanto in chroot.



Stampa

Aggiornato il 16 settembre 2006

Oggetto: Questo HOWTO mostra come creare un chroot a 32 bit.

Luis Medinas
Autore

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.