This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

Chroot

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This page is a translated version of the page Chroot and the translation is 97% complete.
Outdated translations are marked like this.
Resources

Chroot (Change root) è un'utilità dei sistemi Unix utilizzata per cambiare la root directory apparente, in modo da creare un nuovo ambiente logicamente separato dalla root del sistema principale. Questo nuovo ambiente è detto "gabbia chroot" (o "chroot jail"). Un utente che opera all'interno di una gabbia non può vedere o accedere a file al di fuori dell'ambiente in cui è stato rinchiuso.

Uno dei principali usi di chroot è quello di creare un sistema Linux separato sopra quello corrente a scopo di test o compatibilità software. Chroot è spesso visto come un'alternativa leggera alla virtualizzazione, perché è in grado di funzionare senza il sovraccarico di un hypervisor.

Prerequisiti

Impostare l'ambiente

Quando si crea una nuova impostazione di chroot, la prima cosa necessaria è una directory in cui far risiedere il chroot. Ad esempio, un chroot potrebbe essere creato in /mnt/mychroot:

user $mkdir /mnt/mychroot
user $cd /mnt/mychroot

Per montare una installazione esistente da una partizione può essere eseguito il seguente comando. Assicurarsi di sostituire la stringa <DEVICE> nell'esempio sotto con l'unità e la partizione dell'installazione esistente:

user $mkdir /mnt/mychroot
user $mount /dev/<DEVICE> /mnt/mychroot

Se un'installazione è stata in precedenza creata in una sotto directory del filesystem di root attuale, i passaggi di cui sopra possono essere saltati.

Decomprimere i file di sistema e dell'albero Portage (nuove installazioni)

Quando si costruisce una nuova installazione, il passo successivo è quello di scaricare lo stage3 e Portage tarballs e metterli nella posizione in cui risiede chroot. Per ulteriori informazioni su questo processo si vedano le sezioni Scaricamento dello stage tarball e Estrazione dello stage tarball nel manuale di Gentoo.

root #tar xvjpf stage3-*.tar.bz2 -C /mnt/mychroot
root #tar xvjf portage-*.tar.bz2 -C /mnt/mychroot/usr

Configurazione

Prima di accedere all'ambiente chroot devono essere montate delle directory:

root #mount --rbind /dev /mnt/mychroot/dev
root #mount --make-rslave /mnt/mychroot/dev
root #mount -t proc /proc /mnt/mychroot/proc
root #mount --rbind /sys /mnt/mychroot/sys
root #mount --make-rslave /mnt/mychroot/sys
root #mount --rbind /tmp /mnt/mychroot/tmp

Qualche file di configurazione di base dovrà essere copiato dall'host, ma non si deve copiare make.conf quando si utilizza un'installazione esistente:

user $cp /etc/portage/make.conf /mnt/mychroot/etc/portage # Quando si utilizza un'installazione preesistente, saltare questo comando.
user $cp /etc/resolv.conf /mnt/mychroot/etc

optione copypasta (opzionale)

È possibile invocare questo comando per risparmiare tempo se si è in grado di copiare ed incollare.

Attenzione
Non dimenticarsi di modificare le variabili /mnt/mychroot E /dev/sda4 se necessario!
root # mkdir /mnt/mychroot && cd /mnt/mychroot && mount /dev/sda4 /mnt/mychroot && mount --rbind /dev /mnt/mychroot/dev && mount --make-rslave /mnt/mychroot/dev && mount -t proc /proc /mnt/mychroot/proc && mount --rbind /sys /mnt/mychroot/sys && mount --make-rslave /mnt/mychroot/sys && mount --rbind /tmp /mnt/mychroot/tmp && chroot /mnt/mychroot /bin/bash

Nell'mabiente chroot, non dimenticarsi di eseguire:

root #source /etc/profile
root #env-update
root #export PS1="(chroot) $PS1"

Utilizzo

Una volta fatto entrare nell'ambiente chroot eseguendo i seguenti comandi:

root #chroot /mnt/mychroot /bin/bash
root #source /etc/profile
root #env-update
root #export PS1="(chroot) $PS1"

Durante la creazione di una nuova installazione, è opportuno sincronizzare Portage per assicurarsi che tutto sia aggiornato.

(chroot) root #emerge --sync

Il sistema è ora pronto; sentitevi liberi di installare il software, modificare le impostazioni, testare pacchetti sperimentali e configurare senza avere alcun effetto sul sistema principale. Per lasciare il chroot è sufficiente digitare exit o premere Ctrl+d. In questo modo si tornerà nella console dell'ambiente normale. Non dimenticate di smontare (umount) le directory che sono state montate.

Script di init

Se impostare chroot è un lavoro che è necessario eseguire spesso, è possibile accelerare il montaggio delle directory utilizzando uno script init. Lo script dovrebbe essere aggiunto al livello di esecuzione predefinito (default runlevel) e comunque impostato per l'esecuzione automatica all'avvio del sistema:

FILE /etc/init.d/mychroot
#!/sbin/openrc-run
 
depend() {
   need localmount
   need bootmisc
}
 
start() {
     ebegin "Mounting chroot directories"
     mount -o rbind /dev /mnt/mychroot/dev > /dev/null &
     mount -t proc none /mnt/mychroot/proc > /dev/null &
     mount -o bind /sys /mnt/mychroot/sys > /dev/null &
     mount -o bind /tmp /mnt/mychroot/tmp > /dev/null &
     eend $? "Si è verificato un errore durante il montaggio delle directory dell'ambiente chroot"
}
 
stop() {
     ebegin "Unmounting chroot directories"
     umount -f /mnt/mychroot/dev > /dev/null &
     umount -f /mnt/mychroot/proc > /dev/null &
     umount -f /mnt/mychroot/sys > /dev/null &
     umount -f /mnt/mychroot/tmp > /dev/null &
     eend $? "Si è verificato un errore durante lo smontaggio delle directory dell'ambiente chroot"
}

Quando si utilizza una directory od una partizione diverse, aggiungere i comandi di montaggio necessari nella funzione start() e modificare /mnt/chroot con il nome appropriato.

Vedere anche