Chi smanetta continuamente è cosciente del fatto che molto spesso una modifica approssimativa al fsfile system” e/o una modifica errata di un singolo modulo del kernel e/o anche una semplice modifica al gestore di avvio della distribuzione in uso (GRUB o LILO) può impedire il normale avvio e il successivo login di una linux box.

In linea generale i metodi comuni di ripristino del sistema sono due.:

  1. Inserire il disco di una distribuzione che permette di suo il ripristino partendo dal menù generale del primo avvio: un esempio, può essere mandriva, che inserisce nel boot manager una scelta sotto il nome di RESCUE.
  2. Utilizzare i metodi classici di gestione e ripristino del sistema. Inserendo un qualsiesi disco di una qualsiesi distribuzione di linux senza preoccuparci troppo di cosa stiamo utilizzando e/o di cosa utilizzavamo precedentemente e utilizzare i comandi che lo stesso linux ci mette a disposizione, tra cui: chroot.

Il primo metodo risulta così ovvio da evitare di parlarne. Il secondo se pur comune ai più, necessita di qualche accortenza.

Supponiamo di aver messo le mani sul kernel ( il come non sarà trattato in questo post ) e di aver accertato che al successivo riavvio il sistema restituisca un bel: Kernel panic

Senza bestemmiare ( cosa che sarebbe condivisibile alla massa ) inseriamo il disco della prima distribuzione che abbiamo sotto mano e dopo averlo inserito riavviamo manualmente la macchina modificando al successivo riavvio la fase di boot nel bios. Chiaramente modificheremo in base alle esigenze la fase di boot dicendogli di leggere prima il disco cd-rom e poi di avviarel’hard disk.

NB: per effettuare il ripristino dobbiamo chiaramente usare come disco di ripristino quello di una distribuzione che non abbia un installer grafico all’avvio ma piuttosto una shell testuale. Esempio: slackware, gentoo, una distro live con modalità testuale etc…

Avviato ad esempio il disco di slackware (come esempio) ed avviati i servizzi di base precedenti all’installazione della stessa ci ritroveremo al classico

login:

Una volta loggati, basta seguiere pochi semplici passi in ordine:

1) Montare le partizioni su cui è presente il fs da recuperare.

2) Chrootare le partizioni

3) Effettuare le dovute modifiche

4) Riavviare

In specifico alcuni esempi:

- Montare le partizioni -

NB: supponiamo che il nostro sistema da recuperare sia stato installato come / “root” in hda1 , la /home in hda3 , /boot in hda4 .

Quindi per amor di chiarezza l’albero delle partizioni esistenti sarà il seguente:

(_ **_df -h )

/dev/hda1              12G  8,3G  2,8G  76% /
/dev/hda3              33G   14G   18G  44% /home
/dev/hda4              100m  69m   29m  78% /boot

Creeremo il mount point di / nella directory  di sistema /mnt/ e quindi da esempio:

~# mkdir /mnt/linux
~# mount /dev/hda1 /mnt/linux

NB: Volendo effettuare modifiche a Grub e/o Lilo dovremmo montare anche la partizione di boot dedicata e quindi:

~# mkdir /mnt/linux/boot
~# mount /dev/hda4 /mnt/linux/boot

- Chroot -

Montate le partizioni provvederemo al chroot:

~# chroot /mnt/linux /bin/bash

NB: da questo momento ogni modifica sarà effettuata sul sistema come se fossimo effettivamente in esso anzichè da una generica shell di login.

- Modifiche -

Come detto all’inizio avevamo supposto che il problema fosse un kernel panic e quindi provvederemo alle modifiche del kernel:

~# cd /usr/src/linux
~# make menuconfig

etc…

sistemati i moduli necessari e ricompilato il kernel e copiata la nuova immagine e i relativi config del kernel in /boot potremmo aver bisogno di sistemare il boot manager; ( lilo ad esempio ):

~# vi /etc/lilo.conf
image = /boot/vmlinuz_rescue
 root = /dev/hda1
 label = Slackware
 read-only

Effettuate le dovute modifiche non resterà che riavviare il sistema.

- Riavvio -

~# exit
~# umount /mnt/linux/boot
~# umount /mnt/linux
~# reboot

- Conclusioni ovvie -

La natura di questo post è solo un esempio dovuto” dopo una serie di richieste ricevute via e-mail riguardo l’argomento, che può far capire meglio il funzionamento di chroot e quale è la sua funzione in materia di ripristino. La grandezza  di Linux da questo punto di vista sta nel concetto di base: “tutto purchè non largamente danneggiato è recuperabile”.

#