<!--
     The FreeBSD Documentation Project
     The FreeBSD French Documentation Project

     $FreeBSD$
     Original revision: 1.56
-->

<chapter id="boot">
  <title>Processus de d&eacute;marrage de FreeBSD</title>
  &trans.a.fonvieille;

  <sect1 id="boot-synopsis">
    <title>Synopsis</title>
    <indexterm><primary>d&eacute;marrage</primary></indexterm>
    <indexterm><primary>bootstrap</primary></indexterm>

    <para>L'action de d&eacute;marrer un ordinateur et de
      charger le syst&egrave;me d'exploitation est d&eacute;sign&eacute;e
      sous le nom de &ldquo;processus de bootstrap&rdquo;, ou simplement
      d&eacute;marrage.  Le processus de d&eacute;marrage de FreeBSD
      fournit une grande flexibilit&eacute; en adaptant ce qui se passe
      quand vous d&eacute;marrez le syst&egrave;me, vous permettant
      de choisir parmi les diff&eacute;rents syst&egrave;mes
      d'exploitation install&eacute;s sur l'ordinateur, ou m&ecirc;me
      parmi les diff&eacute;rentes versions du m&ecirc;me syst&egrave;me
      d'exploitation ou du noyau install&eacute;es.</para>

    <para>Ce chapitre d&eacute;taille les options de configuration que
      vous pouvez param&eacute;trer et comment personnaliser le processus
      de d&eacute;marrage de FreeBSD.  Cela inclut tout ce qui se produit
      jusqu'au d&eacute;marrage du noyau FreeBSD, la d&eacute;tection des
      p&eacute;riph&eacute;riques, et le d&eacute;marrage d'&man.init.8;.
      Si vous n'&ecirc;tes pas tout &agrave; fait s&ucirc;r du moment auquel
      cela arrive, cela se produit &agrave; l'instant o&ugrave; la
      couleur du texte passe d'un blanc lumineux au gris.</para>

    <para>Apr&egrave;s la lecture de ce chapitre, vous
      conna&icirc;trez:</para>

    <itemizedlist>
      <listitem>
	<para>Quels sont les composants du syst&egrave;me de
	  d&eacute;marrage de FreeBSD, et comment ils agissent les uns
	  sur les autres.</para>
      </listitem>

      <listitem>
	<para>Les options que vous pouvez passer aux composants du
	  syst&egrave;me de d&eacute;marrage de FreeBSD pour
	  contr&ocirc;ler le processus.</para>
      </listitem>

      <listitem>
	<para>Les bases du syst&egrave;me &man.device.hints.5;.</para>
      </listitem>
    </itemizedlist>

    <note>
      <title>x86 seulement</title>

      <para>Ce chapitre ne d&eacute;crit que le processus de
	d&eacute;marrage de FreeBSD pour les syst&egrave;mes Intel x86.</para>
    </note>
  </sect1>

  <sect1 id="boot-introduction">
    <title>Le probl&egrave;me du d&eacute;marrage</title>

    <para>Allumer un ordinateur et d&eacute;marrer le syst&egrave;me
      d'exploitation pose un int&eacute;ressant dilemme.  Par
      d&eacute;finition, l'ordinateur ne sait rien faire jusqu'&agrave;
      ce que le syst&egrave;me d'exploitation soit lanc&eacute;.
      Ceci inclut l'ex&eacute;cution des programmes &agrave; partir du disque.
      Donc si l'ordinateur ne peut pas ex&eacute;cuter de programme
      &agrave; partir du disque sans le syst&egrave;me d'exploitation, et
      que les programmes du syst&egrave;me d'exploitation sont sur
      le disque, comment le syst&egrave;me d'exploitation est-il
      d&eacute;marr&eacute;?</para>

    <para>On peut faire le parall&egrave;le avec un
      &eacute;v&eacute;nement du livre <citetitle>Les aventures du Baron
      Munchausen</citetitle>.  Le personnage tombe dans une bouche
      d'&eacute;gout avec une partie du corps hors de la bouche, et il s'en
      sort en attrapant les fixations de ses bottes
      (&ldquo;bootstraps&rdquo;), et en se soulevant ainsi.  Dans les
      premiers jours de l'informatique le terme
      <firstterm>bootstrap</firstterm> fut appliqu&eacute; au m&eacute;canisme
      utilis&eacute; pour charger le syst&egrave;me d'exploitation, terme qui a
      &eacute;t&eacute;
      raccourci en &ldquo;booting&rdquo; (que l'on traduit par d&eacute;marrage
      en Fran&ccedil;ais).</para>

    <para>Sur l'architecture x86 c'est le BIOS (&ldquo;Basic
      Input/Output System&rdquo;) qui est responsable du chargement du
      syst&egrave;me d'exploitation.  Pour effectuer cela, le BIOS recherche
      sur le disque dur le &ldquo;Master Boot Record&rdquo; - Secteur
      Principal de D&eacute;marrage (MBR), qui doit &ecirc;tre
      plac&eacute; &agrave; un endroit bien pr&eacute;cis sur le disque.
      Le BIOS dispose de
      suffisamment de connaissances pour charger et ex&eacute;cuter
      le MBR, et suppose que le MBR peut alors effectuer le reste des
      t&acirc;ches impliqu&eacute;es dans le chargement du syst&egrave;me
      d'exploitation.</para>

    <indexterm>
      <primary>BIOS</primary>
      <secondary>Basic Input/Output System</secondary>
    </indexterm>

    <para>Si vous n'avez qu'un seul syst&egrave;me d'exploitation
      install&eacute; sur vos disques alors le MBR standard sera suffisant.  Ce
      MBR recherche la premi&egrave;re tranche (&ldquo;slice&rdquo;)
      d&eacute;marrable sur le disque, et puis ex&eacute;cute le code sur cette
      tranche pour charger le reste du syst&egrave;me d'exploitation.</para>

    <para>Si vous avez install&eacute; plusieurs syst&egrave;mes
      d'exploitation sur vos disques alors vous pouvez installer un MBR
      diff&eacute;rent, qui permet d'afficher une liste des
      diff&eacute;rents syst&egrave;mes d'exploitation, et vous permet de
      s&eacute;lectionner
      celui &agrave; partir duquel d&eacute;marrer.  FreeBSD est fourni
      avec un tel MBR qui peut &ecirc;tre install&eacute;, et les
      fournisseurs d'autres syst&egrave;mes d'exploitation fournissent
      &eacute;galement d'autres MBRs.</para>

    <para>Le reste du syst&egrave;me de d&eacute;marrage de FreeBSD est
      divis&eacute; en trois &eacute;tapes.
      La premi&egrave;re &eacute;tape est ex&eacute;cut&eacute;e
      par le MBR, qui en sait juste assez pour mettre l'ordinateur dans
      un &eacute;tat sp&eacute;cifique et lancer la deuxi&egrave;me
      &eacute;tape.  La seconde &eacute;tape peut en faire un peu plus, avant de
      lancer la troisi&egrave;me &eacute;tape.  La troisi&egrave;me &eacute;tape
      termine la t&acirc;che de chargement du syst&egrave;me d'exploitation.
      La t&acirc;che a &eacute;t&eacute; s&eacute;par&eacute;e en trois
      &eacute;tapes parce que le standard PC
      impose des limites sur la taille des programmes qui peuvent
      &ecirc;tre ex&eacute;cut&eacute;s aux &eacute;tapes une et deux.
      L'encha&icirc;nement des t&acirc;ches permet &agrave; FreeBSD de fournir
      un chargeur plus flexible.</para>

    <indexterm><primary>noyau</primary></indexterm>
    <indexterm><primary><command>init</command></primary></indexterm>

    <para>Le noyau est ensuite d&eacute;marr&eacute; et commence
      &agrave; sonder le syst&egrave;me &agrave; la recherche de
      p&eacute;riph&eacute;riques et les initialise.  Une fois le
      processus de d&eacute;marrage du noyau achev&eacute;, le noyau
      passe la main au processus &man.init.8;, qui alors v&eacute;rifie
      que les disques sont utilisables.
      &man.init.8; commence ensuite la configuration des ressources au
      niveau utilisateur, monte les syst&egrave;mes de fichiers,
      initialise les cartes r&eacute;seaux pour communiquer sur le
      r&eacute;seau, et lance tous les processus qui sont habituellement
      ex&eacute;cut&eacute;s au d&eacute;marrage d'un syst&egrave;me
      FreeBSD.</para>
  </sect1>

  <sect1 id="boot-blocks">
    <title>Le MBR, et les &eacute;tapes de d&eacute;marrage une,
      deux et trois</title>

    <sect2 id="boot-boot0">
      <title>Le MBR, <filename>/boot/boot0</filename></title>
      <indexterm><primary>Master Boot Record (MBR)</primary></indexterm>

      <para>Le MBR de FreeBSD se trouve dans <filename>/boot/boot0</filename>.
	C'est une <emphasis>copie</emphasis> du MBR, le MBR r&eacute;el
	doit &ecirc;tre plac&eacute; &agrave; un emplacement bien
	sp&eacute;cifique du disque, en
	dehors de la zone occup&eacute;e par FreeBSD.</para>

      <para><filename>boot0</filename> est tr&egrave;s simple, puisque le
	programme dans le <abbrev>MBR</abbrev> ne peut pas occuper plus
	de 512 octets.  Si vous avez install&eacute; le MBR de FreeBSD
	et plusieurs syst&egrave;mes d'exploitation sur vos disques durs alors
	vous verrez un affichage semblable &agrave; celui-ci au
	d&eacute;marrage:</para>

      <example id="boot-boot0-example">
	<title>Ecran de <filename>boot0</filename></title>

	<screen>F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1

Default: F2</screen>
      </example>

      <para>D'autres syst&egrave;mes d'exploitation, en particulier
	&windows;&nbsp;95, sont connus pour &eacute;craser le MBR existant avec le
	leur.  Si cela vous arrive, ou que vous d&eacute;sirez remplacer
	le MBR existant avec le MBR de FreeBSD alors utilisez la commande
	suivante:</para>

      <screen>&prompt.root; <userinput>fdisk -B -b /boot/boot0 <replaceable>device</replaceable></userinput></screen>

      <para>o&ugrave; <replaceable>device</replaceable> est le
	p&eacute;riph&eacute;rique &agrave; partir duquel vous
	d&eacute;marrez, comme <devicename>ad0</devicename> pour le premier
	disque IDE, <devicename>ad2</devicename> pour le premier disque
	IDE sur le second contr&ocirc;leur IDE, <devicename>da0</devicename>
	pour le premier disque SCSI, et ainsi de suite.</para>

      <para>Si vous &ecirc;tes un utilisateur de Linux, et que vous
	pr&eacute;f&eacute;rez que <application>LILO</application>
	contr&ocirc;le le
	processus de d&eacute;marrage, vous pouvez &eacute;diter le fichier
	<filename>/etc/lilo.conf</filename> pour FreeBSD, ou
	s&eacute;lectionner l'option <option>Leave The Master Boot Record
	Untouched</option> lors de l'installation de FreeBSD.  Si vous
	avez install&eacute; le gestionnaire de d&eacute;marrage de FreeBSD,
	vous pouvez red&eacute;marrer sous Linux et modifier le fichier de
	configuration de <application>LILO</application>,
	<filename>/etc/lilo.conf</filename> et ajouter l'option
	suivante:</para>

      <programlisting>other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSD</programlisting>

      <para>ce qui permettra le d&eacute;marrage de FreeBSD et de Linux via
	<application>LILO</application>.  Dans notre exemple, nous
	utilisons <replaceable>XY</replaceable> pour d&eacute;terminer le
	num&eacute;ro du disque et la partition.  Si vous utilisez un disque
	<acronym>SCSI</acronym>, vous changerez
	<replaceable>/dev/hdXY</replaceable> pour quelque chose de
	semblable &agrave; <replaceable>/dev/sdXY</replaceable>, qui utilise
	encore la syntaxe <replaceable>XY</replaceable>.  L'option
	<option>loader=/boot/chain.b</option> peut &ecirc;tre omise si vous
	avez les deux syst&egrave;mes d'exploitation sur le m&ecirc;me disque.
	Vous pouvez maintenant lancer <command>/sbin/lilo -v</command> pour
	ent&eacute;riner vos modifications, des messages de contr&ocirc;le
	devraient s'afficher.</para>
    </sect2>

    <sect2 id="boot-boot1">
      <title>Etape une, <filename>/boot/boot1</filename>, et &eacute;tape deux,
	<filename>/boot/boot2</filename></title>

      <para>Conceptuellement la premi&egrave;re et la seconde &eacute;tapes
	font partie du m&ecirc;me programme, sur le m&ecirc;me emplacement du
	disque.  Mais en raison de contraintes d'espace elles ont
	&eacute;t&eacute; divis&eacute;es en deux, mais vous les installerez
	toujours de paire.</para>

      <para>On les trouve sur le secteur de d&eacute;marrage de la tranche
	de d&eacute;marrage, qui est l'endroit o&ugrave; <link
	linkend="boot-boot0">boot0</link>, ou tout autre programme sur
	le <abbrev>MBR</abbrev> s'attend &agrave; trouver le code &agrave;
	ex&eacute;cuter pour continuer le processus de d&eacute;marrage.
	Les fichiers dans le r&eacute;pertoire <filename>/boot</filename>
	sont des copies des fichiers r&eacute;els, qui sont stock&eacute;es
	en dehors du syst&egrave;me de fichiers de FreeBSD.</para>

      <para><filename>boot1</filename> est tr&egrave;s simple, puisqu'il est de
	la m&ecirc;me fa&ccedil;on limit&eacute; &agrave; 512 octets, et en
	sait juste assez du
	<firstterm>disklabel</firstterm> de FreeBSD, qui contient
	l'information sur la tranche, pour trouver et lancer
	<filename>boot2</filename>.</para>

      <para><filename>boot2</filename> est l&eacute;g&egrave;rement
	plus sophistiqu&eacute;, et en conna&icirc;t assez sur le
	syst&egrave;me de fichiers
	de FreeBSD pour y trouver des fichiers, et il peut &eacute;galement
	fournir une interface simple pour s&eacute;lectionner un noyau ou un
	chargeur &agrave; ex&eacute;cuter.</para>

      <para>Comme le <link linkend="boot-loader">chargeur</link> est
	beaucoup plus sophistiqu&eacute;, et dispose d'une interface de
	configuration du d&eacute;marrage facile d'emploi,
	<filename>boot2</filename> l'ex&eacute;cute habituellement, bien que
	pr&eacute;c&eacute;demment, c'est lui qui
	lan&ccedil;ait directement le noyau.</para>

      <example id="boot-boot2-example">
	<title>Ecran de <filename>boot2</filename></title>

	<screen>&gt;&gt; FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:</screen>
      </example>

      <para>Si vous avez un jour besoin de remplacer
	<filename>boot1</filename> et <filename>boot2</filename>
	utilisez &man.disklabel.8;:</para>

      <screen>&prompt.root; <userinput>disklabel -B <replaceable>diskslice</replaceable></userinput></screen>

      <para>o&ugrave; <replaceable>diskslice</replaceable> est le disque et la
	tranche &agrave; partir de laquelle vous d&eacute;marrez, comme
	<devicename>ad0s1</devicename> pour la premi&egrave;re tranche sur le
	premier disque IDE.</para>

      <warning>
	<title>Mode dangereusement d&eacute;di&eacute;</title>

	<para>Si vous utilisez juste le nom du disque, comme
	  <devicename>ad0</devicename>, dans la commande &man.disklabel.8;
	  vous cr&eacute;erez un disque dangereusement d&eacute;di&eacute;,
	  sans tranches.
	  Ce n'est presque certainement pas ce que vous voulez faire,
	  donc v&eacute;rifiez &agrave; deux fois la commande
	  &man.disklabel.8; avant d'appuyer sur
	  <keycap>Entr&eacute;e</keycap>.</para>
      </warning>
    </sect2>

  <sect2 id="boot-loader">
    <title>Etape trois, <filename>/boot/loader</filename></title>

    <indexterm><primary>boot-loader</primary></indexterm>
    <para>Le chargeur est la derni&egrave;re &eacute;tape
      du processus de d&eacute;marrage en trois temps, et il r&eacute;side sur
      le syst&egrave;me de fichiers, c'est habituellement le fichier
      <filename>/boot/loader</filename>.</para>

    <para>Le chargeur a pour objet de fournir une m&eacute;thode de
      configuration conviviale, en utilisant un jeu de commandes faciles
      d'emploi, doubl&eacute; d'un interpr&eacute;teur plus puissant, avec un
      ensemble de commandes plus complexes.</para>

    <sect3 id="boot-loader-flow">
      <title>D&eacute;roulement des op&eacute;rations du chargeur</title>

      <para>A l'initialisation, le chargeur recherchera la console et
	les disques, et d&eacute;terminera &agrave; partir de quel disque
	d&eacute;marrer.  Il positionnera les variables en
	cons&eacute;quence, et un interpr&eacute;teur sera lanc&eacute;
	pour lequel l'utilisateur pourra passer des commandes par
	l'interm&eacute;diaire d'une proc&eacute;dure ou de fa&ccedil;on
	interactive.</para>
      <indexterm><primary>chargeur</primary></indexterm>
      <indexterm><primary>configuration du chargeur</primary></indexterm>

      <para>Le chargeur lira ensuite
	<filename>/boot/loader.rc</filename>, qui lui ira lire
	dans <filename>/boot/defaults/loader.conf</filename>
	les valeurs par d&eacute;faut des variables &agrave; positionner et dans
	<filename>/boot/loader.conf</filename> les variantes locales de
	ces derni&egrave;res.  <filename>loader.rc</filename> se sert de ces
	variables pour charger les modules et le noyau
	s&eacute;lectionn&eacute;s.</para>

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

    </sect3>

    <sect3 id="boot-loader-commands">
      <title>Commandes int&eacute;gr&eacute;es au chargeur</title>

      <para>Voici les commandes du chargeur les plus utilis&eacute;es.
	Pour une information compl&egrave;te sur toutes les commandes
	disponibles, veuillez consulter la page &man.loader.8;.</para>

      <variablelist>
	<varlistentry>
	  <term>autoboot <replaceable>secondes</replaceable></term>

	  <listitem>
	    <para>D&eacute;marre le noyau si elle n'est pas interrompue
	      dans le laps de temps donn&eacute; en secondes.  Elle affiche
	      un compte &agrave; rebours, et le d&eacute;lai par d&eacute;faut
	      est de 10 secondes.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>boot
	    <optional><replaceable>-options</replaceable></optional>
	    <optional><replaceable>nom_du_noyau</replaceable></optional></term>

	  <listitem>
	    <para>D&eacute;marre imm&eacute;diatement le noyau dont le nom
	      est indiqu&eacute;, avec les options donn&eacute;es,
	      s'il y en a.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>boot-conf</term>

	  <listitem>
	    <para>Passe par la m&ecirc;me configuration automatique
	      des modules bas&eacute;e sur des variables comme ce
	      qui se produit au d&eacute;marrage.  Cela n'a de sens
	      que si vous utilisez <command>unload</command> en premier,
	      et modifiez certaines variables, g&eacute;n&eacute;ralement
	      <envar>kernel</envar>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>help
	    <optional><replaceable>sujet</replaceable></optional></term>

	  <listitem>
	    <para>Affiche les messages d'aide contenus dans
	      <filename>/boot/loader.help</filename>.  Si le sujet donn&eacute;
	      est <literal>index</literal>, alors c'est la liste de tous les
	      sujets existants qui est donn&eacute;e.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>include <replaceable>nom_du_fichier</replaceable>
	    &hellip;</term>

	  <listitem>
	    <para>Traite le fichier dont le nom est donn&eacute;.
	      Le fichier est lu, et interpr&eacute;t&eacute; ligne par ligne.
	      Une erreur stoppe imm&eacute;diatement le traitement.</para>
	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term>load <optional><option>-t</option>
	    <replaceable>type</replaceable></optional>
	    <replaceable>nom_du_fichier</replaceable></term>

	  <listitem>
	    <para>Charge le noyau, le module, ou le fichier du type
	      donn&eacute;, dont le nom est pass&eacute; en
	      param&egrave;tre.  Les arguments qui suivent le nom du fichier
	      sont pass&eacute;s au fichier.</para>
	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term>ls <optional><option>-l</option></optional>
	    <optional><replaceable>chemin_d_acc&egrave;s</replaceable></optional></term>

	  <listitem>
	    <para>Affiche la liste des fichiers du r&eacute;pertoire
	      donn&eacute;, ou du r&eacute;pertoire racine, si le chemin
	      d'acc&egrave;s n'est pas pr&eacute;cis&eacute;.
	      Si l'option <option>-l</option> est utilis&eacute;e, les
	      tailles des fichiers seront &eacute;galement
	      list&eacute;es.</para>
	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term>lsdev <optional><option>-v</option></optional></term>

	  <listitem>
	    <para>Liste tous les p&eacute;riph&eacute;riques depuis lesquels
	      il sera possible de charger des modules.  Si l'option
	      <option>-v</option> est utilis&eacute;e, plus de d&eacute;tails
	      seront donn&eacute;s.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>lsmod <optional><option>-v</option></optional></term>

	  <listitem>
	    <para>Affiche la liste des modules charg&eacute;s.
	      Si l'option <option>-v</option> est utilis&eacute;e, plus de
	      d&eacute;tails seront donn&eacute;s.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>more <replaceable>nom_du_fichier</replaceable></term>

	  <listitem>
	    <para>Affiche les fichiers indiqu&eacute;s, avec une pause toutes
	      <varname>LINES</varname> lignes.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>reboot</term>

	  <listitem>
	    <para>Red&eacute;marre imm&eacute;diatement le
	      syst&egrave;me.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>set <replaceable>variable</replaceable></term>
	  <term>set
	    <replaceable>variable</replaceable>=<replaceable>value</replaceable></term>

	  <listitem>
	    <para>Positionne les variables d'environnement du
	      chargeur.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>unload</term>

	  <listitem>
	    <para>Retire de la m&eacute;moire tous les modules
	      charg&eacute;s.</para>
	  </listitem>
	</varlistentry>
      </variablelist>
    </sect3>

    <sect3 id="boot-loader-examples">
      <title>Exemples d'utilisation du chargeur</title>

      <para>Voici quelques exemples pratiques d'utilisation du
	chargeur:</para>

      <itemizedlist>
	<indexterm><primary>mode mono-utilisateur</primary></indexterm>
	<listitem>
	  <para>Pour simplement d&eacute;marrer votre noyau habituel,
	    mais en mode mono-utilisateur:</para>

	  <screen><userinput>boot -s</userinput></screen>
	</listitem>

	<listitem>
	  <para>Pour d&eacute;charger votre noyau et modules habituels,
	  puis charger votre ancien (ou un autre) noyau:</para>
    <indexterm>
      <primary><filename>kernel.old</filename></primary>
    </indexterm>

	  <screen><userinput>unload</userinput>
<userinput>load <replaceable>kernel.old</replaceable></userinput></screen>

	  <para>Vous pouvez utiliser <filename>kernel.GENERIC</filename>
	    pour faire r&eacute;f&eacute;rence au noyau
	    g&eacute;n&eacute;rique du disque d'installation, ou
	    <filename>kernel.old</filename> pour d&eacute;signer votre noyau
	    pr&eacute;c&eacute;dent (quand vous avez mis &agrave; jour ou
	    configur&eacute; votre propre noyau, par exemple).</para>

	  <note>
	    <para>Utilisez ce qui suit pour charger vos modules
	      habituels avec un autre noyau:</para>

	    <screen><userinput>unload</userinput>
<userinput>set kernel="<replaceable>kernel.old</replaceable>"</userinput>
<userinput>boot-conf</userinput></screen></note>
	</listitem>

	<listitem>
	  <para>Pour charger une proc&eacute;dure de configuration
	    du noyau (une proc&eacute;dure qui automatise ce que vous faites
	    normalement avec l'outil de configuration du noyau au
	    d&eacute;marrage):</para>

	  <screen><userinput>load -t userconfig_script <replaceable>/boot/kernel.conf</replaceable></userinput></screen>
	</listitem>
      </itemizedlist>
  </sect3>
    </sect2>
  </sect1>

  <sect1 id="boot-kernel">
    <title>Interaction avec le noyau au d&eacute;marrage</title>
    <indexterm>
      <primary>noyau</primary>
      <secondary>interaction au d&eacute;marrage</secondary>
    </indexterm>

    <para>Une fois que le noyau est charg&eacute;, soit par le
      <link linkend="boot-loader">chargeur</link> (habituellement) soit
      par <link linkend="boot-boot1">boot2</link> (en court-circuitant
      le chargeur), il examine les options de d&eacute;marrage s'il y en a, et
      adapte son comportement en cons&eacute;quence.</para>

    <sect2 id="boot-kernel-bootflags">
      <indexterm>
        <primary>noyau</primary>
        <secondary>options de d&eacute;marrage</secondary>
      </indexterm>
      <title>Options de d&eacute;marrage du noyau</title>

      <para>Voici les options de d&eacute;marrage les plus courantes:</para>

      <variablelist id="boot-kernel-bootflags-list">
	<varlistentry>
	  <term><option>-a</option></term>

	  <listitem>
	    <para>A l'initialisation du noyau, demande quel est le
	      p&eacute;riph&eacute;rique o&ugrave; se trouve le syst&egrave;me
	      de fichiers racine.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-C</option></term>

	  <listitem>
	    <para>D&eacute;marre depuis le CDROM.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-c</option></term>

	  <listitem>
	    <para>Ex&eacute;cute UserConfig, l'outil de configuration du
	      noyau au d&eacute;marrage.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-s</option></term>

	  <listitem>
	    <para>D&eacute;marre en mode mono-utilisateur.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><option>-v</option></term>

	  <listitem>
	    <para>Donne plus de d&eacute;tails lors du lancement
	      du noyau.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <note>
	<para>Il existe d'autres options de d&eacute;marrage, lisez
	  la page de manuel &man.boot.8; pour plus
	  d'informations.</para></note>
    </sect2>

<!--    <sect2 id="boot-kernel-userconfig">
      <title>UserConfig: The boot-time kernel configurator</title>

      <para> </para>
    </sect2> -->
  </sect1>

  <sect1 id="device-hints">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
      <!-- 18 OCT 2002 -->
    </sect1info>
    <indexterm>
      <primary>device.hints</primary>
    </indexterm>
    <title>&ldquo;Device Hints&rdquo;&mdash;Param&eacute;trage des
      p&eacute;riph&eacute;riques</title>

    <note>
      <para>C'est une caract&eacute;ristique de FreeBSD&nbsp;5.0 et
	des versions suivantes qui n'existe pas dans les versions
	pr&eacute;c&eacute;dentes.</para>
    </note>

    <para>Lors du d&eacute;marrage du syst&egrave;me, le chargeur
      (&man.loader.8;) lira le fichier &man.device.hints.5;.  Ce
      fichier stocke les informations de d&eacute;marrage du noyau connues
      sous le nom de variables, et parfois appel&eacute;es &ldquo;device
      hints&rdquo;.  Ces &ldquo;device hints&rdquo; sont utilis&eacute;s
      par les pilotes de p&eacute;riph&eacute;rique pour la configuration
      des p&eacute;riph&eacute;riques.</para>

    <para>Les &ldquo;device hints&rdquo; peuvent &ecirc;tre
      sp&eacute;cifi&eacute;s &agrave; l'invite du <link
      linkend="boot-loader">chargeur</link>.
      Des variables peuvent &ecirc;tre ajout&eacute;es en
      utilisant la commande <command>set</command>, retir&eacute;es
      avec la commande <command>unset</command>, et affich&eacute;es
      avec la commande <command>show</command>.  Les variables
      positionn&eacute;es dans le fichier
      <filename>/boot/device.hints</filename> peuvent &ecirc;tre
      &eacute;cras&eacute;es &agrave; cet endroit.  Les &ldquo;device hints&rdquo;
      entr&eacute;s au niveau du chargeur ne sont pas permanents et seront
      oubli&eacute;s au prochain red&eacute;marrage.</para>

    <para>Une fois le syst&egrave;me d&eacute;marr&eacute;, la commande
      &man.kenv.1; peut &ecirc;tre utilis&eacute;e pour afficher toutes
      les variables.</para>

    <para>La syntaxe du fichier <filename>/boot/device.hints</filename>
      est d'une variable par ligne, en utilisant le caract&egrave;re
      &ldquo;#&rdquo; comme signe de mise en commentaire.  Les
      lignes sont pr&eacute;sent&eacute;es comme suit:</para>

    <screen><userinput>hint.pilote.unit&eacute;.motcl&eacute;="<replaceable>valeur</replaceable>"</userinput></screen>

    <para>La syntaxe &agrave; utiliser avec le chargeur est:</para>

    <screen><userinput>set hint.pilote.unit&eacute;.motcl&eacute;=<replaceable>valeur</replaceable></userinput></screen>

    <para>o&ugrave; <literal>pilote</literal> est le pilote de p&eacute;riph&eacute;rique,
      <literal>unit&eacute;</literal> est le num&eacute;ro de l'unit&eacute; et
      <literal>motcl&eacute;</literal> est le mot-cl&eacute; correspondant &agrave; la variable.
      Le mot-cl&eacute; pourra &ecirc;tre une des options suivantes:</para>

    <itemizedlist>
      <listitem>
	<para><literal>at</literal>: sp&eacute;cifie le bus auquel le
	  p&eacute;riph&eacute;rique est attach&eacute;.</para>
      </listitem>

      <listitem>
	<para><literal>port</literal>: sp&eacute;cifie l'adresse de d&eacute;part de
	  l'<acronym>E/S</acronym> &agrave; utiliser.</para>
      </listitem>

      <listitem>
	<para><literal>irq</literal>: sp&eacute;cifie le num&eacute;ro de la
	  requ&ecirc;te d'interruption &agrave; utiliser.</para>
      </listitem>

      <listitem>
	<para><literal>drq</literal>: sp&eacute;cifie le num&eacute;ro du canal DMA.</para>
      </listitem>

      <listitem>
	<para><literal>maddr</literal>: sp&eacute;cifie l'adresse m&eacute;moire physique
	  occup&eacute;e par le p&eacute;riph&eacute;rique.</para>
      </listitem>

      <listitem>
	<para><literal>flags</literal>: fixe les bits des indicateurs pour le
	  p&eacute;riph&eacute;rique.</para>
      </listitem>

      <listitem>
	<para><literal>disabled</literal>: si positionn&eacute;e &agrave; <literal>1</literal>
	  le p&eacute;riph&eacute;rique est d&eacute;sactiv&eacute;.</para>
      </listitem>
    </itemizedlist>

    <para>Les pilotes de p&eacute;riph&eacute;rique pourront accepter (ou
      n&eacute;cessiter) plus de variables non list&eacute;es ici, il est
      recommand&eacute; de lire leur page de manuel.  Pour plus
      d'information, consultez les pages de manuel
      &man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5;, et
      &man.loader.8;.</para>
  </sect1>

  <sect1 id="boot-init">
    <indexterm>
      <primary><command>init</command></primary>
    </indexterm>
    <title>Init: Initialisation de la gestion des processus</title>

    <para>Une fois que le noyau a d&eacute;marr&eacute;, il passe le
      contr&ocirc;le au processus utilisateur &man.init.8;,
      qui se trouve dans <filename>/sbin/init</filename>, ou au
      programme d&eacute;fini dans la variable d'environnement
      <envar>init_path</envar> du chargeur.</para>

    <sect2 id="boot-autoreboot">
      <title>S&eacute;quence de red&eacute;marrage automatique</title>

      <para>La s&eacute;quence de red&eacute;marrage automatique
	v&eacute;rifie que les syst&egrave;mes de fichiers
	sont coh&eacute;rents.  S'ils ne le sont pas, et que
	&man.fsck.8; ne peut pas corriger les
	incoh&eacute;rences, &man.init.8; place le
	syst&egrave;me dans le <link linkend="boot-singleuser">mode
	mono-utilisateur</link> pour que l'administrateur syst&egrave;me
	r&egrave;gle directement le probl&egrave;me.</para>
    </sect2>

    <sect2 id="boot-singleuser">
      <title>Mode mono-utilisateur</title>
      <indexterm><primary>mode mono-utilisateur</primary></indexterm>
      <indexterm><primary>console</primary></indexterm>

      <para>Ce mode peut &ecirc;tre atteint depuis la <link
	linkend="boot-autoreboot">s&eacute;quence de red&eacute;marrage
	automatique</link>, ou quand l'utilisateur d&eacute;marre avec l'option
	<option>-s</option> ou en positionnant la variable
	<envar>boot_single</envar> du chargeur.</para>

      <para>On peut &eacute;galement y parvenir en appelant la commande
	&man.shutdown.8; sans les options de red&eacute;marrage
	(<option>-r</option>) ou d'arr&ecirc;t (<option>-h</option>),
	&agrave; partir du <link
	linkend="boot-multiuser">mode multi-utilisateur</link>.</para>

      <para>Si la <literal>console</literal> syst&egrave;me est
	positionn&eacute;e dans le mode <literal>insecure</literal> dans le
	fichier <filename>/etc/ttys</filename>, alors le syst&egrave;me
	demande le mot de passe de <username>root</username> avant de
	passer en mode mono-utilisateur.</para>

      <example id="boot-insecure-console">
	<title>Une console non s&eacute;curis&eacute;e dans
	  <filename>/etc/ttys</filename></title>

	<programlisting># name  getty                           type    status          comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none                            unknown off insecure</programlisting>
      </example>

      <note>
	<para>Une console <literal>insecure</literal> (non
	  s&eacute;curis&eacute;e) signifie que vous consid&eacute;rez que la
	  console n'est pas s&eacute;curis&eacute;e, et vous d&eacute;sirez que
	  seul quelqu'un connaissant
	  le mot passe de <username>root</username> puisse utiliser le
	  mode mono-utilisateur, et cela ne signifie pas que vous utilisez une
	  console sans s&eacute;curit&eacute;. Donc, si vous voulez de la
	  s&eacute;curit&eacute;, choisissez <literal>insecure</literal>,
	  et non <literal>secure</literal>.</para>
      </note>
    </sect2>

    <sect2 id="boot-multiuser">
      <title>Mode multi-utilisateur</title>
      <indexterm><primary>mode multi-utilisateur</primary></indexterm>

      <para>Si &man.init.8; trouve vos syst&egrave;mes de fichiers
	en &eacute;tat de marche, ou d&egrave;s que l'utilisateur quitte
	le <link linkend="boot-singleuser">mode mono-utilisateur</link>,
	le syst&egrave;me entre dans le mode multi-utilisateur, dans lequel il
	commence la configuration de ses ressources.</para>

      <sect3 id="boot-rc">
      <indexterm><primary>fichiers</primary></indexterm>
	<title>Configuration des ressources (rc)</title>

	<para>Le syst&egrave;me de configuration des ressources lit les
	  valeurs par d&eacute;faut dans
	  <filename>/etc/defaults/rc.conf</filename>, et les valeurs
	  propres &agrave; la machine dans <filename>/etc/rc.conf</filename>,
	  puis ensuite monte les syst&egrave;mes de fichiers
	  mentionn&eacute;s dans <filename>/etc/fstab</filename>,
	  d&eacute;marre les services r&eacute;seau, divers autres
	  &ldquo;d&eacute;mons&rdquo; syst&egrave;me, et enfin ex&eacute;cute
	  les proc&eacute;dures de d&eacute;marrage des logiciels
	  install&eacute;s localement.</para>

	<para>La page de manuel &man.rc.8; est une bonne
	  r&eacute;f&eacute;rence au sujet du syst&egrave;me de
	  configuration des ressources, de m&ecirc;me que la lecture des
	  proc&eacute;dures de d&eacute;marrage elles-m&ecirc;mes.</para>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="boot-shutdown">
    <title>S&eacute;quence d'arr&ecirc;t du syst&egrave;me</title>
    <indexterm>
      <primary><command>shutdown</command></primary>
    </indexterm>

    <para>Lors de l'arr&ecirc;t manuel du syst&egrave;me, via
      &man.shutdown.8;, &man.init.8; tentera
      d'ex&eacute;cuter la proc&eacute;dure
      <filename>/etc/rc.shutdown</filename>, et ensuite enverra &agrave;
      tous les processus le signal <literal>TERM</literal>, suivi
      du signal <literal>KILL</literal> &agrave; tous ceux qui ne se
      terminent pas &agrave; temps.</para>

    <para>Pour &eacute;teindre une machine FreeBSD et cela sur des
      architectures ou des syst&egrave;mes supportant la gestion par
      logiciel de l'&eacute;nergie, utilisez simplement la commande
      <command>shutdown -p now</command> pour arr&ecirc;ter et couper
      l'alimentation de la machine.  Pour juste red&eacute;marrer un
      syst&egrave;me FreeBSD, utilisez <command>shutdown -r now</command>.
      Vous devez &ecirc;tre super-utilisateur (<username>root</username>)
      ou un membre du groupe <groupname>operator</groupname> pour
      pouvoir ex&eacute;cuter &man.shutdown.8;.  Les commandes &man.halt.8;
      et &man.reboot.8; peuvent &eacute;galement &ecirc;tre
      utilis&eacute;es, veuillez consulter leur page de manuel ainsi
      que celle de &man.shutdown.8; pour plus d'informations.</para>

    <note>
      <para>La gestion de l'&eacute;nergie n&eacute;cessite d'avoir le support
	&man.acpi.4; dans son noyau ou charg&eacute; en tant que module
	pour FreeBSD&nbsp;5.X et le support &man.apm.4; pour
	FreeBSD&nbsp;4.X.</para>
    </note>

  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
