Gentoo Logo

Guide de mise à jour du noyau Gentoo Linux

Table des matières :

1.  Introduction

Les noyaux sont une des rares catégories de paquets logiciels disponibles dans Portage qui nécessitent une invervention manuelle lors des mises à jour. Portage télécharge et installe pour vous les sources du noyau de votre choix, mais vous devez ensuite procéder vous-même à la compilation du noyau afin que ce dernier puisse être utilisé par votre système.

Bien que ce guide soit destiné avant tout aux utilisateurs qui veulent mettre leur noyau à jour, il peut également être utile à ceux qui veulent passer d'un type de noyau à un autre.

gentoo-sources est utilisé à titre d'exemple dans le présent document. Toutefois, les instructions décrites ci-dessous s'appliquent à tous les paquets logiciels de noyaux disponibles dans l'arbre Portage.

2.  Pourquoi mettre à jour votre noyau ?

De façon générale, mettre un noyau à jour en passant d'une version mineure à une autre plus récente n'amène pas de changement majeur. Les mises à jour du noyau sont habituellement réalisées afin de profiter d'une nouvelle fonctionnalité ou d'un nouveau pilote de périphérique, afin de se protéger contre une faille de sécurité, ou simplement afin de maintenir un système sain et à jour.

Même si vous décidez de ne pas mettre votre noyau à jour chaque fois qu'une nouvelle version est disponible, nous vous recommandons de procéder à des mises à jour de temps à autre. Il est fortement recommandé de mettre votre noyau à jour dès qu'un problème de sécurité est corrigé dans une version plus récente.

3.  Obtenir les nouvelles sources avec Portage

La mise à jour des sources d'un noyau se fait de la même façon que la mise à jour de n'importe quel paquet logiciel : avec le programme emerge. Vous déciderez probablement de mettre votre noyau à jour lorsque ses sources apparaîtront dans la liste des mises à jour « world ». Par exemple, :

Exemple de code 3.1 : de nouvelles sources sont disponibles et affichées dans la liste des mises à jour

# emerge -Dup world
Calculating dependencies ...done!
[ebuild    NS ] sys-kernel/gentoo-sources-2.6.9-r2 [2.6.8-r5]

Note : l'indication NS dans le message ci-dessus signifie que le nouveau noyau sera installé dans un nouveau SLOT, c'est-à-dire que l'ancien noyau sera laissé tel quel jusqu'à ce que vous le supprimiez explicitement.

Vous pouvez alors aller de l'avant et installer la mise à jour :

Exemple de code 3.2 : mettre à jour les sources du noyau

# emerge -u gentoo-sources

Les sources du noyau seront installées dans un sous-répertoire de /usr/src. Dans l'exemple ci-dessus, les sources seraient installées dans /usr/src/linux-2.6.9-gentoo-r2.

4.  Mettre à jour le lien symbolique /usr/src/linux

Il est nécessaire d'avoir un lien symbolique nommé /usr/src/linux pointant vers les sources du noyau que vous utilisez.

Portage peut modifier ce lien automatiquement lorsque vous installez un nouveau noyau. Pour cela, ajoutez le mot-clé symlink à votre variable USE dans le fichier /etc/portage/make.conf.

Exemple de code 4.1 : exemple de USE dans /etc/portage/make.conf

(Ajoutez le mot-clé symlink.)
USE="symlink x86 3dnow 3dnowex X aac aalib adns alsa apache2"

Une autre méthode consiste à utiliser app-admin/eselect pour modifier le lien symbolique.

Exemple de code 4.2 : utilisation de eselect pour gérer le lien symbolique

(Installez eselect si vous ne l'avez pas déjà fait)
# emerge eselect
(Affichez la liste des noyaux disponibles)
# eselect kernel list
Available kernel symlink targets:
  [1]   linux-2.6.39-gentoo-r3
  [2]   linux-2.6.38-gentoo-r6 *
(Selectionnez le noyau)
# eselect kernel set 1
(Vérifiez que le lien symbolique a été corrigée par la position  du caractère *)
# eselect kernel list
  [1]   linux-2.6.39-gentoo-r3 *
  [2]   linux-2.6.38-gentoo-r6

Si vous tenez vraiment à le modifier vous-même, l'exemple suivant vous montre comment faire pointer le lien vers linux-2.6.39-gentoo-r3 :

Exemple de code 4.3 : mise à jour manuelle du lien /usr/src/linux

# cd /usr/src
# ln -sfn linux-2.6.39-gentoo-r3 linux

5.  Configurer, compiler et installer le nouveau noyau

Pour toutes ces étapes, vous pouvez vous référer aux instructions du Manuel Gentoo relatives à la configuration du noyau et à la configuration du chargeur de démarrage. Ces instructions sont résumées ci-dessous.

Option 1 : Configuration automatique du noyau avec Genkernel

Si vous utilisez Genkernel, vous n'avez qu'à répéter les étapes que vous avez effectuées la première fois que vous avez installé votre noyau.

Exécutez Genkernel de façon standard :

Exemple de code 5.1 : exécuter Genkernel

# genkernel all

Vous pouvez aussi utiliser des paramètres supplémentaires pour activer certaines fonctionnalités de Genkernel. Par exemple, si vous souhaitez préciser quelques options du noyau avec menuconfig et si vous voulez que Genkernel mette à jour la configuration de votre chargeur de démarrage GRUB automatiquement, exécutez Genkernel avec la commande suivante :

Exemple de code 5.2 : exécuter Genkernel avec quelques options populaires

# genkernel --menuconfig --bootloader=grub all

Pour plus d'information, consultez le Guide Genkernel pour Gentoo Linux ou référez-vous au Manuel Gentoo. De nombreuses options peuvent être sélectionnées dans le fichier de configuration de genkernel : /etc/genkernel.conf. Jetez aussi un coup l'œil Gentoo Linux Initial RAM file system guide.

Option 2 : Configuration manuelle

Tout d'abord, ouvrez l'utilitaire menuconfig à partir de l'arbre des sources du noyau :

Exemple de code 5.3 : exécuter menuconfig

# cd /usr/src/linux
# make menuconfig

Choisissez les options requises pour votre matériel et votre environnement. Si nécessaire, le chapitre configurer le noyau du Manuel Gentoo vous guidera dans cette procédure.

Ensuite, compilez votre noyau et copiez-le dans votre partition de démarrage. Encore une fois, référez-vous aux instructions du chapitre configurer le chargeur de démarrage du Manuel Gentoo et n'oubliez pas que si votre partition /boot est sur une partition à part, vous devez la monter partition avant d'y copier le noyau. Si vous oubliez de le faire, vous ne démarrerez pas sur votre nouveau noyau.

Exemple de code 5.4 : Compiler et installer le nouveau noyau

# make && make modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.39-gentoo-r3

Finalement, vous devriez mettre à jour la configuration de votre chargeur de démarrage par l'ajout d'une entrée pour votre nouveau noyau. (Ne supprimez pas tout de suite l'entrée référant à votre ancien noyau !) Démontez la partition /boot. Vous pouvez, cette fois encore, vous référez aux instructions du Manuel Gentoo.

6.  Réinstaller les modules externes

Si vous utilisez un ou plusieurs modules du noyau qui ne sont pas inclus dans l'arbre des sources du noyau, mais qui sont plutôt fournis par d'autres paquets disponibles dans Portage (par exemple, les pilotes ALSA ou les pilotes graphiques de ATI ou Nvidia), vous devez réinstaller ces paquets à chaque fois que vous mettez le noyau à jour. Rien de plus simple, puisque vous n'avez qu'à exécuter à nouveau la commande emerge que vous aviez utilisée pour installer le paquet en question. Le chapitre Configurer le noyau du Manuel Gentoo explique cette procédure.

Nous vous fournissons un jeu de paquets incorporés dans Portage (@module-rebuild) qui permet de recompiler/reconstruire tous les modules que vous avez installés via des ebuilds séparés (comme app-laptop/tp_smapi) pour le noyau vers lequel pointe /usr/src/linux. Après avoir mis à jour ou recompilé le noyau et avant de redémarrer, lancez emerge @module-rebuild pour recompiler les drivers pour votre nouvelle version du noyau.

7.  Mettre à jour la configuration de vos modules

Si vous avez mis une configuration particulière de certains modules dans /etc/conf.d/modules, vous devez mettre les entrées en question à jour.

Exemple de code 7.1 : exemple de fichier /etc/conf.d/modules

# Ce qui suit chargera seulement le module ieee1394 dans le noyau 2.6.38-gentoo-r6 
modules_2_6_38_gentoo_r6="ieee1394"

# Pour prendre en charge le chargement automatique de toutes les versions possibles, laissez tomber toute référence à une version :
modules="ohci1394"

8.  Redémarrer avec le nouveau noyau

Maintenant, fermez toutes vos applications et redémarrez votre système. Si vous avez suivi les instructions ci-dessus correctement, vous devriez obtenir une entrée pour votre nouveau noyau dans votre chargeur de démarrage. Choisissez ce nouveau noyau pour amorcer le système.

Votre système devrait alors démarrer sans problème ; vous pouvez ouvrir une session et continuer votre travail comme à l'habitude. Si tout fonctionne, la procédure de mise à jour est alors terminée.

Si vous avez commis une erreur et que votre système n'arrive pas à démarrer avec votre nouveau noyau, redémarrez le système et amorcez votre ancien noyau. Vous pouvez alors reprendre la procédure à l'étape de configuration, compilation et installation. Faites les changements appropriés pour corriger vos erreurs. Dans certains cas (par exemple le simple oubli d'un pilote réseau), il n'est même pas nécessaire de redémarrer pour procéder aux changements.

9.  Utiliser plusieurs noyaux concurremment

Vous avez peut-être remarqué que lors de l'installation des sources de votre nouveau noyau, les sources du noyau existant n'ont pas été supprimées. Cela est volontaire et vous permet d'alterner facilement entre plusieurs noyaux.

Alterner entre plusieurs noyaux ne nécessite rien d'autre que de conserver les sources dans /usr/src/ et de laisser les fichiers binaires bzImage dans votre partition /boot (ces fichiers doivent être référencés par des entrées appropriées dans la configuration de votre chargeur de démarrage). Chaque fois que vous démarrerez, vous pourrez choisir le noyau à amorcer.

10.  Supprimer les vieux noyaux

Il est fort possible que vous soyez tout à fait satisfait de votre nouveau noyau et que vous n'ayez pas besoin de conserver les anciennes versions sur votre système. Pour supprimer facilement toutes les sources sauf la plus récente pour un noyau donné, utilisez l'option prune de la commande emerge. Poursuivons l'exemple précédent utilisant gentoo-sources :

Exemple de code 10.1 : supprimer les anciennes versions

# emerge -P gentoo-sources

Dans la plupart des cas, des fichiers temporaires créés pendant la compilation resteront dans le répertoire source dans /usr/src. Vous pouvez sereinement supprimer ces fichiers avec rm.

Vous pouvez également supprimer les modules utilisés par les anciens noyaux sans problème. Pour ce faire, il vous suffit de supprimer les sous-répertoires appropriés dans /lib/modules/ (ceux qui correspondent aux versions des noyaux dont vous avez supprimé les sources). Faites attention à ne pas supprimer des modules appartenant à des noyaux que vous utilisez encore !

Finalement, vous pouvez monter votre partition /boot et supprimer les fichiers bzImage des noyaux que vous avez supprimés. Vous devriez aussi configurer votre chargeur de démarrage pour retirer les entrées qui font référence aux noyaux supprimés.

11.  Avancé : utiliser votre ancien .config pour configurer le nouveau noyau

Il est parfois possible de gagner du temps en réutilisant le fichier de configuration de votre ancien noyau pour configurer le nouveau. Remarquez que ça ne fonctionne en général pas : il y aura probablement trop de changements entre deux versions du noyau pour que ça puisse être une méthode fiable.

La seule situation dans laquelle cette méthode est appropriée est lorsque vous mettez à jour une révision Gentoo du noyau par une autre. Par exemple les modifications faites entre gentoo-sources-2.6.9-r1 et gentoo-sources-2.6.9-r2 seront minimes, donc il est généralement possible d'utiliser cette méthode. Cela dit, elle n'est pas appropriée pour l'exemple donnée tout au long de ce document : mettre à jour votre noyau du 2.6.8 au 2.6.9. Il y a eu trop de changements entre deux sorties officielles et la méthode décrite ci-dessous n'indiquera pas assez d'éléments à l'utilisateur pour bien fonctionner. Il en résultera que l'utilisateur ira de problèmes en problèmes parce qu'il aura désactivé des options qu'il n'aurait pas dû.

Pour réutiliser votre ancienne configuration, vous n'avez qu'à copier le fichier de configuration puis exécuter make oldconfig. Dans l'exemple suivant nous récupérons la configuration d'un noyau gentoo-sources-2.6.9-r1 et l'importons dans gentoo-sources-2.6.9-r2.

Exemple de code 11.1 : réutilisation de votre ancienne configuration

# cd /usr/src/linux-2.6.9-gentoo-r2
# cp ../linux-2.6.9-gentoo-r1/.config .
# make oldconfig

Exemple de code 11.2 : réutilisation de votre ancienne configuration avec genkernel

# cd /etc/kernels
# cp kernel-config-x86-2.6.9-gentoo-r1 kernel-config-x86-2.6.9-gentoo-r2
# genkernel all

Là, vous devrez probablement répondre aux questions posées pour le choix des options de configuration qui ont changé entre les deux versions. Une fois que vous l'aurez fait, vous pouvez compiler et installer votre noyau comme d'habitude sans avoir à passer par l'étape de configuration menuconfig.

Une façon bien plus sûre de mettre à jour le noyau est d'importer votre configuration comme montré précédemment, puis simplement de lancer make menuconfig. De cette façon, vous éviterez les problèmes rencontrés par make oldconfig décrits ci-dessus, puisque make menuconfig chargera votre ancienne configuration le mieux possible dans le menu. Tout ce qu'il vous restera à faire sera de naviguer dans les options à la recherche des nouvelles sections. En utilisant menuconfig, vous bénéficiez d'une meilleure présentation des évolutions, pouvez facilement voir quelles sont les nouveaux choix et lire les écrans d'aide plus facilement. Une fois que vous avez terminé, compilez puis installez votre noyau normalement.

12.  Problèmes rencontrés suite à la mise à jour du noyau

La rapidité du développement du noyau Linux rend inévitable l'apparition de problèmes dus aux changements apportés au noyau de version en version. Si vous rencontrez de tels problèmes avec les versions les plus récentes des noyaux supportés par Gentoo, veuillez nous les rapporter.



Imprimer

Dernière mise à jour le 2 juin 2013

La version originale de cette traduction n'est plus maintenue

Résumé : Ce document vous explique comment mettre à jour votre noyau pour passer d'une version à une autre.

Daniel Drake
Auteur

Olivier Fisette
Traducteur

Clément Varaldi
Traducteur

José Fournier
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.