Ripristinare Un Bootloader

Alcuni eventi spiacevoli (es. l'installazione di Windows dove sia già presente GNU/Linux) causano la cancellazione del bootloader dal Master Boot Record. Questa guida raccoglie alcuni suggerimenti che potrebbero tornare utili per risolvere questo problema. (Ricavato da http://doc.science.unitn.it/wiki/Ripristinare_un_bootloader_per_Linux)

Ovviamente quello che succederà seguendo i consigli di queste pagine è a vostro rischio e pericolo e siete tenuti a capire cosa state facendo. Chi scrive non vi garantisce nulla: neppure di essere in bouna fede... ovviamente lo sono, ma non contateci.

Quando è ormai troppo tardi

Cosa fare se si è già perso il bootloader e non si era fatto nulla prima

Salvare la giornata con la Knoppix

Ingredienti:

  • Il computer in oggetto configurato per avviarsi da unità ottica;
  • una (quasi) qualsiasi Knoppix.

Procedimento

  • Avviare la Knoppix sul computer da sistemare (anche a runlevel 2 se siete impazienti).
  • Accedere ad una shell come utente root. Se siete a runlevel 2 è ciò che avete quando finisce il boot, altrimenti, in un terminale dare il camando
 su -

e si avrà accesso ad una shell dell'utente root della Knoppix senza bisogno di password.

  • Identificare la partizione root del sistema installato e, se è separata, anche la partizione boot. Qualsi sistema va bene: appunti cartacei di installazione, memoria, intuito. Se servisse un aiutino è possibile ricorrere al camando
 fdisk -l

che darà a schermo un elenco di tutte le partizioni raggiungibili ed li tipo di partizione oppure

 cfdisk

che mostra anche le label, stando attenti a non modificare nulla.

  • Creare una directory nella quale montare la partizione di root (nel nostro esempio /mnt/target/).
  • Montare la partizione di root
 mount /dev/root_partition /mnt/target/

e, se necessario, la partizione boot

 mount /dev/boot_partition /mnt/target/boot/

e completare l'opera montando /dev/ e proc in comune con la Knoppix in uso (importantissimo)

 mount --bind /dev/ /mnt/target/dev/
 mount -t proc proc /mnt/target/proc/
  • Usando chroot accediamo al sistema installato sul sistema che abbiamo montato
 chroot /mnt/target/ su -

Adesso siamo utente root del GNU/Linux di cui dobbiamo ripristinare il bootloader (che potrebbe suggerire di disabilitare il boot da CD di default per chiunque sulla nostra macchina, ma questa è un'altra storia).

  • A questo punto basta ripristinare l'installazione del bootloader che ci interessa nel Master Boot Record.

Utilizzo di un dispositivo rimuovibile con grub

Ingredienti

  • Il computer in oggetto configurato per avviarsi da dispositivo rimuovibile (es. floppy);
  • l'esatta conoscenza delle partizioni sul sistema;
  • un opportuno dispositivo rimuovibile avviabile con grub all'avvio.

Procedimento

  • Avviare il sistema dal supporto rimovibile.
  • Raggiungere il prompt di grub. Se il supporto che contiene grub contiene anche un file menu.lst occorre premere il tasto C, se menu.lst prevede una password occorre prima premere P ed inserirla. Se non è presente alcun menu.lst grub offrirà il prompt come default.
  • Identificare i dischi e le partizioni necessarie (di solito root e boot). Occorre ricordare che grub inizia a contare da zero, che non usa le lettere (come ad esempio i nomi dei device di Linux) e che si riferisce ai dischi IDE e SCSI nello stesso modo. Nel caso in cui servisse un aiuto ad identificare la partizione è possibile usare il comando find messo a disposizione da grub.
  • Se il bootloader in uso dal sistema è proprio grub cercare il file /boot/grub/menu.lst (o qualora si usi una partizione di boot /grub/menu.lst)
 find /boot/grub/menu.lst

e caricarle le configurazioni contenute col comando

 configfile (hdX,Y)/boot/grub/menu.lst

dove X ed Y indicano la partizione che abbiamo ottenuto da find.

  • Per qualsiasi bootloader occorre trovare la partizione sulla quale risiedono kermel ed eventuale initrd.img e la partizione che contiene la root del sistema (se non si usa una partizione di boot separata è la stessa partizione che contiene il kernel) e dare i comandi root, kernel, initrd (se presente un initrd.img) e boot corredati degli opportuni argomenti. Vediamo un esempio con partizione root del sistema hda2, ovvero (hd0,1) secondo la nomenclatura di grub (ricordate che grub inizia a contare da zero).
 root (hd0,1)
 kernel /boot/vmlinuz root=/dev/hda2
 initrd /boot/initrd.img
 boot

Questo dovrebbe bastare ad avviare l'installazione GNU/Linux installata sul computer. Eventuali kernel panic durante il boot potrebbero essere causati da errati parametri del kernel o da un initrd sbagliato.

  • Una volta finito il boot accedere come utente root e ripristinare l'installazione del bootloader nel Master Boot Record.

Come essere preparati

Cosa fare per essere pronti ad affrontare la perdita del bootloader.

Preparare un floppy con grub per il proprio sistema

Ingredienti

  • Un floppy funzionante;
  • un computer dotato di untià floppy che fa uso di grub come bootloader.

Procedimento

  • Inserire il floppy nell'unità (nei nostri esempi sarà /dev/fd0 ed il mount point /media/floppy).
  • Formattare il floppy in ext o fat (usando ad esempio mkfs.ext2, mkfs.vfat, mke2fs o altro). Sono equivalenti. Va anche bene il floppy in FAT come viene preformattato.
  • Montare il floppy
 mount /media/floppy
  • Commutare sull'utente root
 su -
  • Copiare per intero la directory /boot/grub all'interno del floppy
 cp -R /boot/grub /media/floppy/grub
  • Smontare il floppy
 umount /media/floppy
  • Avviare grub
  • Nel prompt di grub dare i comandi:
 root (fd0)
 setup (fd0)
 quit
  • Il floppy di grub è pronto :-)

Questo floppy potrà essere usato anche cone floppy di grub generico richiedendo, prima del boot, la console col tasto C oppure rimuovendo il file menu.lst dal floppy.

Ripristinare grub

Quando in qualche modo saremo riusciti ad avviare il sistema installato e già configurato all'uso di grub possiamo reinstallarlo nel Master Boot Record avviando grub e dal prompt dando i seguenti comandi (nel caso in cui la partizione di reet sia (hd0,1) ed il disco (hd0) avviabile):

 root (hd0,1)
 setup (hd0)
 quit

Ovviamente tutto questo non prende in considerazione la possibilità che le stesse cose che hanno resettato il bootloader dal Master Boot Record non abbiano cambiato i nomi delle partizioni. In tal caso si dovrà provvedere alla correzione almeno di /etc/fstab e di /boot/grub/monu.lst

Ripristinare lilo

Quando in qualche modo saremo riusciti ad avviare il sistema installato e già configurato all'uso di lilo possiamo reinstallarlo nel Master Boot Record semplicemente digitando il comando:

 lilo

Potremo verificare lo stato di lilo usando il comando

 lilo -q

Ovviamente tutto questo non prende in considerazione la possibilità che le stesse cose che hanno resettato il bootloader dal Master Boot Record non abbiano cambiato i nomi delle partizioni. In tal caso si dovrà provvedere alla correzione almeno di /etc/fstab e di /etc/lilo.conf