— page corrigée — TheShift 2009/02/27 19:33
Guides et Tutoriels Gentoo-Québec
PDF original
Ce document a pour but de décrire les différentes techniques de mise à jour du noyau. Les techniques diffèrent quelque peu selon le type de mise à jour à appliquer au noyau. En eﬀet, il y a deux types de mise à jour à considérer.
<note>Les numéros de version sont utilisés pour illustrer le type de mise à jour. Ils peuvent ne pas exister dans les faits réels.</note>
Vous devez faire une mise à jour du noyau à la suite d’une synchronisation de votre arbre Portage lorsque la commande de mise à jour vous indique qu’un nouveau source va s’installer.
# emerge -auDNv world
Vous verrez apparaître dans la liste des paquets à mettre à jour une ligne vous informant qu’un nouveau source du noyau en fait partie.
sys-kernel/gentoo-sources-2.6.27-r8 [2.6.27-r3] USE=”-build -symlink” 49,509 kB
Répondez oui et laissez emerge procéder à la mise à jour du système. Quand toutes les mises à jour auront été appliquées, procédez à la mise à jour du noyau suivant la technique appropriée comme décrit dans l’introduction. <note important>Ne pas exécuter ce qui suit si vous n’avez pas de partition /boot</note> Veuillez monter votre partition /boot si nécessaire.
# mount /dev/sda1 /boot
<note>La partition /boot n’est pas automatiquement montée au démarrage du système quand la partition est déclarée avec le paramètre noauto dans le ﬁchier /etc/fstab.</note> Exemple :
/dev/sda1 /boot ext2 noauto,noatime 1 2
Pour mettre à jour le noyau vers une nouvelle version ou une révision, appliquez la procédure décrite dans la section Mise à jour changement de version ou révision. Pour une mise à jour lors d’un changement de branche, passez à la section Mise à jour changement de branche
Cette section décrit les étapes à effectuer pour mettre à jour le noyau lors d’un changement de version ou d’une révision.
La copie du ﬁchier de conﬁguration vous permet de copier votre conﬁguration du noyau actuelle dans le ﬁchier de conﬁguration du nouveau noyau. Cela vous assure que votre conﬁguration actuelle du noyau est reconduite telle quelle dans le ﬁchier de conﬁguration du nouveau noyau vous évitant ainsi à refaire toute votre conﬁguration tel que vous l’avez faite lors de l’installation initiale de votre Gentoo Linux. Vous minimisez ainsi les oublis involontaires ou de possibles erreurs aboutissant sur un système boiteux.
Placez-vous tout d’abord dans le répertoire des sources :
# cd /usr/src/
Obtenez la liste des dossiers de ce répertoire incluant le lien symbolique vers le dossier de la version du noyau actuelle :
# ls -l
Le résultat aﬃché ressemble à ceci :
3 lrwxrwxrwx 1 root root 22 nov 18 20 :02 linux − > linux-2.6.27-gentoo-r3 1 drwxr-xr-x 23 root root 4096 nov 18 21 :52 linux-2.6.27-gentoo-r3 2 drwxr-xr-x 22 root root 4096 jan 26 13 :31 linux-2.6.27-gentoo-r8 drwxr-xr-x 7 root root 4096 déc 15 20 :06 rpm
Vous remarquerez qu’il y a deux dossiers pour les sources du noyau (1 et 2) et un lien symbolique (3) vers le dossier des sources du noyau actuel. Utilisez le lien symbolique pour copier le ﬁchier de conﬁguration. Le lien symbolique se nomme linux et il correspond au dossier linux-2.6.27-gentoo-r3. Le ﬁchier de conﬁguration est un ﬁchier caché. Ceci explique la présence du point devant son nom.
# cp /usr/src/linux/.conﬁg /usr/src/linux-2.6.27-gentoo-r8
Le lien symbolique correspond au dossier des sources du noyau actuel. Pour être en mesure de ﬁnaliser la conﬁguration du nouveau noyau, le compiler et le rendre disponible au démarrage, il faut actualiser le lien symbolique. Puisque vous êtes déjà dans le répertoire /usr/src, il suffit simplement de lancer la commande de création d’un lien symbolique.
# ln -sfn linux-2.6.27-gentoo-r8 /usr/src/linux
Désormais lorsque vous vous positionnez dans le dossier /usr/src/linux, ce sont les ﬁchiers du nouveau noyau que vous voyez et non plus ceux du noyau actuel. Positionnez-vous dans ce dossier avant de passer à l’étape suivante.
# cd /usr/src/linux
La commande make oldconﬁg va modiﬁer la conﬁguration du noyau que vous avez copié précédemment en appliquant les changements apportés par la nouvelle version. Vous serez peut-être invité à répondre aux questions nécessaires pour appliquer ces changements. Lancez make oldconﬁg :
# make oldconﬁg
Lorsque make oldconﬁg vous pose une question, vous répondez en appuyant sur la touche MAJ pour accepter la valeur par défaut. Appuyez sur la touche ? pour en savoir plus sur la question.
L’opération précédente peut avoir entraîné des modiﬁcations au ﬁchier de conﬁguration, modiﬁcations que vous ne désirez pas. Ces modiﬁcations sont habituellement des éléments de conﬁguration ajoutés automatiquement ou d’autres qui ont été déactivés ou activés. Pour vous en assurer et remédier à la situation le cas échéant, comparez le nouveau ﬁchier de conﬁguration avec celui du noyau actuel.
Comparez la valeur de chaque élément et modiﬁez celle de la nouvelle conﬁguration si tel est le cas.
<note>L’exemple dans cette section suppose que vous passez de linux-2.6.27-gentoo-r3 à linux-2.6.27-gentoo-r8. Le terminal dans lequel vous avez exécuté make oldconﬁg vous aﬃche donc la nouvelle conﬁguration du noyau. Le terminal dans lequel vous vous êtes positionné sur le dossier /usr/src/linux-2.6.27-r3 aﬃche donc la conﬁguration du noyau actuel. Veuillez à appliquer les modiﬁcations dans le terminal où vous avez exécuté le make oldconﬁg.</note>
Passez maintenant aux étapes de compilation du nouveau noyau et de sa copie dans /boot : section Compilation et copie du nouveau noyau
Pour mettre à jour le noyau lors d’un changement de branche, vous adopterez une approche sécuritaire. Cette méthode est longue car vous reconﬁgurez votre noyau à la main comme vous le faites lors d’une installation. En fait, vous n’utilisez pas mas make oldconﬁg.
Voici les étapes que vous devez exécuter :
Vous devez monter votre partition /boot si vous avez une partition qui est dédiée à celle-ci.
# mount /dev/sdaX /boot
<note>Consultez votre ﬁchier /etc/fstab pour connaître la valeur correspondant à sdaX de l’exemple ci-haut.</note>
# cd /usr/src/linux # ln -sfn linux-2.6.27-gentoo-r8 /usr/src/linux
<note>Modiﬁez linux-2.6.27-gentoo-r8 en suppléant la valeur de l’exemple par celle du paquet gentoo-sources que vous avez installé.</note>
Vous devez reconﬁgurer votre noyau manuellement comme vous l’avez fait lors de l’installation de votre Gentoo Linux.
Les trois dernières étapes sont respectivement décrites dans les trois section suivantes.
Le nouveau noyau étant conﬁguré, vous devez maintenant le compiler et par la suite le copier dans /boot.
La compilation du noyau s’accomplit avec ces deux commandes :
# make && make modules install
Le nouveau noyau doit être placé dans /boot pour démarrer l’ordinateur sur celui-ci. Vous devez également ajouter une entrée au ﬁchier de conﬁguration du gestionnaire d’amorçage grub.
Il y a trois ﬁchiers à copier dans /boot :
<note>La partition /boot doit être montée si vous en utilisez une.</note>
# cp arch/i386/boot/bzImage /boot/kernel-2.6.27-gentoo-r8 # cp System.map /boot # cp .conﬁg /boot/conﬁg-2.6.27-gentoo-r8.conﬁg
<note important>Remplacez i386 par x86.64 si votre architecture est 64 bits.</note> Rendez maintenant le nouveau noyau disponible à l’amorçage de l’ordinateur en l’ajoutant au ﬁchier de conﬁguration du gestionnaire d’amorçage.
# nano -w /boot/grub/grub.conf
# (2) title Gentoo Linux 2.6.27-r8 - Xfce4 root (hd0,0) kernel /kernel-2.6.27-gentoo-r8 root=/dev/sda5
Ceci est un exemple. Adaptez selon la structure de vos partitions.
<note>S’il n’y a pas de partition dédiée à /boot, la ligne kernel devient kernel /boot/kernel.</note>
Lorsque vous changez de noyau, il faut vous assurer que les programmes qui dépendent du noyau ne vont pas se briser. Pour ce faire, on doit utiliser l’outil module-rebuild.
Est-ce que le paquet est installé ? Vériﬁez à l’aide de cette commande :
# which module-rebuild
<note>Il y a d’autres techniques de vériﬁcation comme l’usage des commandes equery, eix et autres.</note> Suivant l’exécution de la commande which, si vous obtenez cette réponse :
which: no module-rebuild in (/usr/local/sbin:/usr/local/bin: /usr/sbin:/usr/bin:/sbin:/bin:/opt/bin: /usr/i686-pc-linux-gnu/gcc-bin/4.1.2)
vous devez installer module-rebuild.
# emerge -av module-rebuild
Vous devez ensuite mettre à jour la base de données de module-rebuild en l’alimentant avec les noms des paquets qui installent des pilotes dans le noyau en cours d’usage.
# module-rebuild populate
Ceci fait, prévenez toute cassure en reconstruisant les paquets avec le noyau. Est-il nécessaire de le faire ? Cette forme de la commande module-rebuild vous renseignera.
# module-rebuild list
Si la réponse est :
There are no known modules. Quitting.
il n’est pas nécessaire de reconstruire quoi que ce soit. Autrement, procédez ainsi :
# module-rebuild rebuild
Voici une liste de logiciels réputés pour se briser. Ils peuvent ne pas être présents dans votre environnement. Tout dépend de votre conﬁguration.
Démontez votre partition /boot si vous avez une partition dédiée. Souvenez-vous que vous l’aviez montée pour les opérations de mise à jour.
# cd / # umount /boot
Redémarrez votre ordinateur et tester le nouveau noyau en choisissant l’option du menu de démarrage qui amorce votre Gentoo Linux sur le nouveau noyau.
Si tout se passe bien, que vos applications tournent sans problème et que tous vos composants matériels réagissent bien, vous pouvez par la suite tout supprimer de l’ancien noyau.
Pour supprimer les ﬁchiers de l’ancien noyau :
# emerge -aP gentoo-sources
Vous aurez une demande de conﬁrmation comme celle-ci :
Calculating dependencies... done! >>> These are the packages that would be unmerged: sys-kernel/gentoo-sources selected: 2.6.27-r3 protected: none omitted: 2.6.27-r8 >>> ’Selected’ packages are slated for removal. >>> ’Protected’ and ’omitted’ packages will not be removed.
Répondez y à la question.
# rm -r /usr/src/linux-2.6.27-gentoo-r3
<note>Changez linux-2.6.27-gentoo-r3 pour la valeur de la version du noyau à supprimer.</note>
Par la suite, éditez votre ﬁchier /boot/grub/grub.conf pour enlever l’entrée du menu devenue caduque. Montez la partition /boot s’il le faut.