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:
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
:
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.
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.
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.
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.
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.
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.
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).
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.
-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.
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
.
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.
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.
-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.
-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.
-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.
-v
]Affiche la liste des modules chargés.
Si l'option -v
est utilisée, plus de
détails seront donnés.
nom_du_fichier
Affiche les fichiers indiqués, avec une pause toutes
LINES
lignes.
Redémarre immédiatement le système.
variable
, set
variable
=value
Positionne les variables d'environnement du chargeur.
Retire de la mémoire tous les modules chargés.
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).
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
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>.