## page was renamed from LorenzoZoffoli/Prova0
#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
Questa guida contiene le informazioni per accedere ad una installazione di Ubuntu attraverso '''chroot''' ('''Ch'''ange '''root'''). Quest'ultima è un'utilità dei sistemi [[https://it.wikipedia.org/wiki/Unix-like|unix-like]] in grado di cambiare root directory apparente, così da creare un nuovo ambiente logicamente separato dalla root del sistema principale.
In altre parole, con il '''chroot''' è possibile accedere ad un secondo sistema presente nel computer e utilizzarlo tramite [[AmministrazioneSistema/Terminale|riga di comando]]. Si potrà quindi eseguire qualunque azione sul sistema avviato da chroot operando da terminale aperto da un altro sistema '''GNU/Linux''' oppure da sessione '''[[Installazione#Creazione_e_avvio_del_supporto_di_installazione|live]]'''.
Il '''chroot''' può avere diverse applicazioni. Ad esempio può rivelarsi utile:
* per riparare un sistema al quale è impossibile accedere, specialmente quando non è sufficiente eseguire semplici modifiche ai file, ma occorre svolgere operazioni avanzate come l'esecuzione di programmi dal sistema danneggiato (un tipico esempio è il [[AmministrazioneSistema/Grub/Ripristino|ripristino di GRUB]]).
* per accedere rapidamente ad un altro sistema presente sulla stessa macchina senza lasciare quello già avviato.
* in certi casi, come alternativa alla [[Virtualizzazione|virtualizzazione]].
Altre caratteristiche varie del '''chroot''' sono le seguenti:
* Richiede che i due sistemi siano della medesima architettura (è utile tenerlo a mente in caso di utilizzo da sessione ''live'').
* Viene adoperato il kernel del sistema di partenza (non di quello a cui si effettua l'accesso).
* Non è possibile l'apertura simultanea di più sistemi con chroot.
* È possibile operare anche tra distribuzioni GNU/Linux differenti (ad esempio, è possibile utilizzare Fedora o Arch operando da terminale per accedere ad un sistema Ubuntu e viceversa). Ovviamente, una volta entrati in sessione chroot, bisognerà utilizzare i comandi specifici della distribuzione su cui si è eseguito l'accesso.
<>
= Operazioni preliminari =
0. Avviare la '''Live''' di '''Ubuntu''' oppure l'altro sistema GNU/Linux presente nel computer.
0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni|Individuare]] il file system e tutte le partizione su cui è installato il sistema e prenderne nota.<
>Infatti, a seconda delle operazioni che si desidera eseguire, potrebbe essere necessario individuare:
* Partizione [[AmministrazioneSistema/Uefi|EFI]], se presente.
* Eventuali [[Hardware/DispositiviPartizioni/SpostareHomePartizioneSeparata|partizioni separate]] per `/boot`, `/home`, `/var` ecc.
{{{#!wiki important
Di seguito verranno mostrati comandi con nomi fittizi delle partizioni. Sostituirli con quelli reali, individuati precedentemente.
}}}
<>
= Accesso al sistema =
0. Prima di accedere al sistema occorre [[AmministrazioneSistema/ComandiBase#Gestione_del_filesystem|montare]] la relativa partizione di sistema (quella di ''root'', più altre se necessario). Digitare nel [[AmministrazioneSistema/Terminale|terminale]] uno dei comandi descritti successivamente.
* Per partizioni con file system ''ext4'':{{{
sudo mount -t ext4 /dev/sda3 /mnt
}}}
* Per partizioni con file system ''btrfs'':{{{
sudo mount -t btrfs -o subvol=@ /dev/sda3 /mnt
}}}
{{{#!wiki note
L'esempio precedente è relativo ad un sistema ''btrfs'' con due [[Hardware/DispositiviPartizioni/Btrfs/Introduzione#Presentazione_subvolume|subvolumi]], impostazione predefinita di Ubuntu e di altre distribuzioni GNU/Linux.<
>
Qualora invece non siano impostati subvolumi, può essere omessa l'opzione `-o subvol=@`. Tuttavia nei comandi successivi andrà specificato il punto di mount diverso da `/mnt`, anche per le relative sotto-directory (ad esempio `/mnt/@` con sotto-directory `/mnt/@/boot/efi/` ecc.).
}}}
0. Se presente, montare l'eventuale partizione '''EFI''' (saltare questo passaggio se non necessario). A tal fine digitare:{{{
sudo mount -t vfat /dev/sda2 /mnt/boot/efi/
}}}
<>
0. Montare in `/mnt` anche le directory virtuali `/dev`, `/proc`, `/sys` e `/run` con il comando:{{{
for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done
}}}
0. Effettuare il '''chroot''' sul sistema montato digitando: {{{
sudo chroot /mnt
}}}
Arrivati a questo punto, all'interno dell'ambiente '''chroot''' sarà possibile effettuare qualsiasi operazione sull'altro sistema tramite [[AmministrazioneSistema/Terminale|terminale]] (ad esempio installare/rimuovere/aggiornare pacchetti, modificare o eliminare file, ripristinarne il corretto avvio ecc.).
{{{#!wiki important
Quando è in uso chroot si ottiene l'accesso come [[AmministrazioneSistema/PrivilegiDiAmministrazione|root]]. Quindi prestare particolare attenzione ai comandi che vengono eseguiti.<
>Si ricorda che __non__ occorre anteporre «`sudo`» a nessun comando.
}}}
<>
= Uscita dal sistema =
0. Uscire dal '''chroot''' premendo la combinazione di tasti '''Ctrl+D''' o con il comando:{{{
exit
}}}
0. Se necessario, [[AmministrazioneSistema/ComandiBase#cd|spostarsi]] in `~`:{{{
cd ~
}}}
0. Smontare tutte le directory virtuali con il comando:{{{
for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
}}}
0. Se presente, smontare anche l'eventuale partizione '''EFI''' (saltare il passaggio se non necessario):{{{
sudo umount /dev/sda2 /mnt/boot/efi/
}}}
0. Smontare infine la partizione di sistema sulla quale si è operato, digitando il comando:{{{
sudo umount /dev/sda3 /mnt
}}}
Per accedere normalmente all'altro sistema riavviare come di consueto il computer oppure terminare la sessione ''Live''.
= Risoluzione problemi =
== Connessione ai repository non riuscita ==
Se provando ad aggiornare il sistema appare un output simile al seguente:{{{
root@notebook:/# apt update
Ignorato:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Ignorato:2 http://it.archive.ubuntu.com/ubuntu jammy InRelease
Ignorato:3 http://it.archive.ubuntu.com/ubuntu jammy-updates InRelease
…
…
W: Impossibile recuperare http://it.archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease Risoluzione di "it.archive.ubuntu.com" temporaneamente non riuscita
W: Impossibile recuperare http://it.archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease Risoluzione di "it.archive.ubuntu.com" temporaneamente non riuscita
…
}}}
digitare il seguente comando:{{{
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
}}}
e riprovare l'aggiornamento.
== Assenza connessione alla rete ==
In rari casi potrebbe capitare che il '''chroot''' non riesca a navigare in rete. Per verificare se è causato dal non funzionamento della connessione, digitare il comando:{{{
ping -c 4 ubuntu.com
}}}
Un output simile al seguente indica il non funzionamento della connessione alla rete:{{{
ping: ubuntu.com: Nome o servizio sconosciuto
}}}
Per aggirare il problema eseguire la seguente procedura:
0. [[#abbandono|Uscire]] dal '''chroot'''.
0. Ripetere la procedura di [[#accesso|accesso]] al '''chroot''' fino a questo [[#virt_dir|passaggio]].
0. Montare separatamente la directory `/etc/resolv.conf`, digitando il seguente comando:{{{
sudo mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
}}}
0. Eseguire il '''chroot''' come descritto nel passaggio successivo.
= Ulteriori risorse =
* [[https://en.wikipedia.org/wiki/Chroot|Pagina enciclopedica]]
* [[https://wiki.debian.org/it/chroot|Wiki di Debian]]
* [[Programmazione/DebootstrapChroot|Guida a debootstrap]]
* [[AmministrazioneSistema/ComandiBase#Gestione_del_filesystem|Comandi per montare partizioni]]
* [[AmministrazioneSistema/Grub|Guide su GRUB]]
----
CategoryAmministrazione