Recovery di un sistema Debian attraverso chroot

Da Guide@Debianizzati.Org.
Versione del 12 set 2011 alle 15:16 di S3v (discussione | contributi) (Creata pagina con '{{Versioni compatibili}} __TOC__ == Introduzione == Durante la lunga vita di una Debian box può capitare a volte di trovarsi nell'impossibilità di avviare correttamente il sist...')
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca
Debian-swirl.png 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 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
Warning.png ATTENZIONE
Se si ha la necessità di utilizzare le directory /var /boot /tmp /home o altre, residenti su partizioni separate da quella di root "/", bisogna individuare il rispettivo device e montarle una ad una dopo aver creato per ciascuna di loro un punto di mount


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
S3v