Differences between revisions 7 and 8
Revision 7 as of 2013-01-10 21:13:49
Size: 3639
Editor: skizzhg
Comment:
Revision 8 as of 2013-04-28 11:07:21
Size: 4523
Comment: sync with English master
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
 <<TableOfContents(3)>> <<TableOfContents(3)>>
Line 15: Line 15:
 aptitude install binutils debootstrap apt-get install binutils debootstrap
Line 20: Line 20:
 mkdir -p /var/chroot/etch mkdir -p /srv/chroot/wheezy
Line 25: Line 25:
 debootstrap --arch i386 etch /var/chroot/etch debootstrap --arch i386 wheezy /srv/chroot/wheezy
Line 27: Line 27:

 * recupero di un'«immagine», decompressione e installazione dei pacchetti richiesti
Line 32: Line 30:
  chroot /var/chroot/etch chroot /srv/chroot/wheezy
Line 36: Line 34:
In genere è necessario creare o modificare le configurazioni. 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/wheezy
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 (DebianBug: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. Sfortunatamente ciò viene sovrascritto ogni volta che viene aggiornato DebianPkg:debianutils e l'operazione dovrà essere ripetuta.

{{{
cp /bin/true /usr/bin/ischroot
}}}
Line 42: Line 57:
  /etc/passwd
  /etc/groups
 /etc/passwd
 /etc/groups
Line 46: Line 61:
 * impostazionie di rete:  * impostazioni di rete nella chroot:
Line 48: Line 63:
  /etc/hosts
  /etc/resolv.conf
 /etc/hosts
 /etc/resolv.conf
Line 52: Line 67:
 * punti di mount:  * montaggio dei file system dell'host sottostante (NON nella chroot):
Line 54: Line 69:
  /etc/fstab  /etc/fstab
Line 59: Line 74:
 * Se il sistema non è interamente funzionante controllare la presenza di /proc nel sistema chroot. A priori, dal momento che la versione di debootstrap in Debian/Etch integra il montaggio di /proc e /sys nativamente.  * Se il sistema non è interamente funzionante controllare la presenza di /proc nel sistema chroot. A priori, dalla versione di debootstrap in Debian/Wheezy è integrato il montaggio di /proc e /sys nativamente.
Line 61: Line 76:
 proc on /proc type proc (rw)
 sysfs on /sys sysfs kind (rw)
proc on /proc type proc (rw)
sysfs on /sys sysfs kind (rw)
Line 70: Line 85:
 mount --bind /dev/pts /var/chroot/etch/dev/pts mount --bind /dev/pts /srv/chroot/wheezy/dev/pts
Line 77: Line 92:
# cat /etc/fstab | grep chroot
/dev /var/chroot/etch/dev auto bind 0 0
/dev/pts /var/chroot/etch/dev/pts auto bind 0 0
/proc /var/chroot/etch/proc auto bind 0 0
# grep chroot /etc/fstab
/dev /srv/chroot/wheezy/dev auto bind 0 0
/dev/pts /srv/chroot/wheezy/dev/pts auto bind 0 0
/proc /srv/chroot/wheezy/proc auto bind 0 0
Line 86: Line 101:
/dev on /var/chroot/etch/dev -type none (rw, bind)
/dev/pts on /var/chroot/etch/dev/pts kind none (rw, bind)
/proc on /var/chroot/etch/proc type none (rw, bind)
/dev on /srv/chroot/wheezy/dev -type none (rw, bind)
/dev/pts on /srv/chroot/wheezy/dev/pts kind none (rw, bind)
/proc on /srv/chroot/wheezy/proc type none (rw, bind)
Line 94: Line 109:
  apt-get install deborphan apt-get install deborphan
Line 97: Line 112:
  deborphan -a deborphan -a
Line 102: Line 117:
  apt-get remove --purge telnet manpages pppconfig ipchains ... apt-get remove --purge telnet manpages pppconfig ipchains ...
Line 109: Line 124:
  apt-get install emacs21 local mc apt-get install emacs23 local mc

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


Nei sistemi operativi simili a Unix, il termine chroot indica un'operazione che consiste nel cambiare la directory di riferimento dei processi che sono in esecuzione corrente e per i processi generati da questi ultimi. (Continua a leggere...)

Installazione

Creare un "chroot" in Debian è molto semplice.

Ciò che serve è:

  • installare i pacchetti necessari

apt-get install binutils debootstrap
  • scegliere una posizione

mkdir -p /srv/chroot/wheezy
  • creare il chroot

debootstrap --arch i386 wheezy /srv/chroot/wheezy
  • entrarvi:

chroot /srv/chroot/wheezy

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/wheezy
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. Sfortunatamente ciò viene sovrascritto ogni volta che viene aggiornato debianutils e l'operazione dovrà essere ripetuta.

cp /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.

  • utenti nel chroot:

 /etc/passwd
 /etc/groups
  • impostazioni di rete nella chroot:

 /etc/hosts
 /etc/resolv.conf
  • montaggio dei file system dell'host sottostante (NON nella chroot):

 /etc/fstab

Montare pseudo filesystem

/proc

  • Se il sistema non è interamente funzionante controllare la presenza di /proc nel sistema chroot. A priori, dalla versione di debootstrap in Debian/Wheezy è integrato il montaggio di /proc e /sys nativamente.

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

/dev/pts

  • È inoltre consigliato di fare un "bind" a /dev/pts. Questo previene messaggi di errore come Devo essere collegato ad un terminale o Impossibile accedere a '/dev/pts/0': File o directory non esistente durante l'uso di screen.

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

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

Configurazioni predefinite

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

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

Perciò "mount" dal sistema principale sarà:

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

Aggiungere e rimuovere pacchetti

  • Eliminare pacchetti non necessari (dipende dallo scopo del chroot):

apt-get install deborphan

deborphan -a
  • e, ad esempio:

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

Complementary list svgalibg1 whiptail

  • aggiungere qualche comodità:

apt-get install emacs23 local mc

Uso

Esempi comuni di utilizzo di un chroot:

  • ricompilazione di applicazioni in un contesto differente dalla macchina che ospita il chroot (backport, cross-compilazione, ...)

  • aggiornamento servizi di produzione orientando il vecchio (macchina ospitante) al nuovo (installato nel chroot)
  • protezione di un servizio "chrootato" dalla macchina ospitante e viceversa

Vedere anche

  • Debootstrap : impostare un'altra installazione Debian completa all'interno di una chroot.