Contrairement à leurs ancêtres, les noyaux 2.6 ont besoin d’un gestionnaire d’amorçage pour booter. La création d’une disquette de boot ne peut donc plus se faire au moyen d’un simple:
# cp bzImage /dev/fd0
La création d’une disquette de boot avec lilo ayant échoué, je décide de tenter ma chance avec grub.
Cet article décrit la méthode que j’ai employé pour arriver à mes fins (ce n’est certainement pas la seule méthode possible).
Je partirai du principe que grub est déjà installé sur le PC qui servira à créer la disquette boot.
Installation de grub sur une disquette
Premièrement, formatez la disquette au format ext2fs et créez-y les répertoires boot et boot/grub:
# mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /floppy
# mkdir /floppy/boot
# mkdir /floppy/boot/grub
Ensuite, on copie sur la disquette les fichiers stage1 et stage2 de grub (les fichiers *stage1_5 ne sont pas indispensables ici).
# cp /usr/lib/grub/i386-pc/stage[12] /floppy/boot/grub[[localisation des fichiers sur une Debian woody]]
Enfin, on peut passer à l’installation de grub proprement dite.
# umount /floppy
# grub
Probing devices to guess BIOS drives. This may take a long time.
GRUB version 0.91 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (fd0)
Filesystem type is ext2fs, using whole disk
grub> setup (fd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... no
Running "install /boot/grub/stage1 d (fd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded
Done.
grub> quit
Voilà, grub est installé sur la disquette, il n’y a plus qu’à le configurer.
Configuration de grub
Tout d’abord, voici comment booter un noyau qu’on aura au préalable copié sur la disquette.
# mount -t ext2 /dev/fd0 /floppy
# cp bzImage /floppy/boot
A ce stade, il n’y a plus qu’à créer un fichier: le fichier de configuration /floppy/boot/grub/menu.lst.
Le contenu suivant fera très bien l’affaire:
timeout 2
default 0
title Linux 2.6.0-test10 (disquette)
root (fd0)
kernel /boot/bzImage root=/dev/sda3
Naturellement, remplacez le /dev/sda3 par la partition root.
Grub permet également de booter un noyau qui se trouve sur un autre média.
Pour aller chercher un noyau sur le disque dur, il suffit d’ajouter au fichier menu.lst une entrée de ce style.
title Linux 2.6.0-test10 (disque dur)
root (hd0,0)
kernel /bzImage root=/dev/sda3
hd0,0 fait référence à la première partition du premier disque dur. Dans mon cas, il s’agit de /boot qui est sur une partition séparée, d’où le /bzImage.
Il ne reste plus qu’à démonter la disquette (umount /floppy) et à tester…
Conclusion
La création d’une disquette de boot avec grub reste simple. Une fois grub installé sur une disquette de 1.44 Mo, il reste plus de 1.2 Mo pour le noyau, ce qui est largement suffisant.
Grub est également d’une très grande souplesse puisque depuis une disquette, on a la possibilité d’aller chercher le noyau à booter sur un disque dur (ce qui est plus rapide si on boote sur disquette suite à un simple problème de MBR).