--- page corrigée --- //[[david.lebeau@gmail.com|TheShift]] 2009/02/27 19:33// ====== Mise à jour du noyau ====== //**Guides et Tutoriels** Gentoo-Québec//\\ //[[http://www.gentoo-quebec.org/index.php?page=docs&v=505|PDF original]]// ==== Introduction ==== 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 effet, il y a deux types de mise à jour à considérer.\\ \\ *La première se veut une mise-à-jour impliquant un changement de version ou une révision mineure. Un changement de version se produit lorsqu’une nouvelle version apparaît dans la même branche. Prenez par exemple le passage de la version **2.6.26-r2** à la version **2.6.27-r1**. Une révision est une mise à jour mineure qui se produit au niveau d’une même version. A titre d’exemple, le passage de **2.6.27-r3** à **2.6.27-r8**. *Le second type de mise à jour implique le changement de branche. Cela se traduit par le passage, par exemple de la branche **2.6.XX** à la branche **2.7.XX**. 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. \\ \\ ---- ==== Quand faire une mise à jour ==== 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. Ne pas exécuter ce qui suit si vous n’avez pas de partition **/boot** Veuillez monter votre partition **/boot** si nécessaire. # mount /dev/sda1 /boot 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 fichier **/etc/fstab**. 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**\\ \\ ---- ==== Mise à jour changement de version ou révision ==== Cette section décrit les étapes à effectuer pour mettre à jour le noyau lors d’un changement de version ou d’une révision. === Copie du fichier de configuration === La copie du fichier de configuration vous permet de copier votre configuration du noyau actuelle dans le fichier de configuration du nouveau noyau. Cela vous assure que votre configuration actuelle du noyau est reconduite telle quelle dans le fichier de configuration du nouveau noyau vous évitant ainsi à refaire toute votre configuration 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 affiché 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 fichier de configuration. Le lien symbolique se nomme linux et il correspond au dossier **linux-2.6.27-gentoo-r3**. Le fichier de configuration est un fichier caché. Ceci explique la présence du point devant son nom. # cp /usr/src/linux/.config /usr/src/linux-2.6.27-gentoo-r8 === Actualisation du lien symbolique === Le lien symbolique correspond au dossier des sources du noyau actuel. Pour être en mesure de finaliser la configuration 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 fichiers 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 === Exécution de make oldconfig === La commande **make oldconfig** va modifier la configuration 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 oldconfig** : # make oldconfig Lorsque **make oldconfig** 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. === Exécution de make menuconfig === L’opération précédente peut avoir entraîné des modifications au fichier de configuration, modifications que vous ne désirez pas. Ces modifications sont habituellement des éléments de configuration 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 fichier de configuration avec celui du noyau actuel. -Ouvrez un second terminal -Positionnez-vous dans le dossier de votre noyau actuel : **# cd /usr/src/linux-2.6.27-r3** -Dans chacun des terminaux lancez la commande : **# make menuconfig**\\ Comparez la valeur de chaque élément et modifiez celle de la nouvelle configuration si tel est le cas. 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 oldconfig vous affiche donc la nouvelle configuration du noyau. Le terminal dans lequel vous vous êtes positionné sur le dossier /usr/src/linux-2.6.27-r3 affiche donc la configuration du noyau actuel. Veuillez à appliquer les modifications dans le terminal où vous avez exécuté le make oldconfig. Passez maintenant aux étapes de compilation du nouveau noyau et de sa copie dans **/boot** : section **Compilation et copie du nouveau noyau**\\ \\ ---- ==== Mise à jour changement de branche ==== Pour mettre à jour le noyau lors d’un changement de branche, vous adopterez une approche sécuritaire. Cette méthode est longue car vous reconfigurez votre noyau à la main comme vous le faites lors d’une installation. En fait, vous n’utilisez pas mas make oldconfig.\\ \\ Voici les étapes que vous devez exécuter : -Monter /boot si nécessaire -Actualisation du lien symbolique linux -Exécution de make menuconfig -Compilation et copie du nouveau noyau dans /boot -Recompilation des programmes qui dépendent du noyau -Redémarrage de l’ordinateur === Montage de /boot === Vous devez monter votre partition **/boot** si vous avez une partition qui est dédiée à celle-ci. # mount /dev/sdaX /boot Consultez votre fichier **/etc/fstab** pour connaître la valeur correspondant à **sdaX** de l’exemple ci-haut. === Actualisation du lien symbolique linux === # cd /usr/src/linux # ln -sfn linux-2.6.27-gentoo-r8 /usr/src/linux Modifiez **linux-2.6.27-gentoo-r8** en suppléant la valeur de l’exemple par celle du paquet **gentoo-sources** que vous avez installé. === Exécution de make menuconfig === Vous devez reconfigurer votre noyau manuellement comme vous l’avez fait lors de l’installation de votre Gentoo Linux. === Les trois dernières étapes === Les trois dernières étapes sont respectivement décrites dans les trois section suivantes.\\ \\ ---- ==== Compilation et copie du nouveau noyau ==== Le nouveau noyau étant configuré, vous devez maintenant le compiler et par la suite le copier dans **/boot**. === Compilation du noyau === La compilation du noyau s’accomplit avec ces deux commandes : # make && make modules install === Copie du noyau === Le nouveau noyau doit être placé dans **/boot** pour démarrer l’ordinateur sur celui-ci. Vous devez également ajouter une entrée au fichier de configuration du gestionnaire d’amorçage [[util:grub]].\\ \\ Il y a trois fichiers à copier dans **/boot** : -L’image du noyau, bzImage -Le fichier du mappage, System.map -Le fichier de configuration, .config La partition **/boot** doit être montée si vous en utilisez une. # cp arch/i386/boot/bzImage /boot/kernel-2.6.27-gentoo-r8 # cp System.map /boot # cp .config /boot/config-2.6.27-gentoo-r8.config Remplacez **i386** par **x86.64** si votre architecture est **64 bits**. Rendez maintenant le nouveau noyau disponible à l’amorçage de l’ordinateur en l’ajoutant au fichier de configuration 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. S’il n’y a pas de partition dédiée à **/boot**, la ligne kernel devient **kernel /boot/kernel**. \\ \\ ---- ==== Recompilation des programmes qui dépendent du noyau ==== 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érifiez à l’aide de cette commande : # which module-rebuild Il y a d’autres techniques de vérification comme l’usage des commandes **equery**, **eix** et autres. 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 configuration. *ati-drivers *nvidia-drivers *ipw2100-firmware *ipw220-firmware *iwl3945-ucode *iwl4965-ucode *iwl5000-ucode \\ \\ ---- ==== Redémarrage de l’ordinateur ==== 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 fichiers de l’ancien noyau : # emerge -aP gentoo-sources Vous aurez une demande de confirmation 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 Changez **linux-2.6.27-gentoo-r3** pour la valeur de la version du noyau à supprimer. Par la suite, éditez votre fichier **/boot/grub/grub.conf** pour enlever l’entrée du menu devenue caduque. Montez la partition **/boot** s’il le faut.\\ \\ ---- //[[gentoo:gentoo|Retour à la page Gentoo]]//.