Créer une disquette GRUB

De La Mouche VII

Ca peut paraître idiot comme ça, mais voilà un petit mémo qui explique comment créer une disquette GRUB afin de pouvoir démarrer un système dont le chargeur de démarrage a été effacé (par exemple).


Selon les outils dont on dispose, on peut créer une disquette ne contenant que le programme GRUB sans aucune configuration, ou bien une disquette comportant un fichier de configuration générique.


Note : les noms des paquets auxquels je fais référence peuvent être différents si vous n'utilisez pas Debian.




GRUB tout seul

Le paquet grub fournit un petit utilitaire nommé grub-floppy, qui permet d'installer GRUB dans le secteur d'amorçage d'une disquette. C'est très simple :

# grub-floppy /dev/fd0

(/dev/fd0 désigne le premier lecteur de disquettes.)


Avec cette disquette nouvellement créée, on peut démarrer n'importe quoi pourvu de connaître les options et la syntaxe à utiliser : au démarrage on aura une invite qui ressemble à

grub>

et qui attendra sagement que vous tapiez les bonnes instructions. Ce sont en fait les mêmes que celles que vous pouvez trouver dans votre /boot/grub/menu.lst. Par exemple pour démarrer un linux installé sur la première partition de mon premier disque dur SATA, sous un noyau 2.6.14, je vais taper :

grub> root (hd0,0)
grub> kernel /boot/vmlinuz-2.6.14 root=/dev/sda1 ro console=tty0 
grub> initrd /boot/initrd.img-2.6.14
grub> boot

La troisième ligne peut être ignorée si vous n'utilisez pas l'initrd.

Attention, comme vous pouvez le voir GRUB ne fait pas de différence de nommage entre les disques IDE et SATA / SCSI. Ainsi la première partition de mon premier disque SATA est ici désigné par grub par (hd0,0) (sous linux le périphérique correspondant est /dev/sda1).


Il est également nécessaire de connaître l'emplacement du noyau que vous voulez démarrer. Heureusement, la complétion fonctionne (touche tabulation).




GRUB avec menu

La deuxième solution consiste à installer le paquet grub-disk, qui contient deux images de disquettes, placées dans /usr/share/grub-disk/ :

  • grub-0.95-i486-pc.ext2fs.gz
  • grub-0.95-i486-pc.iso.gz

Ces noms peuvent varier, selon la version de grub-disk dont vous disposez.


La première de ces images contient le programme GRUB ainsi que des fichiers de configuration génériques. La seconde ne contient apparemment que ces fichiers de configuration, mais pas le programme en lui-même.


C'est donc à la première que nous allons nous intéresser. Après avoir installé le paquet en question :

# aptitude install grub-disk

nous allons la copier sur une disquette en tapant :

$ gunzip -c /usr/share/grub-disk/grub-0.95-i486-pc.ext2fs.gz |dd of=/dev/fd0

Pensez à vérifier que la disquette est vierge avant de lancer la copie : dd ne demande aucune confirmation.


Au démarrage, on a cette fois un beau menu en noir et blanc (mais on peut changer avec la commande « Change the colors » (tout en bas), pour obtenir un merveilleux jaune-vert sur fond orange.


Il n'y a plus qu'à choisir le système que l'on veut démarrer en se plaçant dessus grâce aux flèches du clavier (pratiques ces trucs là). Pour démarrer on appuye ensuite sur <Entrée>, mais comme il s'agit de menus génériques il y a des chances que ça ne marche pas. On va donc éditer l'entrée qui nous intéresse en appuyant sur <e>. Le script qui sera exécuté apparaît.

On édite chaque ligne qui ne convient pas, toujours avec la touche <e>, puis <Entrée> pour valider la modification. Quand tout semble correct, on lance le démarrage avec <b>.


Pour faire une disquette spécifique à un système, on peut modifier le fichier de configuration du menu une bonne fois pour toute :

$ mount /floppy

puis :

$ nano /floppy/boot/grub/menu.lst

On peut aussi le remplacer par un dont on dispose déjà :

$ cp /boot/grub/menu.lst /floppy/boot/grub