Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AmministrazioneSistema/Chroot"
Differenze tra le versioni 34 e 35
Versione 34 del 05/07/2024 15.50.14
Dimensione: 8157
Commento: fix anchor
Versione 35 del 01/10/2024 20.27.03
Dimensione: 9601
Commento: +24.04 + btrfs
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 6: Linea 6:
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=636196"; rilasci="14.04 16.04 18.04 20.04 22.04")>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=636196"; rilasci="14.04 16.04 18.04 20.04 22.04 24.04")>>
Linea 30: Linea 30:
 0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni|Individuare]] il file system e tutte le partizione su cui è installato il sistema e prenderne nota.<<BR>>Infatti, a seconda delle operazioni che si desidera eseguire, potrebbe essere necessario individuare:  0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni|Individuare]] le partizioni su cui è installato il sistema, nonché il tipo di filesystem.<<BR>>Infatti, a seconda delle operazioni che si desidera eseguire, potrebbe essere necessario individuare:
Linea 41: Linea 41:
 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.<<BR>>
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.).
Le istruzioni seguenti sono valide per tutti i tipi di filesystem, eccetto che per quelli di tipo di tipo '''[[Hardware/DispositiviPartizioni/Btrfs|btrfs]]''', per le quali sono necessari alcuni accorgimenti. In tal caso consultare [[#Btrfs|questo paragrafo]].

 0. Prima di accedere al sistema occorre [[AmministrazioneSistema/ComandiBase#Gestione_del_filesystem|montare]] la partizione ''root'', più altre le altre se presenti (`/boot` oppure `/home`, `/var` ecc.). Digitare quindi nel [[AmministrazioneSistema/Terminale|terminale]] un comando simile al seguente:{{{
sudo mount /dev/sda3 /mnt
Linea 70: Linea 64:
}}}

<<Anchor(accesso)>>
== 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 il filesystem come descritto nel primo punto del [[#accesso|paragrafo precedente]], poi digitare nel terminale il seguente comando per verificare la presenza di subvolumi:{{{
sudo btrfs subvolume list -t /mnt
}}}
 0. 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 @
}}}
 Solitamente il subvolume '''@''' è il punto di mount della root di sistema ('''/''').<<BR>>
 In assenza di subvolumi è invece possibile seguire la normale procedura descritta nel paragrafo precedente, trascurando quindi i passaggi successivi.
 0. Montare le directory virtuali (se il subvolume fosse diverso da '''@''', adeguare il percorso nel seguente comando e nei successivi):{{{
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 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/@


Guida verificata con Ubuntu: 20.04 22.04 24.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Questa guida contiene le informazioni per accedere ad una installazione di Ubuntu attraverso chroot (Change root). Quest'ultima è un'utilità dei sistemi 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 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 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 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.

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

  1. Avviare la Live di Ubuntu oppure l'altro sistema GNU/Linux presente nel computer.

  2. 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:

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 di tipo btrfs, per le quali sono necessari alcuni accorgimenti. In tal caso consultare questo paragrafo.

  1. Prima di accedere al sistema occorre montare la partizione root, più altre le altre se presenti (/boot oppure /home, /var ecc.). Digitare quindi nel terminale un comando simile al seguente:

    sudo mount /dev/sda3 /mnt
  2. 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/

  3. 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
  4. 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 terminale (ad esempio installare/rimuovere/aggiornare pacchetti, modificare o eliminare file, ripristinarne il corretto avvio ecc.).

Quando è in uso chroot si ottiene l'accesso come 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 subvolumi, se presenti.

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).

  1. Montare il il filesystem come descritto nel primo punto del paragrafo precedente, poi digitare nel terminale il seguente comando per verificare la presenza di subvolumi:

    sudo btrfs subvolume list -t /mnt
  2. 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               @

    Solitamente il subvolume @ è il punto di mount della root di sistema (/).
    In assenza di subvolumi è invece possibile seguire la normale procedura descritta nel paragrafo precedente, trascurando quindi i passaggi successivi.

  3. Montare le directory virtuali (se il subvolume fosse diverso da @, adeguare il percorso nel seguente comando e nei successivi):

    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 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
  4. Eseguire il chroot sul sistema montato digitando:

    sudo chroot /mnt/@

Uscita dal sistema

  1. Uscire dal chroot premendo la combinazione di tasti Ctrl+D o con il comando:

    exit
  2. Se necessario, spostarsi in ~:

    cd ~
  3. Smontare tutte le directory virtuali con il comando:

    for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
  4. Se presente, smontare anche l'eventuale partizione EFI (saltare il passaggio se non necessario):

    sudo umount /dev/sda2 /mnt/boot/efi/
  5. 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:

  1. Uscire dal chroot.

  2. Ripetere la procedura di accesso al chroot fino a questo passaggio.

  3. Montare separatamente la directory /etc/resolv.conf, digitando il seguente comando:

    sudo mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
  4. Eseguire il chroot come descritto nel passaggio successivo.

Ulteriori risorse


CategoryAmministrazione