Spesso, essendo uno sviluppatore Debian, voglio provare i miei pacchetti prima di effettuarne l'upload. Ma, se i miei pacchetti dovessero avere dei brutti bug che provocano l'equivalente di rm -rf /, sarebbe poco piacevole fare i test sulla mia installazione di produzione.
Grazie ad una combinazione dei programmi chroot e debootstrap, è possibile installare un sistema Debian isolato in cui loggarsi ed installare pacchetti, senza il timore di distruggere il proprio sistema. Attualmente, sto usando una soluzione del genere per avere sia GNOME 2 che GNOME 1 installati tramite pacchetti Debian in 2 chroot separati, dove posso provare gli script per la transizione GNOME 1 --> GNOME 2.
Usando debootsrap, è possibile settare degli ambienti chroot per woody, sarge, o sid. Nel resto del documento si tratterà della creazione di un chroot sid.
Crea una directory, ad esempio /sid/. Se non scegli tale nome, assicurati di sostituire il nome da te scelto a /sid/ nel resto di questo documento.
mkdir /sid/
Attualmente è necessario installare prima woody e successivamente effettuare l'upgrade a sid. sid cambia troppo rapidamente per essere efficacemente debootstrappabile (è la prima volta che vedi questo aggettivo!). Quindi, lancia debootstrap:
debootstrap woody /sid/ http://ftp.it.debian.org/debian/
Configura il file /etc/fstab del tuo sistema stabile per effettuare il mount del filesystem /proc del sistema chroot.
echo proc-sid /sid/proc proc none 0 0 >> /etc/fstab mount /sid/proc
Configura il networking nel sistema chroot.
echo 127.0.0.1 localhost $(hostname) > /sid/etc/hosts
Ora sei pronto per usare il chroot! Usa il programma chroot per entrare nel nuovo sistema.
chroot /sid/ /bin/sh
A questo punto si può fare l'upgrade dell'installazione woody a sid. Puoi saltare questo passaggio se vuoi semplicemente woody.
(echo deb http://ftp.it.debian.org/debian/ sid main; echo deb-src http://ftp.it.debian.org/debian/ sid main) > /etc/apt/sources.list apt-get update apt-get dist-upgrade
Dare un semplice chroot /sid/ è facile, ma così facendo vengono mantenute tutte le variabili d'ambiente che potresti non volere, ecc... Un approccio migliore è quello che consiste nel lanciare un altro processo di login su un terminale virtuale, dal quale loggarsi direttamente nella directory chroot.
Cerca le seguenti linee nel tuo /etc/inittab:
# Nota che in molti sistemi Debian la tty7 è usata dall' X Window System, # quindi è consigliabile non modificarne la parte relativa. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6
Aggiungi una linea di questo genere:
8:23:respawn:chroot /sid/ /sbin/getty 38400 tty8
L' "8" sta ad indicare il terminale virtuale da cui effettuare il nuovo login. Puoi sceglierne un altro se preferisci.
Ricarica l'init:
init q
Vuoi lanciare X e GNOME dal tuo chroot? E' assolutamente possibile! L'esempio seguente permette a GDM di girare su un terminale virtuale 8; dovresti sceglierne un altro (9, ad esempio) se hai assegnato login al vt8, come nell'esempio precedente. A tutti i modi, ecco cosa bisogna fare:
(passa al tuo chroot, o con chroot /sid/ o settando login come sopra)
apt-get install gdm gnome x-window-system
Copia il tuo /etc/X11/XF86Config-4 dal tuo sistema principale al chroot:
cp /etc/X11/XF86Config-4 /sid/etc/X11/XF86Config-4
Loggati ancora nel chroot, e modifica/etc/gdm/gdm.conf. Nella sezione [servers] troverai una linea come questa:
0=Standard vt7
Modificala come segue:
0=Standard vt8
Come visto prima, potresti sostituire ogni terminale di tuo gradimento al posto dell' "8".
Sempre dal chroot, lancia:
/etc/init.d/gdm start
Ora puoi facilmete passare dall'X Window System del chroot a quello del tuo sistema, semplicemente passando da un terminale virtuale all'altro; per esempio premendo Ctrl-Alt-F7 o Ctrl-Alt-F8. Buon divertimento!
ema@debian.org