8.3.1. Installation du noyau
Construire le noyau implique un certain nombre d'étapes—la
configuration, la compilation et l'installation. Lisez le fichier
README
contenu dans les sources du
noyau pour d'autres méthodes que celle utilisée par le livre pour
configurer le noyau.
Préparez la compilation en lançant la commande suivante :
make mrproper
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é.
Configurez le noyau via une interface par menu. Sur des
informations générales sur la configuration du noyau, voir
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
http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index :
make LANG=<valeur_LANG_du_hote>
LC_ALL= menuconfig
Voici la signification des paramètres de make :
-
LANG=<valeur_LANG_du_hote>
LC_ALL=
-
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
Assurez-vous de remplacer <valeur_LANG_du_hote>
par la valeur de la variable $LANG
de votre hôte. Si ce n'est pas paramétré, vous pourriez
plutôt utiliser la valeur de $LC_ALL
ou $LC_CTYPE
de l'hôte.
Sinon, make oldconfig
peut être plus approprié dans certaines situations. Voir le fichier
README
pour plus d'informations.
Si désiré, passez la configuration du noyau en copiant le fichier
de configuration, .config
, à partir
du système hôte (en supposant qu'il est disponible) dans le
répertoire linux-3.1
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.
Compilez l'image du noyau et les modules :
make
Si vous utilisez des modules du noyau, il peut être nécessaire de
configurer les modules dans le fichier /etc/modprobe.d
. Des informations au sujet de la
configuration du noyau et des modules se trouvent sur
Section 7.4, « Gestion des périphériques et modules sur
un système LFS » et dans la documentation du noyau, dans
le répertoire linux-3.1/Documentation
. De plus, modprobe.conf(5)
pourrait aussi avoir de
l'intérêt.
Installez les modules si la configuration du noyau les
utilise :
make modules_install
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
/boot
.
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 à vmlinuz
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 :
cp -v arch/x86/boot/bzImage /boot/vmlinuz-3.1-lfs-7.0
System.map
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 :
cp -v System.map /boot/System.map-3.1
Le fichier de configuration du noyau .config
produit à l'étape make menuconfig 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 :
cp -v .config /boot/config-3.1
Installez la documentation du noyau Linux :
install -d /usr/share/doc/linux-3.1
cp -r Documentation/* /usr/share/doc/linux-3.1
Il est important de noter que les fichiers dans le répertoire des
sources du noyau n'appartiennent pas à root. Chaque fois qu'un paquet est
déballé en tant qu'utilisateur root (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.
Si vous allez conserver l'arborescence des sources du noyau, lancez
chown -R 0:0 sur le
répertoire linux-3.1
pour vous
assurer que tous les fichiers appartiennent à root.
Avertissement
Certaines documentations du noyau recommandent de créer un lien
symbolique à partir de /usr/src/linux
pointant vers le répertoire des
sources du noyau. Ceci est spécifique aux noyaux antérieurs à la
série 2.6 et ne doit pas
ê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.
Avertissement
Les en-têtes compris dans le répertoire include
devraient toujours être ceux avec lesquels Glibc
a été compilé et, du coup, ne devraient jamais être remplacés par les en-têtes
du noyau ou par d'autres en-têtes nettoyées du noyau.
8.3.2. Configuration
de l'ordre de chargement des modules Linux
Vous devez créer le fichier /etc/modprobe.d/usb.conf
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 ; ehci_hcd doit être
chargé avant ohci_hcd et uhci_hcd afin d'éviter un avertissement
qui sort au moment du démarrage.
Créez un nouveau /etc/modprobe.d/usb.conf
en lançant ce qui
suit :
install -v -m755 -d /etc/modprobe.d
cat > /etc/modprobe.d/usb.conf << "EOF"
# 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
EOF