|
1.
Introduzione
Introduzione ai sistemi a 64bit
La guida Gentoo Linux per il chroot a 32 bits 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.
1.
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 1.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 1.1: 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 1.1: 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.
1.
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 1.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 1.1: 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 1.1: 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 1.1: 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 1.1: Ingresso nel chroot |
# emerge --noreplace sys-apps/util-linux
# 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 1.1: Aggiornare il nuovo ambiente a 32bits 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 1.1: 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 32bits 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 32bits 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 32bits 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 32bits 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.
1.
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 1.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 1.1: Xhost trick |
# xhost local:localhost
|
Dopo di ciò, introdursi nuovamente in chroot, dove sarà possibile eseguire ogni
applicazione compilata all'interno.
1.
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.
|