Booter FreeBSD avec Grub

Georg Wagner
Translate by eberkut - http://www.chez.com/keep

1  Qu'est-ce que Grub ?

Grub

2  Préparer l'installation de Grub

2.1  Obtenir Grub

Je n'ai jamais à compiler grub depuis les sources sur système FreeBSD avant la release 4.0. Par conséquent, j'avais l'habitude de ripper grub à partir d'une distribution Debian Linux. De nos jours vous pouvez télécharger une copie précompilée à ftp://alpha.gnu.org/gnu/grub/.

La dernière version utilisée est : grub-0.5.96.1-i386-pc.tar.gz
Il y a même un port fonctionnant dans le port collection maintenant.

2.2  Installer les fichiers

Unzippez et détarez le tarball avec :

# tar zxvf ./grub-0.5.96.1-i386-pc.tar.gz

Maintenant modifiez le répertoire /boot, créez un sous-répertoire nommé grub et copiez les fichiers stage1, stage2, et menu.lst dans le nouveau répertoire.

$ cd /boot
# su toor
# mkdir grub
# cd grub
# cp /path_to_grub/grub-0.5.96.1-i386-pc/stage1 .
# cp path_to_grub/grub-0.5.96.1-i386-pc/stage2 .
# cp /path_to_grub/grub-0.5.96.1-i386-pc/menu.lst .

2.3  Éditer menu.1st

Éditez le fichier /boot/grub/menu. Il devrait contenir ceci :

# For booting FreeBSD 
title FreeBSD 
root (hd1,a) 
kernel /boot/loader
# For booting Windows NT or Windows95 
title Windows NT / Windows 95 boot menu 
root (hd0,0) 
makeactive 
chainloader +1 
boot
# For loading DOS if Windows NT is installed 
# chainload /bootsect.dos
The same as the above, just for Windows. 
# For installing GRUB into the hard disk 
title Install GRUB into the hard disk 
root (hd0,0) 
setup (hd0)

Remarques : La string d'installation devrait refléter votre système personnel. Sur ma machine, FreeBSD réside sur le deuxième disque sd1 SCSI et je préfère le booter à partir d'une disquette.

Les anciennes version de grub peuvent ne pas charger le nouveau ELF_kernel de FreeBSD. Par conséquent il était nécessaire d'amorcer le kernel indirectement par /boot/loader. Même maintenant c'est la méthode préférée, en raison du nombre de dispositifs utiles de /boot/loader.

2.4  Générer le disque d'installation bootable

Depuis que je ne peut plus compiler le grub sous FreeBSD, l'installation finale doit être faite par l'intermédiaire du disque de boot (d'autre part vous pourriez utiliser le grub shell directement).

Insérez une disquette dans votre lecteur, su en root, puis entrez les commandes :

# cd /boot/grub
# dd if=stage1 of=/dev/fd0 bs=512 count=1
# dd if=stage2 of /dev/fd0 bs=512 seek=1

Si tout fonctionne vous devriez avoir maintenant un disque d'installation bootable depuis la disquette.

3  Installer Grub

Rebootez votre machine et attendez jusqu'à ce que vous soyez dans le grub shell. Entrez alors (tout sur une ligne) :

install=(hd1,a)/boot/grub/stage1 d(fd0)
(hd1,a)/boot/grub/stage2 0x8000 p 
(hd1,a)/boot/grub/menu.lst

La première partie indique à grub où trouver son stage1. La 2ème partie indique au grub d'installer son secteur de boot sur une disquette (fd0) (insérez en une neuve avant de taper "entrée", si vous voulez conserver votre disque d'installation). La 3ème partie indique où trouver stage2 et la dernière partie indique où le fichier menu réside. J'ai omis la partie avec 0x8000 p, si vous voulez en savoir plus lisez le manuel. Un point intéressant : le d devant (fd0) est décrit comme facultatif dans le manuel, mais toutes les installations que j'ai essayées échouaient quand cette option était omise.

4  Références

  1. Grub's Home: http://www.gnu.org/software/grub/grub.en.html
  2. Download grub: ftp://alpha.gnu.org/gnu/grub/
  3. The grub manual: http://www.mcc.ac.uk/grub/grub_toc.html
  4. Erik Boleyn's original grub: http://www.uruk.org/~erich/grub/