Ambiente chroot

Un ambiente chroot è comunemente usato per lavori legati allo sviluppo ed è sostanzialmente un luogo di installazione per software legato alla compilazione. E' sempre una buona idea realizzare attività di sviluppo in un ambiente chroot, dato che spesso è richiesta l'installazione di pacchetti di sviluppo (la cui funzione principlale è la creazione di pacchetti). Un esempio è quando una data applicazione richiede gli header e le versioni di sviluppo di una libreria per compilare (p.e. libabc-dev). Un utente normale non ha bisogno della versione di sviluppo di libabc. Quindi è meglio installare tale pacchetto in un ambiente chroot, lasciando il sistema classico pulito e leggero. Per prima cosa, installa i pacchetti richiesti:

sudo apt-get install dchroot debootstrap
[Importante]

Make sure to install at least the version of debootstrap that is from the Ubuntu release for which you are trying to create the chroot. You may have to download it from packages.ubuntu.com and manually install it with dpkg -i.

I prossimi passi sono la creazione, la configurazione e l'ingresso nell'ambiente chroot.

sudo mkdir /var/chroot
echo "mychroot /var/chroot" | sudo tee -a /etc/dchroot.conf
sudo debootstrap --variant=buildd edgy /var/chroot/ http://archive.ubuntu.com/ubuntu/
[Nota]

Creating a chroot environment will take some time as debootstrap downloads and configures a minimal Ubuntu installation.

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
sudo chroot /var/chroot/ /bin/bash

Per poter usare apt nell'ambiente chroot, aggiungi i sorgenti di Ubuntu nel file sources del chroot. Per il momento, ignora qualsiasi avvertimento sull'autenticazione dei pacchetti:

echo "deb     http://archive.ubuntu.com/ubuntu edgy main restricted \
	universe multiverse" > /etc/apt/sources.list
echo "deb-src http://archive.ubuntu.com/ubuntu edgy main restricted \
	universe multiverse" >> /etc/apt/sources.list
apt-get update
apt-get install build-essential dh-make automake pbuilder gnupg lintian \
	wget debconf devscripts gnupg sudo

Lancia il seguente comando per configurare le opzioni internazionali e di lingua:

apt-get update
apt-get install dialog language-pack-en
exit
[Nota]

Se vuoi il supporto per una lingua differente dall'inglese, sostituisci en in language-pack-en con il codice lingua appropriato.

Poi, correggi l'utente e la password di root per l'ambiente chroot. L'ultima riga qui sotto serve per evitare gli avvertimenti di sudo durante l'uso nell'ambiente chroot:

sudo cp /etc/passwd /var/chroot/etc/
sudo sed 's/\([^:]*\):[^:]*:/\1:*:/' /etc/shadow | sudo tee /var/chroot/etc/shadow
sudo cp /etc/group /var/chroot/etc/
sudo cp /etc/hosts /var/chroot/etc/

Per abilitare sudo, imposta la tua password di root e il primo utente sudo nel gruppo admin (per l'ambiente chroot). Nei seguenti comandi sostituisci "<utente>" con il nome utente che userai nell'ambiente chroot:

sudo cp /etc/sudoers /var/chroot/etc/
sudo chroot /var/chroot/
dpkg-reconfigure passwd
passwd <user>
exit

L'fstab di sistema deve essere modificato affinchè l'ambiente di chroot possa accedere alle directory home di sistema, alle directory temporanee, ecc... Fare attenzione che l'attuale directory home di sistema è usata nell'ambiente di chroot.

sudo editor /etc/fstab

Aggiungere queste linee:

/home /var/chroot/home none bind 0 0
/tmp /var/chroot/tmp none bind 0 0 
proc-chroot /var/chroot/proc proc defaults 0 0 
devpts-chroot /var/chroot/dev/pts devpts defaults 0 0 

Montare le nuove linee di fstab

sudo mount -a

Il profilo predefinito di bash include le informazioni di chroot nel prompt. Per renderle visibili:

sudo chroot /var/chroot/
echo mychroot > /etc/debian_chroot
exit

Ora usa il tuo chroot (puoi omettere l'opzione -c mychroot se ne esiste solo uno o desideri usare il primo elencato in /etc/dchroot.conf). Il parametro -d serve per fare in modo che il tuo ambiente chroot sia preservato. Questo parametrò di solito è utile se vuoi che le applicazioni che girano sotto chroot usino senza problemi il tuo server X, il tuo gestore di sessioni, ecc.

dchroot -c mychroot -d