Guide de mise à jour du noyau Gentoo Linux Daniel Drake Olivier Fisette Ce document vous explique comment mettre à jour votre noyau pour passer d'une version à une autre. 0.1.0 1er novembre 2004 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 à jour leur noyau, il peut également être utile à ceux qui veulent passer d'un type de noyau à un autre.

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

Pourquoi mettre à jour le noyau ?

De façon générale, mettre à jour un noyau 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 à jour votre noyau dès qu'un problème de sécurité est corrigé dans une version plus récente.

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 à jour votre noyau lorsque ses sources apparaîtront dans la liste des mises à jour « world ». Par exemple, :

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

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

# emerge -u gentoo-dev-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.

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.

Dans le présent cas, il faut mettre à jour le lien symbolique pour qu'il pointe vers les sources du noyau vers lequel se fera la mise à jour.

# cd /usr/src
# ln -sf linux-2.6.9-gentoo-r2 linux
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 :

# 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 :

# genkernel --menuconfig --bootloader=grub all

Pour plus d'information, consultez le Guide Genkernel pour Gentoo Linux, ou référez-vous au Manuel Gentoo.

Option 2 : Configuration manuelle

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

# cd /usr/src/linux
# make menuconfig

Choisissez les options requises pour votre matériel et votre environnement. Si nécessaire, le 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 Manuel Gentoo, et n'oubliez pas de monter votre partition /boot avant de faire la copie ! (Dans les instructions du Manuel, /boot a déjà été monté lors d'une étape précédente.)

# make && make modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.9-gentoo-r2
# cp System.map /boot/System.map-2.6.9-gentoo-r2

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.

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 logiciels disponibles dans Portage (par exemple, les pilotes graphiques de ATI ou Nvidia), vous devez réinstaller ces paquets à chaque fois que vous mettez à jour le noyau. 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. La réinstallation de ces paquets garantit que les modules ont été compilés contre l'arbre des sources présent dans /usr/src/linux ; c'est-à-dire qu'ils seront installés précisément pour le noyau que vous venez de compiler.

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.

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.

Supprimer les vieux noyaux

Il est fort possible que vous soyez tout à fait satisfait avec 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-dev-sources :

# emerge -P gentoo-dev-sources

Dans la plupart des cas, des fichiers temporaires créés pendant la compilation resteront dans le répertoire source dans /usr/src. Il est tout à fait sécuritaire de supprimer ces fichiers avec rm.

Supprimer les modules utilisés par les anciens noyaux ne cause pas de problème non plus. 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 et System.map 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.

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 éprouvez de tels problèmes avec les versions les plus récentes des noyaux supportés par Gentoo, veuillez nous les rapporter.