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;
- Dall'immagine d'installazione di Debian;
In questa guida si è scelto di utilizzare una immagine .iso di Debian, in particolare la "business card", che consente, scaricando appena una quarantina di 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.
Avvio immagine .iso di Debian
Per evitare possibili problemi, è necessario innanzitutto scaricare l'immagine "business card" 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" e 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 la tanto agognata shell attraverso cui accedere al sistema.
Accesso tramite chroot
La shell fornita dall'installer Debian è la leggerissima ash tramite Busybox, perfettamente funzionale ai nostri scopi.
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
Possiamo adesso effettuare tutte le operazioni necessarie al ripristino del sistema Debian danneggiato.
Per uscire da chroot
basta un semplice:
# exit