Recovery di un sistema Debian attraverso chroot: differenze tra le versioni
S3v (discussione | contributi) mNessun oggetto della modifica |
mNessun oggetto della modifica |
||
(12 versioni intermedie di 2 utenti non mostrate) | |||
Riga 11: | Riga 11: | ||
* Da una installazione funzionante presente su altra partizione o altro disco della macchina; | * Da una installazione funzionante presente su altra partizione o altro disco della macchina; | ||
* Da una distribuzione live; | * Da una distribuzione live; | ||
* | * Da una qualsiasi immagine d'[[Installare Debian|installazione]] di Debian; | ||
In questa guida si è scelto di utilizzare una immagine .iso di Debian, in particolare la " | In questa guida si è scelto di utilizzare una immagine .iso di Debian, in particolare la "mini.iso" della [[netboot]] che consente, scaricando pochi megabyte, di avere a disposizione la famosa shell di cui abbiamo bisogno.<br/> | ||
Ovviamente gli altri due metodi sono altrettanto validi se si ha a disposizione un'altra distribuzione accessibile sul sistema o se si vuole avere a disposizione un intero ambiente grafico in cui muoversi con più agio. Per entrambi i metodi i comandi da impartire, da terminale o da emulatore di terminale, sono quelli descritti nel paragrafo [[#Accesso tramite chroot|Accesso tramite chroot]]<br/> | Ovviamente gli altri due metodi sono altrettanto validi se si ha a disposizione un'altra distribuzione accessibile sul sistema o se si vuole avere a disposizione un intero ambiente grafico in cui muoversi con più agio. Per entrambi i metodi i comandi da impartire, da terminale o da emulatore di terminale, sono quelli descritti nel paragrafo [[#Accesso tramite chroot|Accesso tramite chroot]]<br/> | ||
È inutile però precisare che gli orpelli grafici sono in questo caso del tutto superflui in quanto l'unica cosa di cui si ha bisogno è una shell funzionante. | È inutile però precisare che gli orpelli grafici sono in questo caso del tutto superflui in quanto l'unica cosa di cui si ha bisogno è una shell funzionante. | ||
== | == Ottenere una shell == | ||
Per evitare possibili problemi, è necessario innanzitutto scaricare l'immagine | Per evitare possibili problemi, è necessario innanzitutto scaricare l'immagine per la <u>stessa architettura</u> (amd64, i386, etc.) del sistema a cui vogliamo accedere; quindi avviare il sistema da CD/DVD o da pendrive su cui ci si è premuniti di inserire la .iso d'installazione Debian.<br/> | ||
# Scegliere all'avvio "Advanced options -> Rescue mode" | # Scegliere all'avvio "Advanced options -> Rescue mode" | ||
# Proseguire normalmente scegliendo la localizzazione (utile per il layout della tastiera italiana), il [[mirror]] dei pacchetti e settando la configurazione di rete (anche questa utile se si ha bisogno di una connessione funzionante). | # Proseguire normalmente scegliendo la localizzazione (utile per il layout della tastiera italiana), il [[mirror]] dei pacchetti e settando la configurazione di rete (anche questa utile se si ha bisogno di una connessione funzionante). | ||
Riga 27: | Riga 27: | ||
== Accesso tramite chroot == | == Accesso tramite chroot == | ||
Iniziamo a creare un punto di mount in cui montare la partizione di root: | Iniziamo a creare un punto di mount in cui montare la partizione di [[root /|root]]: | ||
<pre> | <pre> | ||
# mkdir /media/mychroot | # mkdir /media/mychroot | ||
Riga 47: | Riga 47: | ||
Prima di far questo, servirà montare alcune directory necessarie al funzionamento dei comandi impartiti nella nuova root directory: | Prima di far questo, servirà montare alcune directory necessarie al funzionamento dei comandi impartiti nella nuova root directory: | ||
<pre> | <pre> | ||
# mount - | # mount --rbind /dev /media/mychroot/dev | ||
# mount - | # mount --rbind /sys /media/mychroot/sys | ||
# mount --rbind /proc /media/mychroot/proc | |||
# mount - | |||
</pre> | </pre> | ||
Adesso, se non sono comparsi errori, è tutto pronto per entrare nella nuova root directory attraverso <code>chroot</code>: | Adesso, se non sono comparsi errori, è tutto pronto per entrare nella nuova root directory attraverso <code>chroot</code>: | ||
<pre> | <pre> | ||
# chroot /media/mychroot /bin/bash -- | # chroot /media/mychroot /bin/bash --login | ||
</pre> | </pre> | ||
Riga 63: | Riga 62: | ||
# mkdir /media/mychroot | # mkdir /media/mychroot | ||
</pre> | </pre> | ||
Cerchiamo tutti i gruppi di volumi, e poi ne attiviamo tutti i volumi logici: | |||
<pre> | <pre> | ||
# | # vgscan | ||
- | # vgchange -ay | ||
</pre> | </pre> | ||
Questa parte può essere effettuata in automatico dal sistema, non è sempre strettamente necessaria. Può esserlo però per esempio se i volumi logici sono contenuti in una partizione criptata: in tal caso sarebbe necessario prima sbloccare la partizione e poi attivare manualmente i volumi logici come mostrato. | |||
Quindi individuiamo il volume logico associato al filesystem di [[root /|root]] (in questo esempio il VG si chiama "debian") con il comando "lvdisplay": | |||
# lvdisplay | more | |||
--- Logical volume --- | |||
LV Path /dev/debian/root | |||
LV Name root | |||
'''VG Name debian''' | |||
... | |||
... | |||
Montiamo il volume logico di root: | Montiamo il volume logico di root: | ||
<pre> | <pre> | ||
Riga 79: | Riga 86: | ||
Montiamo come prima alcune directory necessarie: | Montiamo come prima alcune directory necessarie: | ||
<pre> | <pre> | ||
# mount - | # mount --rbind /dev /media/mychroot/dev | ||
# mount - | # mount --rbind /sys /media/mychroot/sys | ||
# mount --rbind /proc /media/mychroot/proc | |||
# mount - | |||
</pre> | </pre> | ||
E infine il <code>chroot</code> : | E infine il <code>chroot</code> : | ||
<pre> | <pre> | ||
# chroot /media/mychroot | # chroot /media/mychroot /bin/bash --login | ||
</pre> | </pre> | ||
== Conclusioni == | == Conclusioni == | ||
Adesso è come se stessimo operando all'interno della Debian box ed è possibile effettuare tutte le operazioni necessarie al ripristino del sistema Debian danneggiato.<br/> | Adesso è come se stessimo operando all'interno della Debian box ed è possibile effettuare tutte le operazioni necessarie al ripristino del sistema Debian danneggiato.<br/> | ||
Per uscire da <code>chroot</code> : | Per uscire da <code>chroot</code> digitare: | ||
<pre># exit</pre> | <pre># exit</pre> | ||
e, se si sta utilizzando il Rescue Mode dell'installer Debian, Alt+F1 per ritornare al menù. | e, se si sta utilizzando il Rescue Mode dell'installer Debian, premere Alt+F1 per ritornare al menù. | ||
{{Autori | {{Autori | ||
|Autore=[[Utente:S3v|S3v]] | | Autore = [[Utente:S3v|S3v]] 17:16, 12 set 2011 (CEST) | ||
|Verificata_da= | |||
:[[Utente:HAL 9000|HAL 9000]] 15:59, 26 mag 2015 (CEST) | |||
|Numero_revisori=1 | |||
}} | }} | ||
[[Categoria: Shell]] | [[Categoria: Shell]] |
Versione attuale delle 10:13, 14 nov 2015
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Durante la lunga vita di una Debian box può capitare a volte di trovarsi nell'impossibilità di avviare correttamente il sistema. Infatti una errata modifica a un file di vitale importanza o un bug in qualche pacchetto fondamentale per il corretto funzionamento del sistema possono portare al completo fallimento dell'avvio della macchina.
Ci si ritrova pertanto nella condizione di non avere a disposizione alcuno strumento utile per interfacciarsi col sistema e tentare di risolvere i problemi occorsi; nessuno strumento grafico e nessuna shell disponibile: che fare?
In questi momenti in cui tutto sembra perduto, arriva in soccorso la nostra ultima ancora di salvezza: chroot
Per utilizzare chroot
abbiamo bisogno innanzitutto di una shell funzionante che, data l'impossibilità di avviare il sistema, dovremo ottenere in qualche altro modo.
I modi per avviare una shell possono essere vari:
- Da una installazione funzionante presente su altra partizione o altro disco della macchina;
- Da una distribuzione live;
- Da una qualsiasi immagine d'installazione di Debian;
In questa guida si è scelto di utilizzare una immagine .iso di Debian, in particolare la "mini.iso" della netboot che consente, scaricando pochi megabyte, di avere a disposizione la famosa shell di cui abbiamo bisogno.
Ovviamente gli altri due metodi sono altrettanto validi se si ha a disposizione un'altra distribuzione accessibile sul sistema o se si vuole avere a disposizione un intero ambiente grafico in cui muoversi con più agio. Per entrambi i metodi i comandi da impartire, da terminale o da emulatore di terminale, sono quelli descritti nel paragrafo Accesso tramite chroot
È inutile però precisare che gli orpelli grafici sono in questo caso del tutto superflui in quanto l'unica cosa di cui si ha bisogno è una shell funzionante.
Ottenere una shell
Per evitare possibili problemi, è necessario innanzitutto scaricare l'immagine per la stessa architettura (amd64, i386, etc.) del sistema a cui vogliamo accedere; quindi avviare il sistema da CD/DVD o da pendrive su cui ci si è premuniti di inserire la .iso d'installazione Debian.
- Scegliere all'avvio "Advanced options -> Rescue mode"
- Proseguire normalmente scegliendo la localizzazione (utile per il layout della tastiera italiana), il mirror dei pacchetti e settando la configurazione di rete (anche questa utile se si ha bisogno di una connessione funzionante).
- Nel momento in cui appare la schermata "Avviare il modo ripristino", arrestarsi e premere
Alt+F2
seguito da [Invio].
Ora abbiamo ottenuto la tanto agognata shell attraverso cui accedere al sistema che, in questo caso, sarà la leggerissima ash tramite Busybox, perfettamente funzionale ai nostri scopi.
Accesso tramite chroot
Iniziamo a creare un punto di mount in cui montare la partizione di root:
# mkdir /media/mychroot
Quindi individuare la partizione di root che vogliamo montare:
# fdisk -l
e, supponendo che essa sia individuata dal device sda1
, montarla con:
# mount /dev/sda1 /media/mychroot
A questo punto è possibile accedere a tutti i file della directory root del sistema non avviabile. Ad esempio, per modificare il file /etc/network/interfaces
:
# nano /media/mychroot/etc/network/interfaces
Se si vogliono compiere operazioni più complesse di una semplice modifica di un file (aggiornamento del sistema, operazioni sui pacchetti, operazioni sul filesystem etc.), bisogna utilizzare necessariamente chroot
.
Prima di far questo, servirà montare alcune directory necessarie al funzionamento dei comandi impartiti nella nuova root directory:
# mount --rbind /dev /media/mychroot/dev # mount --rbind /sys /media/mychroot/sys # mount --rbind /proc /media/mychroot/proc
Adesso, se non sono comparsi errori, è tutto pronto per entrare nella nuova root directory attraverso chroot
:
# chroot /media/mychroot /bin/bash --login
Chroot su LVM
Nel caso utilizzassimo un LVM i passi da compiere sono quasi gli stessi.
Iniziamo a creare un punto di mount:
# mkdir /media/mychroot
Cerchiamo tutti i gruppi di volumi, e poi ne attiviamo tutti i volumi logici:
# vgscan # vgchange -ay
Questa parte può essere effettuata in automatico dal sistema, non è sempre strettamente necessaria. Può esserlo però per esempio se i volumi logici sono contenuti in una partizione criptata: in tal caso sarebbe necessario prima sbloccare la partizione e poi attivare manualmente i volumi logici come mostrato.
Quindi individuiamo il volume logico associato al filesystem di root (in questo esempio il VG si chiama "debian") con il comando "lvdisplay":
# lvdisplay | more --- Logical volume --- LV Path /dev/debian/root LV Name root VG Name debian ... ...
Montiamo il volume logico di root:
# mount /dev/debian/root /media/mychroot
Montiamo come prima alcune directory necessarie:
# mount --rbind /dev /media/mychroot/dev # mount --rbind /sys /media/mychroot/sys # mount --rbind /proc /media/mychroot/proc
E infine il chroot
:
# chroot /media/mychroot /bin/bash --login
Conclusioni
Adesso è come se stessimo operando all'interno della Debian box ed è possibile effettuare tutte le operazioni necessarie al ripristino del sistema Debian danneggiato.
Per uscire da chroot
digitare:
# exit
e, se si sta utilizzando il Rescue Mode dell'installer Debian, premere Alt+F1 per ritornare al menù.
Guida scritta da: S3v 17:16, 12 set 2011 (CEST) | Debianized 40% |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |