Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Programmazione/DebootstrapChroot"
Differenze tra le versioni 12 e 42 (in 30 versioni)
Versione 12 del 11/04/2007 21.43.11
Dimensione: 19609
Commento:
Versione 42 del 24/02/2019 21.30.18
Dimensione: 6404
Autore: dd3my
Commento: nuovo stile note/avvisi/suggerimenti
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
## page was renamed from Programmazione/Chroot
## page was renamed from ChrootConDebootstrap
#format wiki
Linea 2: Linea 5:
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">[[TableOfContents]]||
<<BR>>
<<Indice(depth=1)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=320302"; rilasci="12.04 11.10 11.04 10.04")>>
Linea 7: Linea 11:
Questo tutorial mostra come usare debootstrap per realizzare un ambiente chroot che può essere usato per diversi scopi: provare le ultime release di Ubuntu, testare nuovi programmi senza "sporcare" il proprio sistema, avere un sistema a 32-bit secondario (per utilizzare programmi disponibili solo a 32-bit, senza dover rinunciare a un sistema a 64-bit) o anche lavorare con Debian... tutto è possibile con un chroot. Questa guida mostra come usare '''debootstrap''' per realizzare un ambiente virtuale [[AmministrazioneSistema/Chroot|chroot]] senza ricorrere all'uso di sistemi di [[Virtualizzazione|virtualizzazione]].
Linea 9: Linea 13:
Prima si installeranno gli strumenti per ottenere un chroot e si spiegherà come realizzare una configurazione di base, dopo si descriverà come accedere al login del sistema di chroot da un diverso terminale virtuale (quelli ottenibili premendo '''Ctrl+Alt''' ed '''F1''', '''F2''', ecc... ), poi come consentire a un utente normale di accedere al chroot mantenendo le sue variabili d'ambiente e infine come accedere ai programmi residenti nel chroot direttamente dal proprio sistema. = Installazione =
Linea 11: Linea 15:
Quello che leggerete non è un'opera originale (il grazie va agli autori dei riferimenti riportati) ma solo una libera interpretazione dei loro accorgimenti adattati alle mie esigenze. È necessario [[AmministrazioneSistema/InstallareProgrammi|installare]] i pacchetti [[apt://debootstrap | debootstrap]] e [[apt://schroot | schroot]].
Linea 13: Linea 17:
= Definizioni e notazioni = = Configurazione di schroot =
Linea 15: Linea 19:
Tutto è stato provato su una Ubuntu Breezy Badger, ma non c'è motivo di ritenere che non funzioni su una '''Ubuntu Dapper''' o su una Debian. Si immagina che abbiate una connessione alla rete disponibile.

Si indicherà con '''@main''' il sistema principale e con '''@chroot''' la shell nel sistema chroot. Con '''user@''' e '''root@''' si indicano, rispettivamente, un utente comune e l'amministratore. Per risparmiare la scrittura di molti '''sudo''', da una shell invocate i diritti di root: {{{
user@main$ sudo bash
Prima di proseguire, è necessario assegnare un nome all'ambiente virtuale e creare, con un [[Ufficio/EditorDiTesto|editor di testo]], un file di configurazione nella cartella `/etc/schroot/chroot.d/`. Digitare in una finestra di [[AmministrazioneSistema/RigaDiComando|terminale]]:
{{{
sudo editor /etc/schroot/chroot.d/precise_i386.conf
Linea 21: Linea 24:
Ora avete i permessi di amministrazione del sistema. {{{#!wiki note
Sostituire la dicitura «editor» con l'editor di testo scelto e «precise_i386» con il nome scelto per il sistema virtuale.}}}
Linea 23: Linea 27:
= Creare il chroot =

Utilizziamo '''apt-get''' per installare ''dchroot'' (questo pacchetto contiene un setuid binario che permette agli utenti di eseguire una shell o altri comandi sotto un differente filesystem di root) e ''deboostrap'' (che permette di creare un sistema base senza avere '''apt''' e '''dpkg''' disponibili): {{{
root@main# apt-get install dchroot debootstrap
Inserire nel file di configurazione creato in precedenza tutte le informazioni necessarie al corretto funzionamento dell'ambiente virtuale. Quello che segue è un esempio:
{{{
[precise_i386]
description=Ubuntu 12.04 Precise for i386
type=directory
directory=/srv/chroot/precise_i386
#personality=linux32
root-users=bob
run-setup-scripts=true
run-exec-scripts=true
type=directory
users=alessio,milo,leo
Linea 29: Linea 41:
Realizziamo la directory: {{{
root@main# mkdir /mychroot
Quello che segue è un elenco che illustra alcune delle opzioni possibili:

 * '''type''': Il tipo di chroot, fra i valori ammessi ci sono ''plain'', ''directory'', ''file'' e ''loopback''.
 * '''directory''': Indica la cartella contenente il filesystem del sistema virtuale qualora sia di tipo ''directory''; è consigliato impostare un percorso simile a `/srv/chroot/`.
 * '''personality''': Tipo di architettura, da specificare se diversa da quella del sistema ospite.
 * '''users''': Elenco degli utenti che potranno accedere al sistema virtuale tramite il comando '''schroot'''; è consigliato inserire il proprio nome utente.
 * '''root-users''': Elenco degli utenti che potranno accedere al sistema virtuale tramite il comando '''schroot''' e ai quali verranno assegnati i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]].

{{{#!wiki important
È importante non racchiudere fra virgolette i valori inseriti dopo il carattere «=» e non inserire spazi prima e dopo lo stesso.}}}

= Avviare debootstrap =

Il comando '''debootstrap''' scaricherà e decomprimerà un sistema Ubuntu di base nella cartella del sottosistema ''chroot''.

Digitare i seguenti comandi in una finestra di terminale:
{{{
sudo mkdir -p /srv/chroot/precise_i386
sudo debootstrap --variant=buildd --arch i386 precise /srv/chroot/precise_i386 http://archive.ubuntu.com/ubuntu/
Linea 33: Linea 62:
Se avete intenzione di installare diversi chroot valutate la possibilità di non utilizzare la directory /mychroot direttamente, ma di utilizzare una sua sottodirectory (per esempio: /mychroot/primo e /mychroot/secondo, etc).

[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Utilizzare una partizione dedicata per il chroot rende tutto molto più elegante, anche se non indispensabile. Scegliete una partizione e montatela aggiungendo la riga al vostro file `/etc/fstab`. [[BR]] [[BR]]

Modifichiamo il file /etc/dchroot.conf: {{{
root@main# echo "il_mio_chroot /mychroot" >> /etc/dchroot.conf
I precedenti comandi sono validi per qualsiasi distribuzione derivata da Debian, é sufficiente sostituire i parametri «precise», «i386» e l'indirizzo degli archivi con quelli appropriati alla configurazione desiderata. Per esempio, con il seguente comando si può creare un sottosistema ''chroot'' di '''Ubuntu 11.10''' «'''Oneiric Ocelot'''» per architetture '''amd64''':
{{{
sudo debootstrap --arch amd64 oneiric /srv/chroot/oneiric_amd64/ http://archive.ubuntu.com/ubuntu/
Linea 41: Linea 67:
Infatti, '''dchroot''' legge le configurazioni di questo file per determinare i chroot validi nel sistema. Le linee consistono di un identificatore e di un percorso separato da spazi. Se più di una linea sono presenti la prima indica il chroot di default.

Se volete un chroot a 32-bit su un sistema amd64 (o emt64) aggiungete al comando debootstrap l'opzione --arch i386, mentre userete --arch amd64 per creare un chroot a 64-bit (ma solo se avete un 64-bit!), se volete usare il chroot per costruire nuovi pacchetti aggiungete l'opzione --variant=buildd.

Per realizzare un chroot a 32-bit di breezy: {{{
root@main# debootstrap --arch i386 breezy /mychroot/ http://archive.ubuntu.com/ubuntu
Per creare un sottosistema '''Debian''' per [[Architettura64Bit|architetture a 64 bit]] è possibile utilizzare un comando simile al seguente:
{{{
sudo debootstrap --arch amd64 sid /srv/chroot/sid_amd64/ http://ftp.debian.org/debian/
Linea 49: Linea 72:
Sostituite breezy con dapper se volete Dapper Drake. Ovvero scriverete: {{{
root@main# debootstrap --arch i386 dapper /mychroot/ http://archive.ubuntu.com/ubuntu
{{{#!wiki note
È necessario adattare il file di configurazione al sottosistema installato.}}}

= Verificare il chroot =

Il seguente comando visualizza l'elenco dei sottosistemi installati e configurati:
{{{
schroot -l
Linea 53: Linea 82:
Alternative per realizzare un chroot di Debian: {{{
root@main# debootstrap --arch i386 sid /mychroot/ http://ftp.debian.org/debian/
root@main# debootstrap --arch amd64 sid /mychroot/ http://amd64.debian.net/debian-amd64/
Se nell'elenco è visibile la voce relativa al ''chroot'' desiderato, è possibile effettuarvi l'accesso come amministratore digitando il seguente comando in una finestra di terminale:
{{{
schroot -c lucid_i386 -u root
Linea 58: Linea 87:
[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Alcuni autori consigliano di eseguire il chroot di una Debian testing e solo dopo di aggiornare a sid. [[BR]] [[BR]] [[BR]] Sostituire la dicitura «lucid» con quella adatta alla propria configurazione.
Linea 60: Linea 89:
Se debootstrap termina con successo avete un sistema base in /mychroot, ma occorrono alcune operazioni per renderlo utilizzabile con successo. Montate il filesystem `/proc` per il chroot: {{{
root@main# echo "/proc /mychroot/proc proc defaults 0 0" >> /etc/fstab
root@main# mount /proc
= Gestione dei collegamenti fra il sistema ospite e quello virtuale =

Per comodità, le cartelle presenti in «/home» vengono montate all'interno del sistema virtuale. Nel caso si desideri una diversa configurazione, è sufficiente aprire il file `/etc/schroot/mount-defaults` con un [[Ufficio/EditorDiTesto|editor di testo]] con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] e commentare le righe relative alle cartelle degli utenti.

Quello che segue è un esempio:
{{{
# mount.defaults: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/pts /dev/pts none rw,bind 0 0
tmpfs /dev/shm tmpfs defaults 0 0
#/home /home none rw,bind 0 0
/tmp /tmp none rw,bind 0 0
Linea 65: Linea 107:
Copiate la configurazione del file di hosts e il file delle repository: {{{
root@main# cp /etc/hosts /mychroot/etc/
root@main# cp /etc/apt/sources.list /mychroot/etc/apt/
= Installazione di un sistema di base =

Prima di procedere con l'installazione dei pacchetti è necessario accedere al sistema virtuale. Digitare il seguente comando:
{{{
schroot -c precise_i386 -u root
Linea 70: Linea 114:
[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Modificate il file `sources.list` se necessario, affinché '''apt-get''' punti ai corretti repository. [[BR]] [[BR]] [[BR]] Sostituire la dicitura «precise» con quella adatta alla propria configurazione.
Linea 72: Linea 116:
Finalmente entrate nel vostro nuovo chroot: {{{
root@main# chroot /mychroot/
Per installare i pacchetti di base all'interno di un sistema ''chroot'' è sufficiente digitare i seguenti comandi:
{{{
apt-get install ubuntu-minimal
Linea 76: Linea 121:
Aggiornate il vostro sistema (notate che nel vostro chroot siete amministratori e non è necessario utilizzare il comando sudo): {{{
root@chroot# apt-get update
root@chroot# apt-get upgrade
Se si desidera installare il supporto per la lingua italiana è sufficiente digitare i seguenti comandi:
{{{
dpkg-reconfigure locales
apt-get install language-pack-it
locale-gen it.UTF-8
Linea 81: Linea 128:
Se volete riconfigurate la vostra lingua: {{{
root@chroot# apt-get install locales dialog
root@chroot# dpkg-reconfigure locales
}}}
= Ulteriori risorse =
Linea 86: Linea 130:
[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Diversi avvisi relativi a perl compariranno mentre lanciate il comando ma questo non pregiudica il funzionamento del chroot. [[BR]] [[BR]] [[BR]]

Per configurare l'ora: {{{
root@chroot# tzconfig
}}}

Per terminare la vostra sessione nel nuovo chroot è sufficiente uscire con il comando: {{{
root@main# exit
}}}

Se volete accedere al vostro chroot solo da amministratore potete non proseguire la lettura ed accedere al vostro chroot con il comando: {{{
user@main$ sudo chroot /chroot/
}}} ma probabilmente sarete in grado di utilizzare solo la shell. Se invece volete sfruttare tutta la potenza che dchroot offre (ovvero usare programmi con interfaccia grafica, ed altro) vi conviene stringere i denti e proseguire.

[[Anchor(login)]]
= Configurare il login di un chroot =

Come visto configurare il chroot è semplice, accedervi è ancora più semplice, ma cosi facendo nel chroot siete sempre amministratori e inoltre mantenete i set dell'ambiente principale anche nel chroot. Immaginate di poter accedere nel chroot attraverso il login di un altro terminale virtuale oppure attraverso gdm: ecco potete fare anche questo!

[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Se il vostro intento è solo quello di utilizzare programmi con interfaccia del chroot dal sistema principale saltate al capitolo sucessivo. [[BR]] [[BR]] [[BR]]

Create un nuovo utente per il sistema chroot, che vi servirà per accedervi al login: {{{
root@chroot# adduser utente_comune_chroot
}}}

Ora, per poter dedicare un terminale virtuale al vostro chroot modificate il vostro `/etc/inittab`: {{{
root@main# echo "8:23:respawn:/usr/sbin/chroot /mychroot /sbin/getty 38400 tty8" >> /etc/inittab
}}}

Riavviate init: {{{
root@main# init q
}}}

Premendo contemporaneamente '''Ctrl+Alt+F8''' passerete nel terminale virtuale 8 dove potrete effettuare il login al vostro chroot: in questo terminale non avete '''X'''. Premete '''Ctrl+Alt+F7''' per tornare nel terminale virtuale 7 utilizzato in modo predefinito.

Se volete utilizzare X e GNOME (ma potrebbe essere anche KDE) nel vostro chroot, configurate i device, installate GNOME, gdm e il sistema X-window: {{{
root@chroot# cd /dev
root@chroot# /sbin/MAKEDEV generic
root@chroot# apt-get install gdm gnome x-window-system-core
}}}

Uscite dal chroot e modificate il file `/mychroot/etc/gdm/gdm.conf`, sostituendo, nella sezione «'''[servers]'''», la riga: {{{
0=Standard vt7
}}} con: {{{
1=Standard vt9
}}}

Così facendo, avete abilitato il display ''':1''' nel terminale virtuale 9. Prima di potervi accedere dovete configurare X modificando il file `/etc/X11/xorg.conf`.
Da un terminale del vostro sistema: {{{
root@main# cp /etc/X11/xorg.conf /mychroot/etc/X11/
}}}

Finalmente dal chroot potete avviare l'interfaccia grafica del chroot: {{{
root@chroot# /etc/init.d/gdm start
}}}

Il sistema passerà automaticamente al terminale virtuale 9 dove vedrete caricare il login manager. Accedete come di consueto, utilizzando l'utente precedentemente creato. Utilizzate '''Ctrl+Alt+F7''' e '''Ctrl+Alt+F9''' per passare da un sistema all'altro.

[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Se invece di gdm volete utilizzare kdm, riferitevi alla sua documentazione per la corretta configurazione. [[BR]] [[BR]] [[BR]]

[[Anchor(chrootutentecomune)]]
= Configurare un ambiente chroot per un utente comune =

L'approccio precedente consente di utilizzare tutto il sistema grafico di chroot, con variabili d'ambiente diverse, anzi con un utente appositamente creato per il sistema chroot. Spesso però è necessario voler consentire all'utente comune del sistema principale di accedere ai programmi residenti nel sistema chroot, lasciandogli mantenere le proprie impostazioni di base, condividendo la /home tra sistema principale e chroot.

Copiate le informazioni degli utenti (`/etc/passwd`), le password criptate degli utenti (`/etc/shadow`), le informazioni dei gruppi (`/etc/group`), le abilitazioni concesse per sudo (`/etc/sudoers`) e le informazioni per la connessione di rete (`/etc/hosts`): {{{
root@main# cp /etc/passwd /mychroot/etc/
root@main# cp /etc/shadow /mychroot/etc/
root@main# cp /etc/group /mychroot/etc/
root@main# cp /etc/sudoers /mychroot/etc/
}}}

[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Non è possibile realizzare un collegamento simbolico in `/mychroot/etc/` ai file originali, poiché una volta nel chroot la directory di root cambia e il collegamento simbolico punterebbe riferendosi alle nuove condizioni. [[BR]] [[BR]] [[BR]]

Modificate il file `/etc/fstab` del vostro sistema (non del chroot) per permettere il mount di alcune directory direttamente nel chroot: {{{
root@main# echo "/home /mychroot/home none bind 0 0" >> /etc/fstab
root@main# echo "/tmp /mychroot/tmp none bind 0 0" >> /etc/fstab
root@main# echo "/dev /mychroot/dev none bind 0 0" >> /etc/fstab
root@main# echo "/media/cdrom0 /mychroot/media/cdrom0 none bind 0 0" >> /etc/fstab
root@main# echo "/usr/share/fonts /mychroot/usr/share/fonts none bind 0 0" >> /etc/fstab
}}}

Per montare altre directory direttamente nel chroot, avrete capito che dovete aggiungere una riga nel file `/etc/fstab` scritta così: {{{
directory /mychroot/punto_di_mount none bind 0 0
}}}

Create le directory nel chroot: {{{
root@main# mkdir /mychroot/media/cdrom0
root@main# mkdir /mychroot/usr/share/fonts
}}}

Rimontate il vostro file fstab: {{{
root@main# mount -a
}}}

[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] (solo per chi a letto il quarto capitolo) È probabile (anzi certo) che l'utente appositamente creato precedentemente non riesca più ad accedere al login. I due approcci hanno finalità diverse ma possono convivere: è necessario ricreare l'utente del sistema chroot, di nuovo. [[BR]] [[BR]]

Ora anche il vostro utente comune può accedere al vostro chroot ed operare in esso preservando il suo ambiente: {{{
user@main$ dchroot -d
}}}

Ora sarà possibile lanciare ed utilizzare programmi con interfaccia grafica (preventivamente installati nel chroot). Per migliorarne l'aspetto installate ''gtk2-engines-ubuntulooks''.
Per uscire dal chroot usate il comando: {{{
user@chroot$ exit
}}}

Se avete più di un chroot e non volete utilizzare il chroot di default utilizzate il comando: {{{
user@main$ dchroot -c nome_chroot_inserito_in_dchroot.conf -d
}}}

= Usare il chroot dal sistema principale =

Se avete eseguito correttamente le istruzioni precedenti avete configurato un chroot nel vostro sistema e abilitato l'utilizzo del vostro chroot per gli utenti comuni. Siete in grado di lavorare con un sistema diverso e di utilizzare programmi con interfaccia grafica. Ma che noia dover lanciare i programmi da shell! (speriamo che Steve Bourne non legga il tutorial. Perdonami Steve!) Volete lanciare le vostre GUI direttamente dal vostro sistema utilizzando solo il mouse? Sciogliete le dita e... tra breve... sarete in grado di farlo.

Dopo aver installato il programma nel chroot, è necessario creare uno script nel sistema, creare un link simbolico nel sistema e un collegamento grafico da cliccare con il mouse. Per evitare omonimie tra programmi residenti nel sistema e quelli nel chroot è bene creare un link anche nel chroot (aggiungendo un opportuno suffisso).

Installate il programma nel chroot e create il link anti-omonimia: {{{
user@chroot$ sudo apt-get install programma
user@chroot$ sudo ln -s /usr/bin/programma /usr/local/bin/programma_con_suffisso
}}}

Nel sistema principale create lo script /usr/local/bin/do_dchroot: {{{
root@main# gedit /usr/local/bin/do_dchroot
}}}

i cui comandi saranno: {{{
#!/bin/bash
for arg; do
        arg=`echo $arg | sed -e 's/ /\\\ /g'`
        args=`echo $args $arg`
done
/usr/bin/dchroot -d "`echo $0 | sed 's|^.*/||'` \"$args\""
}}}

Salvate e rendete il file eseguibile: {{{
root@main# chmod 755 /usr/local/bin/do_dchroot
}}}

Per ogni programma di chroot che volete eseguire è necessario create un link simbolico allo script do_chroot in /usr/local/bin. Se volete eseguire il programma_con_suffisso: {{{
root@main# ln -s /usr/local/bin/do_dchroot /usr/local/bin/programma_con suffisso
}}}

Ora da una shell lanciate il comando /usr/local/bin/programma_con_suffisso (preceduto da sudo se necessario).

Se volete una icona da cliccare create un collegamento (nel desktop o in un pannello) con gnome nel quale il comando dell'applicazione sarà /usr/local/bin/programma_con_suffisso. Se volete un icona nel menu create un file programma_con_suffisso.desktop in /usr/local/share/applications.


[[Anchor(firefox)]]
Tutto chiaro? Probabilmente no! Facciamo un esempio: supponete di voler installare firefox nel vostro chroot. Entrate nel chroot: {{{
user@main$ dchroot -d
}}}

Installate firefox (con tutte le sue dipendenze): {{{
user@chroot$ sudo apt-get install firefox
}}}

Create un link simbolico a firefox nel chroot (uso il suffisso 32, perché il mio chroot è una architettura i386 in un sistema amd64): {{{
user@chroot$ sudo ln -s /usr/bin/firefox /usr/local/bin/firefox32
}}}

Uscite dal chroot: {{{
user@chroot$ exit
}}}

Create un link nel vostro sistema: {{{
user@main$ sudo ln -s /usr/local/bin/do_dchroot /usr/local/bin/firefox32
}}}

Ora da shell chiamate il comando firefox32, oppure se avete creato il collegamento grafico... cliccateci sopra: il firefox a 32-bit dovrebbe essere pronto per voi.

[[Immagine(Icone/Piccole/note.png,,left)]] [[BR]] Se installate synaptic nel vostro chroot, dal vostro sistema principale lo invocherete con sudo synaptic32. Se ne volete fare un collegamento grafico userete il comando '''gksudo /usr/sbin/synaptic''' [[BR]] [[BR]]

Un altro modo più veloce di invocare un programma nel chroot è: {{{
user@main$ dchroot -d nomeprogramma
}}}

= Conclusioni =

Questo breve tutorial vi consente di installare un chroot nel vostro sistema principale. Potete usare il chroot da riga di comando da root o da utente normale, potete accedere al vostro chroot da riga di comando oppure graficamente con variabili d'ambiente diverse, potete utilizzare i programmi residenti nel chroot dal vostro sistema principale... potete fare quello che volete, come sempre. Liberamente.

= Aggiornamenti =

== Montare un cdrom dentro il chroot ==

Modificare il file `/etc/fstab` dentro al chroot, aggiungendo la riga del device del cdrom.

Per esempio: il mio cdrom è indicato come `/dev/hda`, aggiungerò la riga: {{{
/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0
}}}

Per l'uso del cdrom è necessaria la riga di comando: {{{
mount /media/cdrom0, per montare
umount /media/cdrom0, per smontare
}}}

== Gli utenti KDE ==

Le applicazioni KDE, misteriosamente, non partiranno se non dopo aver montato nella chroot anche la directory `/var/tmp`.

= La procedura senza commenti =

Di seguito l'elenco dei comandi (senza commenti) da invocare per realizzare un chroot 32-bit di breezy in un sistema breezy a 64-bit. Il chroot è installato in `/mychroot/breezy32`. Al termine si installerà synaptic per il sistema a 32-bit.

Codice: {{{
sudo bash
>>inserire vostra password
apt-get install dchroot debootstrap
mkdir /mychroot
mkdir /mychroot/breezy32
echo "breezy32 /mychroot/breezy32" >> /etc/dchroot.conf
debootstrap --arch i386 breezy /mychroot/breezy32/ http://archive.ubuntu.com/ubuntu
echo "/proc /mychroot/breezy32/proc proc defaults 0 0" >> /etc/fstab
mount /proc
cp /etc/hosts /mychroot/breezy32/etc/
cp /etc/apt/sources.list /mychroot/breezy32/etc/apt/
chroot /mychroot/breezy32/

apt-get update
apt-get upgrade
apt-get install locales dialog
dpkg-reconfigure locales
tzconfig
cd /dev
/sbin/MAKEDEV generic
apt-get install gdm gnome x-window-system
exit

gedit /mychroot/breezy32/etc/gdm/gdm.conf
>>Sostituire nella sezione [servers] 0=Standard vt7 con 1=Standard vt9
>>Salvare

echo "8:23:respawn:/usr/sbin/chroot /mychroot/breezy32 /sbin/getty 38400 tty8" >> /etc/inittab
init q
cp /etc/X11/xorg.conf /mychroot/breezy32/etc/X11/
cp /etc/passwd /mychroot/breezy32/etc/
cp /etc/shadow /mychroot/breezy32/etc/
cp /etc/group /mychroot/breezy32/etc/
cp /etc/sudoers /mychroot/breezy32/etc/
echo "/home /mychroot/breezy32/home none bind 0 0" >> /etc/fstab
echo "/tmp /mychroot/breezy32/tmp none bind 0 0" >> /etc/fstab
echo "/dev /mychroot/breezy32/dev none bind 0 0" >> /etc/fstab
echo "/media/cdrom0 /mychroot/breezy32/media/cdrom0 none bind 0 0" >> /etc/fstab
echo "/usr/share/fonts /mychroot/breezy32/usr/share/fonts none bind 0 0" >> /etc/fstab
mkdir /mychroot/breezy32/media/cdrom0
mkdir /mychroot/breezy32/usr/share/fonts
mount -a
chroot /mychroot/breezy32/

adduser user32
>>rispondere alle domande
apt-get install synaptic
ln -s /usr/bin/synaptic /usr/local/bin/synaptic32
exit

gedit /usr/local/bin/do_dchroot
>>Scrivere
  #!/bin/bash
  for arg; do
          arg=`echo $arg | sed -e 's/ /\\\ /g'`
          args=`echo $args $arg`
  done
  /usr/bin/dchroot -d "`echo $0 | sed 's|^.*/||'` \"$args\""
>>Salvare
chmod 755 /usr/local/bin/do_dchroot
ln -s /usr/local/bin/do_dchroot /usr/local/bin/synaptic32

Per avviare synaptic per il 32-bit dal sistema 64-bit:

sudo synaptic32
>> inserire password

Per avviare il secondo display (quando necessario):

sudo dchroot -d
>>inserire password
sudo /etc/init.d/gdm start
>> inserire password
}}}

= Riferimenti =

 * [http://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html The Debian GNU/Linux AMD64 HOW-TO - 2005 - Rosenberg, Iverson, von Brederlow, Schueler, Mills, Pariset]

 * [http://qref.sourceforge.net/Debian/reference/reference.en.html Debian Reference Chapter 8 Debian tips - 2006 -Aoki et al.]

 La guida Debian è tradotta in italiano: [http://qref.sourceforge.net/Debian/reference/reference.it.html]

 * [wiki:Ubuntu/DebootstrapChroot DebootstrapChroot]

 * [http://www.ubuntuforums.org/showthread.php?t=24575 HOWTO: 32-Bit Chroot on 64-Bit Installs]

= L'autore =

Giugno 2006 - UgodiPerso - ugodiperso@virgilio.it
 * [[https://help.ubuntu.com/community/DebootstrapChroot|Documento originale]]
 * [[Ubuntu:DebootstrapChroot|Guida del wiki internazionale]]
 * [[http://www.ubuntuforums.org/showthread.php?t=24575|HOWTO: 32-Bit Chroot on 64-Bit Installs]]
 * [[AmministrazioneSistema/Chroot|Guida a chroot]]
Linea 382: Linea 135:
CategoryDaRevisionare CategoryProgrammazione CategoryProgrammazione CategoryEmulatori CategoryDaRevisionare


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Questa guida mostra come usare debootstrap per realizzare un ambiente virtuale chroot senza ricorrere all'uso di sistemi di virtualizzazione.

Installazione

È necessario installare i pacchetti debootstrap e schroot.

Configurazione di schroot

Prima di proseguire, è necessario assegnare un nome all'ambiente virtuale e creare, con un editor di testo, un file di configurazione nella cartella /etc/schroot/chroot.d/. Digitare in una finestra di terminale:

sudo editor /etc/schroot/chroot.d/precise_i386.conf

Sostituire la dicitura «editor» con l'editor di testo scelto e «precise_i386» con il nome scelto per il sistema virtuale.

Inserire nel file di configurazione creato in precedenza tutte le informazioni necessarie al corretto funzionamento dell'ambiente virtuale. Quello che segue è un esempio:

[precise_i386]
description=Ubuntu 12.04 Precise for i386
type=directory
directory=/srv/chroot/precise_i386
#personality=linux32
root-users=bob
run-setup-scripts=true
run-exec-scripts=true
type=directory
users=alessio,milo,leo

Quello che segue è un elenco che illustra alcune delle opzioni possibili:

  • type: Il tipo di chroot, fra i valori ammessi ci sono plain, directory, file e loopback.

  • directory: Indica la cartella contenente il filesystem del sistema virtuale qualora sia di tipo directory; è consigliato impostare un percorso simile a /srv/chroot/.

  • personality: Tipo di architettura, da specificare se diversa da quella del sistema ospite.

  • users: Elenco degli utenti che potranno accedere al sistema virtuale tramite il comando schroot; è consigliato inserire il proprio nome utente.

  • root-users: Elenco degli utenti che potranno accedere al sistema virtuale tramite il comando schroot e ai quali verranno assegnati i privilegi di amministrazione.

È importante non racchiudere fra virgolette i valori inseriti dopo il carattere «=» e non inserire spazi prima e dopo lo stesso.

Avviare debootstrap

Il comando debootstrap scaricherà e decomprimerà un sistema Ubuntu di base nella cartella del sottosistema chroot.

Digitare i seguenti comandi in una finestra di terminale:

sudo mkdir -p /srv/chroot/precise_i386
sudo debootstrap --variant=buildd --arch i386 precise /srv/chroot/precise_i386 http://archive.ubuntu.com/ubuntu/

I precedenti comandi sono validi per qualsiasi distribuzione derivata da Debian, é sufficiente sostituire i parametri «precise», «i386» e l'indirizzo degli archivi con quelli appropriati alla configurazione desiderata. Per esempio, con il seguente comando si può creare un sottosistema chroot di Ubuntu 11.10 «Oneiric Ocelot» per architetture amd64:

sudo debootstrap --arch amd64 oneiric /srv/chroot/oneiric_amd64/ http://archive.ubuntu.com/ubuntu/

Per creare un sottosistema Debian per architetture a 64 bit è possibile utilizzare un comando simile al seguente:

sudo debootstrap --arch amd64 sid /srv/chroot/sid_amd64/ http://ftp.debian.org/debian/

È necessario adattare il file di configurazione al sottosistema installato.

Verificare il chroot

Il seguente comando visualizza l'elenco dei sottosistemi installati e configurati:

schroot -l

Se nell'elenco è visibile la voce relativa al chroot desiderato, è possibile effettuarvi l'accesso come amministratore digitando il seguente comando in una finestra di terminale:

schroot -c lucid_i386 -u root

Sostituire la dicitura «lucid» con quella adatta alla propria configurazione.

Gestione dei collegamenti fra il sistema ospite e quello virtuale

Per comodità, le cartelle presenti in «/home» vengono montate all'interno del sistema virtuale. Nel caso si desideri una diversa configurazione, è sufficiente aprire il file /etc/schroot/mount-defaults con un editor di testo con i privilegi di amministrazione e commentare le righe relative alle cartelle degli utenti.

Quello che segue è un esempio:

# mount.defaults: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
tmpfs           /dev/shm        tmpfs   defaults        0       0
#/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0

Installazione di un sistema di base

Prima di procedere con l'installazione dei pacchetti è necessario accedere al sistema virtuale. Digitare il seguente comando:

schroot -c precise_i386 -u root

Sostituire la dicitura «precise» con quella adatta alla propria configurazione.

Per installare i pacchetti di base all'interno di un sistema chroot è sufficiente digitare i seguenti comandi:

apt-get install ubuntu-minimal

Se si desidera installare il supporto per la lingua italiana è sufficiente digitare i seguenti comandi:

dpkg-reconfigure locales
apt-get install language-pack-it
locale-gen it.UTF-8

Ulteriori risorse


CategoryProgrammazione CategoryEmulatori CategoryDaRevisionare