12.3. Le gestionnaire de démarrage et les étapes de démarrage
Précédent | Chapitre 12. Processus de démarrage de FreeBSD | Suivant

## 12.3. Le gestionnaire de démarrage et les étapes de démarrage

### 12.3.1. Le gestionnaire de démarrage

Le code contenu dans le MBR ou gestionnaire de démarrage ou d'amorce est parfois appelé étape zéro du processus de démarrage. Cette section discute de deux gestionnaires de démarrage précédemment mentionnés: boot0 et LILO.

Le gestionnaire d'amorce boot0: Le MBR installé par l'installateur FreeBSD ou par boot0cfg(8) est basé sur `/boot/boot0`. (`boot0` est très simple, puisque le programme dans le MBR ne peut pas occuper plus de 446 octets en raison de la table de partition principale et l'identifiant `0x55AA` à la fin du MBR). Si vous avez installé boot0 et plusieurs systèmes d'exploitation sur vos disques durs alors vous verrez un affichage semblable à celui-ci au démarrage:

Exemple 12.1. Ecran de `boot0`
F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2

D'autres systèmes d'exploitation, en particulier Windows®, sont connus pour écraser le MBR existant avec le leur. Si cela vous arrive, ou que vous désirez remplacer le MBR existant avec le MBR de FreeBSD alors utilisez la commande suivante:

`#` `fdisk -B -b /boot/boot0 `device``

où `device` est le périphérique à partir duquel vous démarrez, comme `ad0` pour le premier disque IDE, `ad2` pour le premier disque IDE sur le second contrôleur IDE, `da0` pour le premier disque SCSI, et ainsi de suite. Ou, si vous voulez une configuration sur mesure du MBR, employez boot0cfg(8).

Le gestionnaire de démarrage LILO: Pour installer ce gestionnaire de manière à ce qu'il amorce également FreeBSD, démarrez tout d'abord Linux et ajoutez ce qui suit au fichier de configuration `/etc/lilo.conf`:

other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD

Dans ce qui précède, précisez la partition primaire et le disque FreeBSD en utilisant les paramètres propres à Linux, en remplaçant `X` avec la lettre correspondant au disque Linux et `Y` avec le numéro de la partition primaire Linux. Si vous utilisez un disque SCSI, vous changerez `/dev/hd` pour quelque chose de semblable à `/dev/sd`. La ligne `loader=/boot/chain.b` peut être omise si vous avez les deux systèmes d'exploitation sur le même disque. Lancez maintenant la commande `/sbin/lilo -v` pour entériner vos modifications; des messages de contrôle devraient s'afficher, vérifiant ces modifications.

### 12.3.2. Etape une, `/boot/boot1`, et étape deux, `/boot/boot2`

Conceptuellement la première et la seconde étapes font partie du même programme, sur le même emplacement du disque. Mais en raison de contraintes d'espace elles ont été divisées en deux, mais vous les installerez toujours de paire. Elles sont copiées, à partir du fichier combiné `/boot/boot`, par l'installateur ou bsdlabel (voir plus bas).

On les trouve en dehors des systèmes de fichiers, sur la première piste de la tranche de démarrage, à partir du premier secteur. C'est l'endroit où boot0, ou tout autre gestionnaire de démarrage s'attend à trouver le code à exécuter pour continuer le processus de démarrage. Le nombre de secteurs utilisés est facilement déterminé à partir de la taille du fichier `/boot/boot`.

`boot1` est très simple, puisqu'il est limité à 512 octets, et en sait juste assez du bsdlabel de FreeBSD, qui contient l'information sur la tranche, pour trouver et lancer `boot2`.

`boot2` est légèrement plus sophistiqué, et en connaît assez sur le système de fichiers de FreeBSD pour y trouver des fichiers, et il peut également fournir une interface simple pour sélectionner un noyau ou un chargeur à exécuter.

Comme le chargeur est beaucoup plus sophistiqué, et dispose d'une interface de configuration du démarrage facile d'emploi, `boot2` l'exécute habituellement, bien que précédemment, c'est lui qui lançait directement le noyau.

Exemple 12.2. Ecran de `boot2`
>> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot:

Si vous avez un jour besoin de remplacer `boot1` et `boot2`, utilisez bsdlabel(8):

`#` `bsdlabel -B `diskslice``

où `diskslice` est le disque et la tranche à partir de laquelle vous démarrez, comme `ad0s1` pour la première tranche sur le premier disque IDE.

### Mode dangereusement dédié:

Si vous utilisez juste le nom du disque, comme `ad0`, dans la commande bsdlabel(8) vous créerez un disque dangereusement dédié, sans tranches. Ce n'est presque certainement pas ce que vous voulez faire, donc vérifiez à deux fois la commande bsdlabel(8) avant d'appuyer sur Entrée.

### 12.3.3. Etape trois, `/boot/loader`

Le chargeur est la dernière étape du processus de démarrage en trois temps, et il réside sur le système de fichiers, c'est habituellement le fichier `/boot/loader`.

Le chargeur a pour objet de fournir une méthode de configuration conviviale, en utilisant un jeu de commandes faciles d'emploi, doublé d'un interpréteur plus puissant, avec un ensemble de commandes plus complexes.

#### 12.3.3.1. Déroulement des opérations du chargeur

A l'initialisation, le chargeur recherchera la console et les disques, et déterminera à partir de quel disque démarrer. Il positionnera les variables en conséquence, et un interpréteur sera lancé pour lequel l'utilisateur pourra passer des commandes par l'intermédiaire d'une procédure ou de façon interactive.

Le chargeur lira ensuite `/boot/loader.rc`, qui lui ira lire dans `/boot/defaults/loader.conf` les valeurs par défaut des variables à positionner et dans `/boot/loader.conf` les variantes locales de ces dernières. `loader.rc` se sert de ces variables pour charger les modules et le noyau sélectionnés.

Finalement, par défaut, le chargeur attend 10 secondes l'appui sur une ou plusieurs touches, et démarre le noyau s'il n'est pas interrompu. S'il est interrompu, une invite est alors affichée à l'utilisateur, un jeu de commandes simples permet à l'utilisateur de modifier des variables, charger ou décharger des modules, et enfin démarrer ou redémarrer.

#### 12.3.3.2. Commandes intégrées au chargeur

Voici les commandes du chargeur les plus utilisées. Pour une information complète sur toutes les commandes disponibles, veuillez consulter la page loader(8).

autoboot `secondes`

  Démarre le noyau si elle n'est pas interrompue dans le laps de temps donné en secondes. Elle affiche un compte à rebours, et le délai par défaut est de 10 secondes.

boot [`-options`] [`nom_du_noyau`]

  Démarre immédiatement le noyau dont le nom est indiqué, avec les options données, s'il y en a.

boot-conf

  Passe par la même configuration automatique des modules basée sur des variables comme ce qui se produit au démarrage. Cela n'a de sens que si vous utilisez `unload` en premier, et modifiez certaines variables, généralement `kernel`.

help [`sujet`]

  Affiche les messages d'aide contenus dans `/boot/loader.help`. Si le sujet donné est `index`, alors c'est la liste de tous les sujets existants qui est donnée.

include `nom_du_fichier` …

  Traite le fichier dont le nom est donné. Le fichier est lu, et interprété ligne par ligne. Une erreur stoppe immédiatement le traitement.

load [`-t` `type`] `nom_du_fichier`

  Charge le noyau, le module, ou le fichier du type donné, dont le nom est passé en paramètre. Les arguments qui suivent le nom du fichier sont passés au fichier.

ls [`-l`] [`chemin_d_accès`]

  Affiche la liste des fichiers du répertoire donné, ou du répertoire racine, si le chemin d'accès n'est pas précisé. Si l'option `-l` est utilisée, les tailles des fichiers seront également listées.

lsdev [`-v`]

  Liste tous les périphériques depuis lesquels il sera possible de charger des modules. Si l'option `-v` est utilisée, plus de détails seront donnés.

lsmod [`-v`]

  Affiche la liste des modules chargés. Si l'option `-v` est utilisée, plus de détails seront donnés.

more `nom_du_fichier`

  Affiche les fichiers indiqués, avec une pause toutes `LINES` lignes.

reboot

  Redémarre immédiatement le système.

set `variable`, set `variable`=`value`

  Positionne les variables d'environnement du chargeur.

unload

  Retire de la mémoire tous les modules chargés.

#### 12.3.3.3. Exemples d'utilisation du chargeur

Voici quelques exemples pratiques d'utilisation du chargeur:

- Pour simplement démarrer votre noyau habituel, mais en mode mono-utilisateur:

  `boot -s`

- Pour décharger votre noyau et modules habituels, puis charger votre ancien (ou un autre) noyau:

  `unload` `load `kernel.old``

  Vous pouvez utiliser `kernel.GENERIC` pour faire référence au noyau générique du disque d'installation, ou `kernel.old` pour désigner votre noyau précédent (quand vous avez mis à jour ou configuré votre propre noyau, par exemple).

  ### Note:

  Utilisez ce qui suit pour charger vos modules habituels avec un autre noyau:

  `unload` `set kernel="`kernel.old`"` `boot-conf`

- Pour charger une procédure de configuration du noyau (une procédure qui automatise ce que vous faites normalement avec l'outil de configuration du noyau au démarrage):

  `load -t userconfig_script `/boot/kernel.conf``

Précédent | Niveau supérieur | Suivant
12.2. Le problème du démarrage | Sommaire | 12.4. Interaction avec le noyau au démarrage

Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.