Subversion Repositories svn LFS-FR

Rev

Rev 1347 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
 <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-bootable-kernel" role="wrap">
  <?dbhtml filename="kernel.html"?>

  <sect1info condition="script">
    <productname>linux</productname>
    <productnumber>&linux-version;</productnumber>
    <address>&linux-url;</address>
  </sect1info>

  <title>Linux-&linux-version;</title>

  <indexterm zone="ch-bootable-kernel">
    <primary sortas="a-Linux">Linux</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>Le paquet Linux contient le noyau Linux.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&linux-ch8-sbu;</seg>
        <seg>&linux-ch8-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Installation du noyau</title>

    <para>Construire le noyau implique un certain nombre d'étapes&mdash;la
    configuration, la compilation et l'installation. Lisez le fichier
    <filename>README</filename> contenu dans les sources du noyau pour d'autres
    méthodes que celle utilisée par le livre pour configurer le noyau.</para>

 
    <para>Appliquez le correctif Grsecurity&nbsp;:</para>

<screen><userinput remap="pre">patch -Np1 -i ../&grsecurity-patch;</userinput></screen>

    <para>Préparez la compilation en lançant la commande suivante&nbsp;:</para>

<screen><userinput remap="pre">make mrproper</userinput></screen>

    <para>Ceci nous assure que le répertoire du noyau est complètement nettoyé.
    L'équipe du noyau recommande que cette commande soit lancée avant chaque
    compilation du noyau. Vous ne devez pas penser que le répertoire des sources
    est propre juste après avoir été déballé.</para>
    <!-- Support for compiling a keymap into the kernel is deliberately removed -->

    <para>Configurez le noyau via une interface par menu. Sur des informations générales sur la configuration du noyau, voir
    <ulink url="http://lfs.traduc.org/view/astuces/kernel-configuration-fr.txt"/>. BLFS a quelques
    informations concernant les besoins particuliers du noyau en terme de
    configuration pour les paquetages en dehors de LFS sur
    <ulink url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>&nbsp;:</para>

<screen role="nodump"><userinput>make LANG=<replaceable>&lt;valeur_LANG_du_hote&gt;</replaceable> LC_ALL= menuconfig</userinput></screen>

    <variablelist>
      <title>Voici la signification des paramètres de make&nbsp;:</title>

      <varlistentry>
        <term><parameter>LANG=&lt;valeur_LANG_du_hote&gt; LC_ALL=</parameter></term>
        <listitem>
          <para>Ceci établit le paramétrage local à celui utilisé sur l'hôte.
          Ceci est nécessaire pour que le dessin de la ligne de l'interface de
          menuconfig soit correct sur la console texte de Linux en UTF-8</para>

          <para>Assurez-vous de remplacer
          <replaceable>&lt;valeur_LANG_du_hote&gt;</replaceable> par la valeur
          de la variable <envar>$LANG</envar> de votre hôte. Si ce n'est pas
          paramétré, vous pourriez plutôt utiliser la valeur de
          <envar>$LC_ALL</envar> ou <envar>$LC_CTYPE</envar> de l'hôte.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Sinon, <command>make oldconfig</command> peut être plus approprié dans
    certaines situations. Voir le fichier <filename>README</filename> pour plus
    d'informations.</para>

    <para>Si désiré, passez la configuration du noyau en copiant le fichier de
    configuration, <filename>.config</filename>, à partir du système hôte
    (en supposant qu'il est disponible) dans le répertoire
    <filename class="directory">linux-&linux-version;</filename> tout juste
    déballé. Néanmoins, nous ne recommandons pas cette option. Il est souvent mieux
    d'explorer tous les menus de configuration et de créer la configuration du
    noyau à partir de rien.</para>

    <para>Compilez l'image du noyau et les modules&nbsp;:</para>

<screen><userinput remap="make">make CC="gcc -fno-PIE -no-fatal-warnings"</userinput></screen>


    <para>Si vous utilisez des modules du noyau, il peut être nécessaire de
    configurer les modules dans le fichier
    <filename class="directory">/etc/modprobe.d</filename>. Des
    informations au sujet de la configuration du noyau et des modules se trouvent sur
    <xref linkend="ch-scripts-udev"/> et dans la documentation du noyau, dans
    le répertoire <filename class="directory">linux-&linux-version;/Documentation</filename>.
    De plus, <filename>modprobe.conf(5)</filename> pourrait aussi
    avoir de l'intérêt.</para>

    <para>Installez les modules si la configuration du noyau les
                utilise&nbsp;:</para>

<screen><userinput remap="install">make modules_install</userinput></screen>

     <para>Déballez, construisez et installez le module Frandom&nbsp;:</para>

<screen><userinput remap="install">tar xf ../frandom-&frandom-version;.tar.gz
cd frandom-&frandom-version;
make CC="gcc -fno-PIE -no-fatal-warnings"
install -m 644 frandom.ko /lib/modules/&linux-version;-grsec/kernel/drivers/char/
depmod -a
cd ../</userinput></screen>

    <para>Une fois la compilation du noyau terminée, des étapes
    supplémentaires sont requises pour terminer l'installation. Certains
    fichiers ont besoin d'être copiés dans le répertoire
    <filename class="directory">/boot</filename>.</para>

    <para>Le chemin vers l'image du noyau pourrait varier suivant la
    plateforme d'utilisation. Vous pouvez changer le nom du fichier
    ci-dessous selon votre goût, mais le schéma du nom de fichier devrait ressembler à
    <emphasis>vmlinux</emphasis> pour être compatible avec le paramétrage automatique du
    processus de démarrage décrit dans la section suivante. La commande suivante suppose qu'on se
    trouve sur une architecture x86&nbsp;:</para>

<screen><userinput remap="install">cp -v arch/x86/boot/bzImage /boot/vmlinux-&linux-version;-hlfs-&version;</userinput></screen>

    <para><filename>System.map</filename> est un fichier de symboles
    pour le noyau. Il cartographie les points d'entrées de chaque
    fonction dans l'API du noyau, ainsi que les adresses des structures
    de données du noyau pour le noyau en cours d'exécution.
    Il sert de ressource lors d'une enquête sur des problèmes de noyau.
    Lancez la commande suivante pour installer le fichier carte&nbsp;:</para>

<screen><userinput remap="install">cp -v System.map /boot/System.map-&linux-version;</userinput></screen>

    <para>Le fichier de configuration du noyau <filename>.config</filename>
    produit à l'étape <command>make menuconfig</command>
    ci-dessus contient toutes les sélections de
    configuration pour le noyau tout juste compilé. Conserver ce fichier
    est une bonne idée pour pouvoir s'y référer plus tard&nbsp;:</para>

<screen><userinput remap="install">cp -v .config /boot/config-&linux-version;</userinput></screen>

    <para>Installez la documentation du noyau Linux&nbsp;:</para>

<screen><userinput remap="install">install -d /usr/share/doc/linux-&linux-version;
cp -r Documentation/* /usr/share/doc/linux-&linux-version;</userinput></screen>

    <para>Il est important de noter que les fichiers dans le répertoire
    des sources du noyau n'appartiennent pas à
    <emphasis>root</emphasis>. Chaque fois qu'un paquet est déballé en
    tant qu'utilisateur <emphasis>root</emphasis> (comme on a fait dans
    chroot), les fichiers ont les ID de l'utilisateur et du groupe où
    ils étaient sur l'ordinateur du paquet. En principe cela n'est pas
    un problème pour tout autre paquet lorsqu'il est installé car
    l'arborescence des sources est supprimée après l'installation. Par
    contre, l'arborescence de Linux est souvent longtemps conservée. Du
    coup, il y a des chances que tout ce que l'ID de l'utilisateur ayant
    déballé le paquet a utilisé ne soit affecté à quelqu'un sur la
    machine. Cette personne pourrait alors avoir un droit d'écriture sur
    les sources du noyau.</para>

    <para>Si vous allez conserver l'arborescence des sources du noyau,
    lancez <command>chown -R 0:0</command> sur le répertoire
    <filename class="directory">linux-&linux-version;</filename> pour
    vous assurer que tous les fichiers appartiennent à
    <emphasis>root</emphasis>.</para>

    <warning>
      <para>Certaines documentations du noyau recommandent de créer un lien
      symbolique à partir de
      <filename class="symlink">/usr/src/linux</filename> pointant vers
      le répertoire des sources du noyau. Ceci est spécifique aux noyaux
                        antérieurs à la série 2.6 et <emphasis>ne doit pas</emphasis> être réalisé
                        sur un système LFS car il peut poser des problèmes pour les
                        paquetages que vous souhaiter construire une fois que votre
                        système LFS de base est complet.</para>
    </warning>

    <warning>
      <para>Les en-têtes compris dans le répertoire
      <filename class="directory">include</filename>
      devraient <emphasis>toujours</emphasis> être ceux avec lesquels Glibc a
                été compilé et, du coup, ne devraient <emphasis>jamais</emphasis> être
                remplacés par les en-têtes du noyau ou par d'autres en-têtes nettoyées
          du noyau.</para>
    </warning>

  </sect2>

  <sect2 id="conf-modprobe" role="configuration">
    <title>Configuration de l'ordre de chargement des modules Linux</title>

    <indexterm zone="conf-modprobe">
      <primary sortas="e-/etc/modprobe.d/usb.conf">/etc/modprobe.d/usb.conf</primary>
    </indexterm>

    <para>Vous devez créer le fichier <filename>/etc/modprobe.d/usb.conf</filename> afin que, si les pilotes USB (ehci_hcd, ohci_hcd et uhci_hcd)
    ont été construits en module, ils seront chargés dans le bon ordre&nbsp;; ehci_hcd doit être chargé avant ohci_hcd et uhci_hcd afin
    d'éviter un avertissement qui sort au moment du démarrage.</para>

    <para>Créez un nouveau <filename>/etc/modprobe.d/usb.conf</filename> en lançant ce qui suit&nbsp;:</para>

<screen><userinput>install -v -m755 -d /etc/modprobe.d
cat &gt; /etc/modprobe.d/usb.conf &lt;&lt; "EOF"
<literal># Begin /etc/modprobe.d/usb.conf

install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true

# Fin de /etc/modprobe.d/usb.conf</literal>
EOF</userinput></screen>

  </sect2>

  <sect2 id="contents-kernel" role="content">
    <title>Contenu de Linux</title>

    <segmentedlist>
      <segtitle>Fichiers installés</segtitle>
      <segtitle>Répertoires installés</segtitle>

      <seglistitem>
        <seg>config-&linux-version;,
        vmlinux-&linux-version;-lfs-&version;-&linux-version; et
        System.map-&linux-version;</seg>
        <seg>/lib/modules, /usr/share/doc/linux-&linux-version;</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Descriptions courtes</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="config">
        <term><filename>config-&linux-version;</filename></term>
        <listitem>
          <para>Contient toutes les sélections de la configuration pour le noyau</para>
          <indexterm zone="ch-bootable-kernel config">
            <primary sortas="e-/boot/config">/boot/config-&linux-version;</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="lfskernel">
        <term><filename>vmlinux-&linux-version;-lfs-&version;</filename></term>
        <listitem>
          <para>Le moteur du système Linux. Au démarrage de l'ordinateur, le
                                        noyau est la première partie du système d'exploitation
                                        à être chargée. Il détecte et initialise tous composants matériels de
                                  l'ordinateur, puis rend disponible les composants par un ensemble de
                                        fichiers pour les logiciels qui en ont besoin, et
          transforme un CPU unique en une machine multitâches capable 'exécuter
          des bouts de programmes quasiment au même moment.</para>
          <indexterm zone="ch-bootable-kernel lfskernel">
            <primary sortas="b-lfskernel">lfskernel-&linux-version;</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="System.map">
        <term><filename>System.map-&linux-version;</filename></term>
        <listitem>
          <para>Une liste d'adresses et de symboles&nbsp;; il fait correspondre
          les points d'entrées et les adresses de toutes
                                        les fonctions et structures de données dans le noyau</para>
          <indexterm zone="ch-bootable-kernel System.map">
            <primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>