Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "andreas-xavier/prova4"
Differenze tra le versioni 49 e 70 (in 21 versioni)
Versione 49 del 14/12/2022 13.02.20
Dimensione: 9780
Commento:
Versione 70 del 16/12/2022 16.51.45
Dimensione: 8240
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 16: Linea 16:
 * per cercare di riparare un sistema al quale non è possibile accedere normalmente (es.: in caso di problemi con '''[[AmministrazioneSistema/Grub|GRUB]]''');  * 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]]).
Linea 18: Linea 18:
 * in certi casi, come alternativa alla [[Virtualizzazione|virtualizzazione]].
Linea 19: Linea 20:
{{{#!wiki note
Con chroot non è possibile l'apertura simultanea di più sistemi. Pertanto montare un solo sistema per volta.
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 Ubuntu e viceversa). Ovviamente, una volta entrati in sessione chroot, bisognerà utilizzare i comandi specifici della distribuzione su cui si è eseguito l'accesso.

<<Anchor(preliminari)>>
= 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.<<BR>>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.
Linea 22: Linea 38:

{{{#!wiki tip
Il chroot permette di operare anche tra distribuzioni GNU/Linux differenti. Ad esempio, è possibile utilizzare Fedora o Arch operando da terminale per accedere ad un Ubuntu e viceversa. Ovviamente, una volta entrati in sessione chroot, bisognerà utilizzare i comandi specifici della distribuzione su cui si è eseguito l'accesso.
}}}

= Funzionamento =

Viene descritto schematicamente il funzionamento, prendendo come esempio un semplice sistema GNU/Linux con `/dev/sda1` come unica partizione di root con file system ext4.

 0. [[ComandiBase#Gestione_del_filesystem|Montare]] il sistema a cui si vuole accedere in un punto di mount stabilito (per comodità nella maggior parte dei casi può essere usato `/mnt`).

 0. [[ComandiBase#Gestione_del_filesystem|Montare]] con l'opzione `--bind` il resto delle partizioni e/o directory di cui si avrà bisogno.

 0. Eseguire il comando '''chroot''' sul punto di mount stabilito.

Da questo momento si ha accesso come utente root all'altro sistema ed è possibile eseguire le azioni desiderate.

 0. Uscire dal '''chroot''' con il comando:{{{
exit
}}}
 0. [[ComandiBase#Gestione_del_filesystem|Montare]] tutte le partizioni montate in precedenza.
Linea 48: Linea 42:
 0. Avviare il sistema funzionante o la '''Live''' di '''Ubuntu'''.
 0. Una volta caricato il sistema, [[Hardware/DispositiviPartizioni/IndividuarePartizioni#df|individuare]] il file system e la partizione sulla quale è installato il sistema e prenderne nota. In caso di sistema installato in modalità [[AmministrazioneSistema/Uefi|UEFI]] individuare anche la partizione '''EFI'''.<<BR>>
 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.).
}}}
Linea 51: Linea 54:
 0. Di seguito sono riportati esempi di comandi per montare la partizione sulla quale risiede il sistema a cui si desidera accedere: sistemi installati su partizioni con con file system ''ext4'' o ''[[AmministrazioneSistema/Filesystem/Btrfs|btrfs]]'', con l'eventuale partizione '''EFI''' installata su `/dev/sda2` con file system ''fat32''. Utilizzare, con le opportune modifiche, soltanto il comando relativo al sistema a cui si desidera accedere.
   * Per montare la partizione `/dev/sda1` con file system ''ext4'' digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount -t ext4 /dev/sda1 /mnt
}}}
   * Per montare la partizione `/dev/sdc1` con file system ''btrfs'' creato con due [[Hardware/DispositiviPartizioni/Btrfs/Introduzione#Presentazione_subvolume|subvolumi]] (impostazione predefinita dall'installer di '''Ubuntu''') digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount -t btrfs -o subvol=@ /dev/sdc1 /mnt
}}}
  * Per montare la partizione `/dev/sdc1` con file system ''btrfs'' digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount -t btrfs /dev/sdc1 /mnt
}}}
 
 Montare l'eventuale partizione '''EFI''' con il comando:{{{
 0. Se presente, montare l'eventuale partizione '''EFI''' (saltare questo passaggio se non necessario). A tal fine digitare:{{{
Linea 65: Linea 57:
 <<Anchor(punto4)>>
 0. Montare le directory `dev`, `proc`, `sys`, `run` con i comandi:{{{
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
}}}
 In alternativa è possibile eseguire l'unico comando:{{{

 <<Anchor(mount)>>
 0. Montare in `/mnt` anche le directory virtuali `/dev`, `/proc`, `/sys` e `/run` con il comando:{{{
Linea 76: Linea 63:
 {{{#!wiki note
Qualora una o più directory di sistema risiedano in [[Hardware/DispositiviPartizioni/SpostareHomePartizioneSeparata|dischi o partizioni separate]] da quella di root, occorrerà a loro volta individuarle e montarle una alla volta dopo aver creato per ciascuna un punto di mount.
}}}

 <<Anchor(norete)>>
 0. Effettuare un '''chroot''' sul sistema digitando: {{{
 0. Effettuare il '''chroot''' sul sistema montato digitando: {{{
Linea 88: Linea 70:
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. Quando è in uso chroot si ottiene l'accesso come [[AmministrazioneSistema/PrivilegiDiAmministrazione|root]]. Quindi prestare particolare attenzione ai comandi che vengono eseguiti.<<BR>>Si ricorda che __non__ occorre anteporre «`sudo`» a nessun comando.
Linea 97: Linea 79:
 0. Smontare tutti i dispositivi con i seguenti comandi:{{{  0. Se necessario, [[AmministrazioneSistema/ComandiBase#cd|spostarsi]] in `~`:{{{
Linea 99: Linea 81:
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/
Linea 104: Linea 82:
 In alternativa è possibile eseguire l'unico comando:{{{
cd ~ && for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
 0. Smontare tutte le directory virtuali con il comando:{{{
for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
Linea 107: Linea 85:
 0. Se presente, smontare l'eventuale partizione '''EFI''' con il comando:{{{
sudo umount /dev/sda1 /mnt/boot/efi/
 0. Se presente, smontare anche l'eventuale partizione '''EFI''' (saltare il passaggio se non necessario):{{{
sudo umount /dev/sda2 /mnt/boot/efi/
Linea 110: Linea 88:
 sostituendo eventualmente `/dev/sda1` con la partizione EFI effettiva presente nel proprio sistema.

In caso di configurazioni particolari occorre utilizzare comandi specifici per smontare le partizioni (passaggio 2). A tal proposito, di seguito sono riportati alcuni esempi di comandi per smontare la partizione sulla quale risiede il sistema su cui si è operato, da utilizzare con le opportune modifiche in base al proprio caso.
 * Per smontare la partizione `/dev/sda1`:{{{
sudo umount /dev/sda1 /mnt
 0. Smontare infine la partizione di sistema sulla quale si è operato, digitando il comando:{{{
sudo umount /dev/sda3 /mnt
Linea 116: Linea 91:
 * Per smontare la partizione `/dev/sdc1` con file system ''btrfs'' con due subvolumi:{{{
sudo umount -t btrfs -o subvol=@ /dev/sdc1 /mnt
}}}
 * Per smontare la partizione `/dev/sdc1` con file system ''btrfs'':{{{
sudo umount -t btrfs /dev/sdc1 /mnt
}}}
Linea 127: Linea 96:
== Connessione ai repository ignorata == == Connessione ai repository non riuscita ==
Linea 134: Linea 103:
Ignorato:4 https://downloads.sourceforge.net/project/ubuntuzilla/mozilla/apt all InRelease
Ignorato:5 http://it.archive.ubuntu.com/ubuntu jammy-backports InRelease
Linea 138: Linea 105:
W: Impossibile recuperare http://it.archive.ubuntu.com/ubuntu/dists/jammy/InRelease Risoluzione di "it.archive.ubuntu.com" temporaneamente non riuscita
Linea 141: Linea 107:
Linea 161: Linea 126:
 0. Ripetere la procedura di [[#accesso|accesso]] al '''chroot''' fino al [[#punto4|punto 4]].  0. Ripetere la procedura di [[#accesso|accesso]] al '''chroot''' fino a questo [[#mount|passaggio]].
Linea 165: Linea 130:
 0. Completare la procedura dal [[#norete|punto 5]].  0. Eseguire il '''chroot''' come descritto nel passaggio successivo.


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

Guida verificata con Ubuntu: 20.04 22.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 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 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:

Di seguito verranno mostrati comandi con nomi fittizi delle partizioni. Sostituirli con quelli reali, individuati precedentemente.

Accesso al sistema

  1. Prima di accedere al sistema occorre montare la relativa partizione di sistema (quella di root, più altre se necessario). Digitare nel 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

    L'esempio precedente è relativo ad un sistema btrfs con due 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.).

  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.

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


CategoryHomepage CategoryNuoviDocumenti