GRUB

De Diablotins.org.


GRUB, le système d'amorçage de Linux pour FreeBSD.
Image:brush.png
Grub est le gestionnaire de démarrage le plus connu et le plus éprouvé, il peut avantageusement remplace BootEasy de FreeBSD et a déjà remplacé LILO sur les distributions Linux, car il permet d'amorcer sur la quasi totalité des OS connu.

Aujourd'hui, il se décline en deux versions grub legacy, l'ancêtre et grub2 ou grub-PC, livré avec le dernier opus de Ubuntu par exemple.




Sommaire

Amorcer sur FreeBSD

Par exemple, à partir d'une distribution Ubuntu équipée de grub-PC.

Éditez le fichier /etc/grub.d/40_custom:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "FreeBSD, way of shotgun" {
    set root=(hd0,1)
    chainloader +1
}


menuentry "FreeBSD, boot easy" {
	insmod ufs2
	set root=(hd0,1,a)
	kfreebsd /boot/loader
}


menuentry "FreeBSD, direct boot" {
    insmod ufs2
    set root=(hd0,1,a)
    search --no-floppy --fs-uuid --set 4a86db44195cac47
    kfreebsd /boot/kernel/kernel
    kfreebsd_loadenv /boot/device.hints
    set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ad4s1a
    set kFreeBSD.vfs.root.mountfrom.options=rw
}

Notez le «k» de «kfreebsd», requis par les dernières versions de Grub-PC.

La première technique est universelle: C'est un «passe à ton voisin», Grub va laisser la main au chargeur du disque d'à coté...

La deuxième charge l'amorce de FreeBSD et la seconde tente de charger le noyau tout seul, sur le disque /dev/ad4s1a(4).
La ligne «search» est la méthode canonique qui va vérifier le disque requis grâce à son label. Elle n'est de fait, pas nécessaire.


Ensuite, tapez sous Linux:

update-grub2

ou

grub-mkconfig -o /boot/grub/grub.cfg

...pour ceux qui n'ont pas le premier raccourci.


Attention, par défaut, le menu ne s'affiche que si vous gardez la touche «shift» appuyée.

La dernière méthode pose encore un problème, si vous utilisez des “tunable“ dans /boot/loader.conf: ils ne sont pas pris en compte.

Installer grub sur FreeBSD

Dans notre cas nous allons expliquer un dual-boot Win9X/FreeBSD sur deux disque dur IDE, hd0 et hd1 avec sur hd0 une partition Windows FAT32 (hd0,0) et sur hd1 un slice FreeBSD (hd1,0) . si le slice et la partition FAT était sur le même disque IDE ont aurait eut par exemple (hd0,0) et (hd0,1) .

Configuration

Installez simplement le port sysutil/grub
Toutes les commandes jusqu'à la fin seront passé avec l'id (0) root.
Il est impératif que la configuration de GRUB soit dans /boot/grub:

  # mkdir /boot/grub
  # cd /boot/grub

Copiez distfile dans le répertoire :

  # cp /usr/local/share/grub/i386-freebsd/* .

Éditez le fichier de configuration du stage 1 /boot/grub/menu.lst pour définir son chargement au démarrage de la machine :

# vi /boot/grub/menu.lst
--
default 0 # l'os par défaut, FreeBSD
timeout 5

# FreeBSD: index 0
title FreeBSD # titre dans le menu Grub
root (hd1,0,a) # localisation : 2eme disque, 1er slice, disklabel a (/)
kernel /boot/loader # Le loader de FreeBSD

# Windows 98: index 1
title Windows 9x # Le titre
root (hd0,0) # 1er disque, 1ere partition
makeactive # Rendre la partition active
chainloader +1 # Utiliser le boot de Windows


le dernier sysutils/grub2/ est désormais dans les ports.

Installation sur le MBR

Vous avez la possibilité d'amorcer GRUB sur une disquette. On convient du premier lecteur comme cible.

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

Si l'on considère que votre disque d'amorce est le disque 0 (le 1er disque), séquence de boot A, C dans le BIOS:

  # grub
  grub> root (hd1,0,a)
  grub> setup (hd0)
  grub> quit

C'est fini, relancez la machine:

  # reboot
Outils personnels
Projets :