Le chargeur de BSD

12/02/2002

Alix MASCRET


Nous avons toujours eu besoin, à un moment ou à un autre, d'installer plusieurs systèmes ou plusieurs versions d'un même système sur une même machine. Il est possible de faire à peut prêt tout ce que l'on veut à condition que l'on prenne quelques précautions. Ce document donne quelques indications pour réaliser cela et prendre en charge l'initialisation avec le chargeur de BSD. Le chargeur de BSD est installé par le programme de partitionnement de BSD, "disklabel", j'aurai l'occasion de revenir sur ce point.


1. Réflexions préliminaires

On va voir comment installer 4 systèmes ou plus sur une machine (linux, openBSD, freeBSD, windows).

Les systèmes windows sont un peu particuliers, voici juste ce qu'il faut savoir.

Windows 9.x s'installe (il ne vous donne pas le choix) sur la partition système. Première partition primaire du premier disque vu par le BIOS. D'autre part quand vous l'installez il ne se préoccupe pas de savoir si vous avez un chargeur sur le MBR. Il écrase donc ce qu'il y a dessus. Dans notre scénario cela ne pose pas de problème. Vous pouvez installer ce système au début, ou à la fin. Nous verrons comment installer/réinstaller le chargeur BSD à la fin. Par contre vous devrez prévoir une partition primaire pour cet OS.

Les systèmes windows NT4 ou windows 2000 peuvent être installés sur n'importe quelle partition d'amorçage (primaire ou étendue). Par contre le chargeur de ces systèmes s'installe sans vous poser la question sur le MBR. Si vous prévoyez d'installer un de ces systèmes alors vous ne pourrez pas utiliser le chargeur de BSD. C'est le chargeur de Windows qui sera utilisé. Cette option sort du cadre de ce document, je ne l'envisagerai donc pas, mais je vous donnerai à la fin quelques pistes pour régler le problème.

On sait donc, que l'on va avoir sur notre machine un windows 9.x, OpenBSD, FreeBSD et au moins un Linux. Sur la maquette j'ai en fait mis aussi une Debian, une Mandrake, une RedHat, et une Slackware.

2. Quelques contraintes

Voici ce qu'il faut savoir avant de démarrer :

  1. On ne peut créer que 4 partitions primaires sur un disque. Pour passer outre cette limitation on utilise une partition étendue et des volumes logiques.

  2. On a obligatoirement une partition primaire (partition système) pour windows.

  3. Le système de partitionnement de BSD diffère de celui des autres systèmes. On crée d'abord une "tranche" de disque (slice), qui sera utilisée pour installer le système. Cela est réalisé à l'aide d'un programme fdisk. C'est cet espace qui sera déclaré dans la table des partitions. L'avantage est que cela ne crée qu'une entrée. Cet espace est ensuite partitionné au sens BSD du terme. On crée avec le programme disklabel les partitions /, /usr, /var...et le swap. Pour ne pas faire de confusion, j'utiliserai le terme de "volume BSD" pour parler de la "tranche" de disque réservée à ce système.

  4. On en peut pas créer un volume BSD sur une partition étendue créée avec linux, on utilisera donc deux partitions primaires, une pour FreeBSD, l'autre pour OpenBSD.

  5. Le boot loader BSD ne peut pas initialiser un système Linux installé sur une partition étendue, par contre cela peut être pris en charge par lilo.

  6. Lilo peut prendre en charge des systèmes Linux installés sur des partitions primaires ou étendues, sur le premier disque ou sur un autre, mais Lilo doit être installé sur une partition du premier disque. Cela signifie que vous ne pouvez pas initialiser un Linux installé sur le premier disque, à partir d'un Lilo installé sur un second disque.

    Nous avons vu aussi que ce Lilo doit être installé sur une partition primaire pour être pris en charge par le Boot Loader de BSD et qu'à son tour il prenne en charge l'amorçage de systèmes Linux installés sur des partitions étendues.

  7. Le chargeur BSD peut initialiser un système Linux installé sur un disque secondaire, si Linux est sur une partition primaire.

  8. Le chargeur BSD ne permet pas de passer une ligne de commande comme Lilo, il n'est donc pas possible de faire par exemple "linux root=/dev/sda6".

On voit donc qu'il nous faut au moins quatre partitions primaires (win, OpenBSD, FreeBSD, et au moins une pour mettre en place un lilo), ce dernier ayant en charge les systèmes Linux installés sur des partitions étendues. Deux de ces partitions primaires sont obligatoirement sur le premier disque.

Maintenant que l'on a tous ces éléments, on peut planifier l'organisation de ses systèmes. Il y a plusieurs solutions possibles, seule contrainte il faut au moins deux disques, je n'ai pas pu faire avec moins.

Voici l'organisation que j'ai adopté :

  1. disque primaire, partition primaire 1, windows

  2. disque primaire, partition primaire 2, FreeBSD

  3. disque primaire, partition primaire 3, OpenBSD

  4. disque primaire, partition primaire 4, Linux

  5. sur le deuxième disque j'ai mis les autres systèmes Linux et la partition de swap sur des partitions étendues. Ces systèmes seront amorcés par le Lilo du disque 1 partition 4, mais si vous les mettez sur des partitions primaires ils seront amorçables directement à partir du chargeur de BSD.

3. Installer les systèmes

Créer la partition 1, disque 1. Si vous ne voulez pas installer windows tout de suite, ce n'est pas grave, formatez là quand même avec un format c: /s .

Installez ensuite, peut importe l'ordre FreeBSD sur la partition 2 disque 1 et OpenBSD sur la partition 3 disque 1. Les installations vont mettre à jour le MBR. Le chargeur BSD affecte une touche de fonction F1, F2...Fn pour chaque système qu'il est capable d'initialiser. Vous aurez donc après cette opération F1 pour Dos, F2 pour lancer FreeBSD et F3 pour lancer OpenBSD.

Installez ensuite Linux sur le disque 1 partition 4. Á la fin n'installez pas lilo sur /dev/sda ou /dev/hda. Installez le sur /dev/sda4 ou /dev/hda4. La table des systèmes du MBR est mise à jour. Vous aurez la touche F4 pour initialiser votre Linux.

Voyons maintenant pour les autres systèmes Linux installés sur le deuxième disque.

Si vous les mettez sur des partitions primaires, la table des systèmes du MBR sera mise à jour. Vous aurez F6, F7, F8.... Attention seulement à bien installer Lilo sur le PBR des partitions et pas sur le MBR de hda, hdb (disques IDE) ou sda, sdb (disques SCSI).

J'ai sauté la touche F5, me direz vous ?

Non, dans notre scénario, la touche F5 est un flip/flop. Comme le chargeur détecte 4 systèmes amorçables sur le premier disque et peut en détecter d'autres sur le second (par exemple si vous avez installé des systèmes sur des partitions primaires), la touche F5 permet de basculer d'un disque à l'autre et vous affiche pour chaque disque la table des systèmes amorçables.

Si vous mettez les systèmes sur des partitions étendues du second disque, le chargeur BSD ne pourra pas les initialiser. Voici comment faire :

  1. Installez vos systèmes Linux normalement sur les partitions étendue. Installez lilo sur les PBR.

  2. Démarrer le Linux installé sur le disque 1 partition 4, modifiez le lilo.conf pour rajouter les autres systèmes linux, réinstaller lilo.

Normalement c'est terminé, en activant la touche F4 au démarrage de la machine, lilo va vous proposer le choix entre tous les Linux. Vous n'avez qu'à choisir dans le menu ou les lancer par la ligne de commande.

4. Le problème windows

Si vous installez win9.x à la fin vous devrez réinstaller la table des systèmes amorçables sur le MBR. Vous avez un programme sur vos CD BSD, dans le répertoire "tools" qui s'appelle bootinst.exe. Lancez ce programme, il va détecter toutes les partitions amorçables et mettra à jour le MBR. BOOTINST fait une sauvegarde du MBR existant, ne le lancez pas à partir de CD car il ne pourra pas écrire. Copier les fichiers sur un répertoire du disque C et lancer le programme à partir de là. .

Avec windows NT ou 2000 vous dites adieu à tous vos chargeurs favoris. Voici comment procédersi vous ne voulez pas vous contenter de la disquette de boot de Windows :

  1. Créer une image des PBR respectifs de vos partitions amorçables. Voici par exemple comment faire pour le pbr de votre disque 1 partition 4, à savoir le système Linux.

    Démarrer votre système sous Linux, vérifier que la partition système est bien montée (par exemple sur /dos) et utilisez la commande suivante :

    dd if=/dev/sda3 bs=512 count=1 of=/dos/bootsec.lin
    

    Commentaire : on lit en entrée le premier secteur de 512 octets sur /dev/sda3. La sortie est redirigée dans le fichier bootsec.lin, localisé sur /dos (/dev/sda1). Attention, vous devrez adapter cette commande à votre environnement.

    Attention au nommage des disques sur les systèmes FreeBSD et OpenBSD qui est différent des systèmes Dos/Win et Linux.Il vous faudra relever l'adresse exacte du secteur de boot. Voici par exemple la récupération du secteur de boot d'un OpenBSD :

    dd if=/dev/sd0s1 bs=512 count=1 of=/dos/bootsec.obsd
    

  2. Rajouter les lignes dans c:\boot.ini, par exemple :

     c:\bootsec.lin="Linux Debian sur /dev/sda4"
    
    Enregistrez, l'option apparaîtra dans le Boot Loader de Windows..

5. Sources de documentations

Les aspects sur la cohabitation de différents systèmes à été traitée à de nombreuses reprises et dans plusieurs documents. Vous trouverez ces informations dans les HOWTO(s) et dans les FAQ(s). Voici les principales URl(s):

  1. OpenBSD

  2. FreeBSD

  3. Du grain à moudre

  4. Linux HOWTO

6. Attention avant de démarrer

Hé oui, la remarque est à la fin, car j'imagine que vous avez pris le temps de lire ce document avant de passer aux opérations. Ne faites pas vos premiers tests sur votre machine de travail, ou alors, prenez d'abord le temps de faire vos sauvegardes si ce n'est pas déjà fait. :-) .