Recovery di un sistema Debian attraverso chroot
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
Template:Warning
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 -o bind /dev /media/mychroot/dev # mount -o bind /proc /media/mychroot/proc # mount -o bind /sys /media/mychroot/sys # mount -o bind /dev/pts /media/mychroot/dev/pts
Adesso, se non sono comparsi errori, è tutto pronto per entrare nella nuova root directory attraverso chroot
:
# chroot /media/mychroot /bin/bash --rcfile /root/.bashrc
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
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 -o bind /dev /media/mychroot/dev # mount -o bind /proc /media/mychroot/proc # mount -o bind /sys /media/mychroot/sys # mount -o bind /dev/pts /media/mychroot/dev/pts
E infine il chroot
:
# chroot /media/mychroot
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
:
# exit
e, se si sta utilizzando il Rescue Mode dell'installer Debian, Alt+F1 per ritornare al menù.
Guida scritta da: S3v | Debianized 40% |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |