Translation(s): Deutsch - English - Español - Français - Italiano



Installazione

Creare una "chroot" in Debian è molto semplice.

Ciò che serve è:

apt-get install binutils debootstrap

mkdir -p /srv/chroot/stretch

Selezionare manualmente un mirror di rete vicino, usare uno dei mirror basati su DNS come ftp.XX.debian.org dove XX è il codice geografico del proprio paese, oppure usare il CDN deb.debian.org che farà tutto automaticamente per l'utente. Il metodo con deb.debian.org è più facile da documentare e sta diventando il metodo generalmente preferito ed è perciò raccomandato se non si ha un proprio mirror locale veloce preferito. Vedere http://deb.debian.org/ per la documentazione e i dettagli.

debootstrap --arch i386 stretch /srv/chroot/stretch http://deb.debian.org/debian

chroot /srv/chroot/stretch

(!) Un modo più comodo di entrare nella chroot è fornito dal pacchetto schroot. Questo wrapper permette agli utenti non privilegiati di avere accesso a uno o più ambienti chroot. schroot gestisce la chiamata chroot(2) oltre all'abbandono dei privilegi all'interno della chroot, l'impostazione di "/etc/resolv.conf" e il montaggio con bind delle risorse nella chroot (come le directory home, "/dev", "/sys", "/proc").

Configurazione

In genere è necessario creare o modificare punti chiave delle configurazioni.

Creare un file /usr/sbin/policy-rc.d NELLA CHROOT, in modo che dpkg non avvii demoni a meno che non sia voluto. Questo esempio previene impedisce l'avvio nella chroot di tutti i demoni.

chroot /srv/chroot/stretch
cat > ./usr/sbin/policy-rc.d <<EOF
#!/bin/sh
exit 101
EOF
chmod a+x ./usr/sbin/policy-rc.d

Il comando ischroot è difettoso e non rileva il fatto di essere in esecuzione in una chroot (685034). Svariati pacchetti dipendono da ischroot per determinare il comportamento corretto in una chroot e funzioneranno in modo non corretto durante gli aggiornamenti se il problema non viene risolto. Il modo più semplice per farlo è di sostituire ischroot con il comando /bin/true.

dpkg-divert --divert /usr/bin/ischroot.debianutils --rename /usr/bin/ischroot
ln -s /bin/true /usr/bin/ischroot

Configurare un chroot è relativamente statico e molto specifico, è possibile fare a meno dei comandi di alto livello e modificare direttamente i file.

 /etc/passwd
 /etc/group

 /etc/hosts
 /etc/resolv.conf

 /etc/fstab

Montare pseudo filesystem

/proc

proc on /proc type proc (rw)
sysfs on /sys sysfs kind (rw)

/dev/pts

In tal caso, dal sistema principale, eseguire il comando:

mount --bind /dev/pts /srv/chroot/stretch/dev/pts

Configurazioni predefinite

Generalmente il file /etc/fstab apparirà come segue:

# grep chroot /etc/fstab
/dev /srv/chroot/stretch/dev auto bind 0 0
/dev/pts /srv/chroot/stretch/dev/pts auto bind 0 0
/proc /srv/chroot/stretch/proc auto bind 0

Perciò "mount" dal sistema principale sarà:

# mount | grep chroot
/dev on /srv/chroot/stretch/dev -type none (rw, bind)
/dev/pts on /srv/chroot/stretch/dev/pts kind none (rw, bind)
/proc on /srv/chroot/stretch/proc type none (rw, bind)

Aggiungere e rimuovere pacchetti

apt-get install deborphan

deborphan -a

apt-get remove --purge telnet manpages pppconfig ipchains ...

Complementary list svgalibg1 whiptail

apt-get install emacs23 local mc

Uso

Esempi comuni di utilizzo di un chroot:

Copia e incolla

Quanto detto sopra pronto per fare copia e incolla.

Prima la parte dove si impostano le variabili di shell.

export MCHRMIRROR=http://deb.debian.org/debian
export MCHRARCH=i386
export MCHRREL=buster
export MCHRDIR=/srv/chroot/${MCHRREL}-${MCHRARCH}
echo My chroot dir is ${MCHRDIR}

Poi il resto del materiale di cui fare copia-e-incolla, preferibilmente con attenzione.

mkdir -p ${MCHRDIR}
# passo successivo, richiede molto tempo
debootstrap --variant=buildd --arch=${MCHRARCH} ${MCHRREL} ${MCHRDIR} ${MCHRMIRROR}

# previene l'avvio di demoni da parte di dpkg nell'ambiente chroot
cat > ${MCHRDIR}/usr/sbin/policy-rc.d <<EOF
#!/bin/sh
exit 101
EOF
chmod a+x ${MCHRDIR}/usr/sbin/policy-rc.d

# nella chroot "codificare in modo fisso" ischroot a VERO
cp  ${MCHRDIR}/bin/true ${MCHRDIR}/usr/bin/ischroot

#
cp /etc/hosts ${MCHRDIR}/etc/hosts
cp /etc/resolv.conf ${MCHRDIR}/etc/resolv.conf

# quello sopra va fatto una sola volta

# montare, da fare piu' spesso
mount --bind /dev ${MCHRDIR}/dev
mount --bind /dev/pts ${MCHRDIR}/dev/pts
mount --bind /proc  ${MCHRDIR}/proc

# può anche essere necessario (es. nella modalità ripristino dell'Installatore Debian)
mount --bind /sys  ${MCHRDIR}/sys
mount --bind /run  ${MCHRDIR}/run

# Okay

# Entrare nella chroot, uscirne con exit

chroot ${MCHRDIR}
# godersi il proprio nuovo ambiente
# installare con apt quello di cui si ha bisogno
# fare quello che si vuole

Smontare

[ ! -z ${MCHRDIR} ] && echo my chroot dir is ${MCHRDIR}
[ ! -z ${MCHRDIR} ] && umount ${MCHRDIR}/proc
[ ! -z ${MCHRDIR} ] && umount ${MCHRDIR}/dev/pts
[ ! -z ${MCHRDIR} ] && umount ${MCHRDIR}/dev

# se sono state montate prima
[ ! -z ${MCHRDIR} ] && umount ${MCHRDIR}/sys
[ ! -z ${MCHRDIR} ] && umount ${MCHRDIR}/run


CategorySystemAdministration | CategoryVirtualization