## 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]]. * per l'esecuzione o per il debug di applicazioni non sicure all'interno di un ambiente confinato detto Chroot Jail. 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. * Non è possibile eseguire, installare e in generale lavorare con applicazioni [[AmministrazioneSistema/InstallareProgrammi/PacchettiSnap|snap]] in chroot. <> = Operazioni preliminari = 0. Avviare la '''Live''' di '''Ubuntu''' oppure l'altro sistema GNU/Linux presente nel computer. 0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni|Individuare]] le partizioni su cui è installato il sistema, nonché il tipo di filesystem.<
>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 = Le istruzioni seguenti sono valide per tutti i tipi di filesystem, eccetto che per quelli di tipo '''[[Hardware/DispositiviPartizioni/Btrfs|btrfs]]''', per i quali sono necessari alcuni accorgimenti. In tal caso consultare [[#Btrfs|questo paragrafo]]. Viene presa come esempio una comune partizione ext4. 0. Prima di accedere al sistema occorre [[AmministrazioneSistema/ComandiBase#Gestione_del_filesystem|montare]] la partizione ''root'', più altre se presenti (`/boot` oppure `/home`, `/var` ecc.). Digitare quindi nel [[AmministrazioneSistema/Terminale|terminale]] un comando simile al seguente:{{{ sudo mount -t ext4 /dev/sda3 /mnt }}} 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. }}} <> == Btrfs == Per i filesystem '''Btrfs''' è valida la procedura descritta in precedenza, con alcune integrazioni. Infatti si rende necessario montare eventuali [[Hardware/DispositiviPartizioni/Btrfs/Introduzione#Presentazione_subvolume|subvolumi]], se presenti. {{{#!wiki note In Ubuntu 24.04 usando il nuovo installer non vengono creati subvolumi selezionando il filesystem btrfs. Vengono invece creati usando l'installer Calamares (presente nelle immagini delle derivate Kubuntu e Lubuntu). }}} 0. Montare il filesystem come descritto nel primo punto del [[#accesso|paragrafo precedente]]. È ora possibile verificare la presenza di subvolumi digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando::{{{ sudo btrfs subvolume list -t /mnt }}} In presenza di subvolumi l'output sarà simile al seguente:{{{ ID gen top level path -- --- --------- ---- 256 436 5 @opt 257 436 5 @var_lib_machines 258 436 5 @var_lib_libvirt 259 436 5 @var_lib_flatpak 263 436 5 @home 274 436 5 @var_tmp 275 436 5 @var_log 276 436 5 @var_cache 277 436 5 @ }}}Se invece il filesystem non presenta subvolumi l'output sarà:{{{ ID gen top level path -- --- --------- ---- }}}In assenza di subvolumi è possibile seguire la normale procedura descritta nel paragrafo precedente, trascurando quindi il passaggio successivo. 0. Nel caso di una struttura a subvolumi, solitamente il subvolume '''@''' è il punto di mount della root di sistema ('''/''').<
>Procedere con il montaggio della root come di seguito:{{{ sudo umount /mnt }}}{{{ sudo mount -o subvol=@ /dev/sda3 /mnt }}} 0. Montare l'eventuale partizione EFI come descritto nel [[#accesso|paragrafo precedente]]. 0. Montare le directory virtuali:{{{ for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done }}}Qualora sia necessario montare anche la partizione EFI (es: per [[AmministrazioneSistema/Grub/Ripristino/Uefi|ripristinare GRUB]]), integrare il comando come indicato di seguito:{{{ for i in dev proc run sys sys/firmware/efi/efivars; do sudo mount --bind /$i /mnt/$i; done }}} 0. Eseguire il '''chroot''' sul sistema montato digitando:{{{ sudo chroot /mnt }}} <> = 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 }}}che qualora sia stato necessario montare anche la partizione EFI deve essere sostituito con il comando:{{{ for i in /dev /proc /run /sys/firmware/efi/efivars /sys; 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