OldGentooWiki:Maj noyau
De Gentoo-Quebec.
Index entretien et sauvegardes
Sommaire |
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. Pour illustrer cette situation, prenez par exemple le passage du noyau 2.6.29 à 2.6.30. Une révision est une mise à jour qui se produit au niveau de la même version comme, par exemple, le passage de 2.6.30 à 2.6.30-r1. Une révision s'exprime toujours par la présence du suffixe r et d'un chiffre représentant le numéro de la révision.
Le second type de mise à jour implique le changement de branche. Supposez par exemple le passage de la branche 2.4 à la branche 2.6. Le numéro de la branche est le second chiffre dans le nom du noyau.
Quand faire une mise à jour
Vous devez faire une mise à jour du noyau lorsque la commande de mise à jour vous indique qu'un nouveau source du noyau va s'installer à la suite de la synchronisation de votre arbre Portage.
La commande de mise à jour est celle-ci.
Il y a une mise à jour du noyau à faire quand cette information apparaît dans le résultat de la commande précédente.
[ebuild NS ] sys-kernel/gentoo-sources-2.6.30-r4 [2.6.30-r2, 2.6.30-r3] USE="-build -symlink" 76 kB
Compte tenu que la commande de mise à jour a été exécutée avec le paramètre a, vous devez répondre Yes à la demande de mise à jour. Quand toutes les mises à jour auront été appliquées, procédez à la mise à jour selon l'une des approches décrites en introduction.
Avant de procéder à la mise à jour du noyau, veuillez vous assurer que la partition /boot, si vous en avez une, est bel et bien montée. La partition /boot n'est pas montée quand l'option NOAUTO est présente dans l'instruction de montage de la partition /boot du fichier /etc/fstab.
/dev/sda1 /boot ext2 noauto,noatime 1 2
Pour monter la partition /boot suivant l'exemple ci-haut, la commande est :
Avec ou sans partition /boot, mettez maintenant le noyau de votre système à jour. Pour une mise à jour concernant un changement de version ou une révision, passez à Mise à jour changement de version ou révision. Pour une mise à jour versus un changement de branche, passez à 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'aviez fait lors de la toute première installation 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.
Obtenez maintenant la liste des dossiers de ce répertoire incluant le lien symbolique vers le dossier de la version du noyau actuelle.
Le résultat de la commande ls -l affichera ce type d'information.
total 12 lrwxrwxrwx 1 root root 22 jui 8 20:08 linux -> linux-2.6.30-gentoo-r2 drwxr-xr-x 23 root root 4096 jui 8 21:26 linux-2.6.30-gentoo-r2 drwxr-xr-x 22 root root 4096 jui 22 17:39 linux-2.6.30-gentoo-r3 drwxr-xr-x 7 root root 4096 avr 30 12:30 rpm
Le lien symbolique est sur la seconde ligne. Remarquez la présence de deux dossiers contenant le noyau. Le dossier du noyau actuel est selon cet exemple le linux-2.6.30-gentoo-r2 est c'est sur celui-ci que pointe le lien symbolique. Cela signifie que vous positionner sur le répertoire /usr/src/linux revient à la même chose que si vous vous positionniez sur le répertoire /usr/src/linux-2.6.30-gentoo-r2.
Le fichier de configuration est un fichier caché. Son nom est donc précédé d'un point. Pour copier le fichier de configuration du noyau actuel dans le fichier de configuration du nouveau noyau, exécutez la commande qui suit.
Remplacez dos_nouvl_versn_noyau par le nom du répertoire contenant le source du nouveau noyau tel qu'affiché par l'exécution de la commande ls -l
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 de la commande de création d'un lien symbolique.
Supposons que le dernier source installé soit sys-kernel/gentoo-sources-2.6.30-gentoo-r4, la commande sera :
Dès lors quand vous vous placez dans le répertoire /usr/src/linux, ce sont les fichiers source du nouveau noyau que vous voyez et non plus ceux du noyau actuel.
Vous n'avez pas à créer le nouveau lien symbolique si le USE flag symlink est déclaré dans votre fichier /etc/make.conf
Il est également possible d'actualiser le lien symbolique /usr/src/linux par le biais de la commande eselect. Pour que /usr/src/linux pointe vers /usr/src/linux-2.6.30-gentoo-r4 la commande à utiliser sera :
Si vous ne connaissez pas la version exacte, il est possible d'entrer la commande suivante qui vous donnera la liste de tous les sources de noyau présents sous /usr/src:
Il ne vous restera ensuite qu'à choisir le bon noyau soit par sa version comme indiqué ci-dessus soit par le numéro dans la liste retournée par eselect kernel list. Si par exemple linux-2.6.30-gentoo-r4 est le deuxième élément de la liste il faudra entrer :
Exécution de make oldconfig
La commande make oldconfig va modifier la configuration du noyau que vous avez copié précédemment. Cette modification applique les changements apportés par la nouvelle version du noyau.
Pour exécuter make oldconfig :
Lorsque make oldconfig vous pose une question, vous répondez en appuyant sur la touche ENTER. Ceci instruit make oldconfig d'appliquer la modification par défaut. En cas de doute ou pour en savoir plus, appuyer sur la touche ? avant de procéder.
HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/basic/hash HOSTCC scripts/kconfig/conf.o scripts/kconfig/conf.c: In function ‘conf_askvalue’: scripts/kconfig/conf.c:105: attention : ignoring return value of ‘fgets’, declared with attribute warn_unused_result scripts/kconfig/conf.c: In function ‘conf_choice’: scripts/kconfig/conf.c:307: attention : ignoring return value of ‘fgets’, declared with attribute warn_unused_result HOSTCC scripts/kconfig/kxgettext.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/lex.zconf.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2486: scripts/kconfig/confdata.c: In function ‘conf_write’: scripts/kconfig/confdata.c:501: attention : ignoring return value of ‘fwrite’, declared with attribute warn_unused_result scripts/kconfig/confdata.c: In function ‘conf_write_autoconf’: scripts/kconfig/confdata.c:739: attention : ignoring return value of ‘fwrite’, declared with attribute warn_unused_result scripts/kconfig/confdata.c:740: attention : ignoring return value of ‘fwrite’, declared with attribute warn_unused_result In file included from scripts/kconfig/zconf.tab.c:2487: scripts/kconfig/expr.c: In function ‘expr_print_file_helper’: scripts/kconfig/expr.c:1090: attention : ignoring return value of ‘fwrite’, declared with attribute warn_unused_result HOSTLD scripts/kconfig/conf scripts/kconfig/conf -o arch/x86/Kconfig * * Restart config... * * * Processor type and features * Tickless System (Dynamic Ticks) (NO_HZ) [Y/n/?] y High Resolution Timer Support (HIGH_RES_TIMERS) [Y/n/?] y Symmetric multi-processing support (SMP) [Y/n/?] y Support sparse irq numbering (SPARSE_IRQ) [N/y/?] n Enable MPS table (X86_MPPARSE) [Y/n/?] y Support for big SMP systems with more than 8 CPUs (X86_BIGSMP) [N/y/?] n Support for extended (non-PC) x86 platforms (X86_EXTENDED_PLATFORM) [Y/n/?] y AMD Elan (X86_ELAN) [N/y/?] n RDC R-321x SoC (X86_RDC321X) [N/y/?] n Support non-standard 32-bit SMP architectures (X86_32_NON_STANDARD) [N/y/?] n Single-depth WCHAN output (SCHED_OMIT_FRAME_POINTER) [Y/n/?] y Memtest (MEMTEST) [N/y/?] n Processor family 1. 386 (M386) 2. 486 (M486) 3. 586/K5/5x86/6x86/6x86MX (M586) 4. Pentium-Classic (M586TSC) 5. Pentium-MMX (M586MMX) 6. Pentium-Pro (M686) 7. Pentium-II/Celeron(pre-Coppermine) (MPENTIUMII) 8. Pentium-III/Celeron(Coppermine)/Pentium-III Xeon (MPENTIUMIII) 9. Pentium M (MPENTIUMM) > 10. Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon (MPENTIUM4) 11. K6/K6-II/K6-III (MK6) 12. Athlon/Duron/K7 (MK7) 13. Opteron/Athlon64/Hammer/K8 (MK8) 14. Crusoe (MCRUSOE) 15. Efficeon (MEFFICEON) 16. Winchip-C6 (MWINCHIPC6) 17. Winchip-2/Winchip-2A/Winchip-3 (MWINCHIP3D) 18. GeodeGX1 (MGEODEGX1) 19. Geode GX/LX (MGEODE_LX) 20. CyrixIII/VIA-C3 (MCYRIXIII) 21. VIA C3-2 (Nehemiah) (MVIAC3_2) 22. VIA C7 (MVIAC7) 23. Core 2/newer Xeon (MCORE2) choice[1-23]: 10 Generic x86 support (X86_GENERIC) [Y/n/?] y HPET Timer Support (HPET_TIMER) [Y/n/?] y Maximum number of CPUs (NR_CPUS) [2] 2 SMT (Hyperthreading) scheduler support (SCHED_SMT) [Y/n/?] y Multi-core scheduler support (SCHED_MC) [Y/n/?] y Preemption Model 1. No Forced Preemption (Server) (PREEMPT_NONE) 2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY) > 3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT) choice[1-3]: 3 Reroute for broken boot IRQs (X86_REROUTE_FOR_BROKEN_BOOT_IRQS) [N/y/?] n Machine Check Exception (X86_MCE) [Y/n/?] y Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4 (X86_MCE_NONFATAL) [Y/n/m/?] y check for P4 thermal throttling interrupt. (X86_MCE_P4THERMAL) [Y/n/?] y Toshiba Laptop support (TOSHIBA) [N/m/y/?] n Dell laptop support (I8K) [N/m/y/?] n Enable X86 board specific fixups for reboot (X86_REBOOTFIXUPS) [Y/n/?] y /dev/cpu/microcode - microcode support (MICROCODE) [Y/n/m/?] y Intel microcode patch loading support (MICROCODE_INTEL) [Y/n/?] y AMD microcode patch loading support (MICROCODE_AMD) [N/y/?] n /dev/cpu/*/msr - Model-specific register support (X86_MSR) [Y/n/m/?] y /dev/cpu/*/cpuid - CPU information support (X86_CPUID) [Y/n/m/?] y /sys/kernel/debug/x86/cpu/* - CPU Debug support (X86_CPU_DEBUG) [N/m/y/?] n High Memory Support 1. off (NOHIGHMEM) > 2. 4GB (HIGHMEM4G) 3. 64GB (HIGHMEM64G) choice[1-3]: 2 Memory model > 1. Flat Memory (FLATMEM_MANUAL) 2. Sparse Memory (SPARSEMEM_MANUAL) choice[1-2]: 1 Add LRU list to track non-evictable pages (UNEVICTABLE_LRU) [Y/n/?] y Low address space to protect from user allocation (DEFAULT_MMAP_MIN_ADDR) [4096] (NEW) Allocate 3rd-level pagetables from highmem (HIGHPTE) [Y/n/?] y Check for low memory corruption (X86_CHECK_BIOS_CORRUPTION) [N/y/?] n Reserve low 64K of RAM on AMI/Phoenix BIOSen (X86_RESERVE_LOW_64K) [Y/n/?] y Math emulation (MATH_EMULATION) [N/y/?] n MTRR (Memory Type Range Register) support (MTRR) [Y/n/?] y MTRR cleanup support (MTRR_SANITIZER) [N/y/?] n x86 PAT support (X86_PAT) [Y/n/?] y EFI runtime service support (EFI) [Y/n/?] y Enable seccomp to safely compute untrusted bytecode (SECCOMP) [Y/n/?] y Enable -fstack-protector buffer overflow detection (EXPERIMENTAL) (CC_STACKPROTECTOR) [Y/n/?] y Timer frequency 1. 100 HZ (HZ_100) > 2. 250 HZ (HZ_250) 3. 300 HZ (HZ_300) 4. 1000 HZ (HZ_1000) choice[1-4?]: 2 kexec system call (KEXEC) [Y/n/?] y kernel crash dumps (CRASH_DUMP) [Y/n/?] y kexec jump (EXPERIMENTAL) (KEXEC_JUMP) [N/y/?] n Physical address where the kernel is loaded (PHYSICAL_START) [0x1000000] 0x1000000 Build a relocatable kernel (EXPERIMENTAL) (RELOCATABLE) [Y/n/?] y Alignment value to which kernel should be aligned (PHYSICAL_ALIGN) [0x200000] 0x200000 Support for hot-pluggable CPUs (HOTPLUG_CPU) [Y/?] y Compat VDSO support (COMPAT_VDSO) [N/y/?] n Built-in kernel command line (CMDLINE_BOOL) [N/y/?] n # # configuration written to .config #
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 ou d'autres qui ont été désactivé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. Voyons comment faire à partir de l'exemple suivant.
ls -l total 16 lrwxrwxrwx 1 root root 22 jui 29 16:02 linux -> linux-2.6.30-gentoo-r4 drwxr-xr-x 23 root root 4096 jui 8 21:26 linux-2.6.30-gentoo-r2 drwxr-xr-x 22 root root 4096 jui 22 17:39 linux-2.6.30-gentoo-r3 drwxr-xr-x 22 root root 4096 jui 30 09:57 linux-2.6.30-gentoo-r4 drwxr-xr-x 7 root root 4096 avr 30 12:30 rpm
La commande ls -l a été exécutée à la racine du répertoire /usr/src. Vous vous souvenez que le lien symbolique pour le noyau a été modifié. Il pointe maintenant sur le dossier linux-2.6.30-gentoo-r4. Vous remarquez également qu'il y a deux autres dossiers contenant les sources du noyau. Lequel correspond à la version du noyau couramment utilisée ? La réponse vous est fournie par la commande uname.
Dans le cadre de cet exemple, le résultat obtenu est le suivant.
2.6.30-gentoo-r2
Vous savez maintenant que le système tourne actuellement sur le noyau 2.6.30-gentoo-r2 et que le nouveau noyau est le 2.6.30-gentoo-r4. Pour comparer le fichier de configuration du noyau actuel avec celui du nouveau noyau et éventuellement apporter des ajustements au fichier de configuration du nouveau noyau, vous utilisez la commande make menuconfig. Dans le terminal actuellement ouvert, placez-vous sur le dossier /usr/src/linux qui est celui du nouveau noyau et lancez l'outil de configuration.
Ouvrez un second terminal. Placez-vous dans le dossier du noyau actuel soit linux-2.6.30-gentoo-r2 selon l'exemple utilisé. Lancez-y également l'outil de configuration.
Placez les fenêtres des terminaux côte à côte (tel qu'illustré ci-après) et comparez les valeurs de chacune des options de configuration. Apportez les modifications nécessaires au fichier de configuration du nouveau noyau. N'oubliez pas de sauvegarder vos changements à la fin de l'opération.
|
|
Lorsque le fichier de configuration du nouveau noyau est prêt à être utilisé pour compiler la nouvelle version du noyau, passez à l'étape Compilation et copie du 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 la commande make oldconfig.
Montage de la partition /boot
Vous devez monter votre partition /boot si :
- Vous en avez une ,
- Elle n'est pas montée automatiquement au démarrage.
Consultez le fichier /etc/fstab pour avoir les coordonnées pertinentes à votre partition /boot.
Actualisation du lien symbolique
Vérifiez le nom du répertoire contenant les fichiers de la nouvelle version du noyau.
Placez-vous dans le dossier /usr/src/linux.
Modifiez le lien symbolique de manière à ce que le dossier créé par emerge gentoo-sources pointe sur /usr/src/linux.
Configuration du noyau
Lancez l'utilitaire de configuration du noyau.
Compilation et copie du noyau
Maintenant que le noyau est configuré, vous devez le compiler pour ensuite le copier dans la partition ou le répertoire /boot.
Compilation du noyau
Pour compiler le noyau :
Copie du noyau
Le nouveau noyau doit résider dans /boot, répertoire ou partition selon votre schéma de partitionnement, afin que l'ordinateur puisse démarrer dessus. Il y a trois fichiers à copier dans /boot dont le plus important est le noyau lui-même. Les deux autres ne sont pas essentiels au démarrage.
- L'image du noyau (le noyau lui-même) , bzImage ;
- Le fichier de mappage, System.map ;
- Le fichier de configuration, .config.
Assurez-vous que la partition /boot soit montée avant d'effectuer les opérations de copie.
Les commandes de copie à exécuter en prenant soin d'être positionné dans /usr/src/linux :
# cp System.map /boot
# cp .config /boot/config-version noyau.config
arch prend la valeur i386 ou x86_64 selon que vous avez compilé pour une architecture 32 bits ou 64 bits.
version noyau est par exemple 2.6.30-gentoo-r4 si vous avez compilé le fichier linux-2.6.30-gentoo-r4.Le dernier geste à poser pour rendre le nouveau noyau disponible au démarrage est d'ajouter l'entrée nécessaire dans le fichier du gestionnaire d'amorçage. Éditez le fichier /boot/grub/grub.conf.
Voici un exemple d'un fichier du gestionnaire d'amorçage.
default 0 timeout 10 # Hides the menu by default (press ESC to see the menu) #hiddenmenu # Pretty colours #color cyan/blue white/blue # Splash image splashimage=(hd0,0)/grub/splash.xpm.gz # # examples # # title Windows 95/98/NT/2000 # root (hd0,0) # makeactive # chainloader +1 # # title Linux # root (hd0,1) # kernel /vmlinuz root=/dev/hda2 ro # title Funtoo-Gentoo 2.6.30-r2 - Xfce4 - Testing uuid 0f295b57-89f0-4182-8657-c93bfcfcd604 #root (hd0,0) kernel /kernel-2.6.30-gentoo-r2 root=/dev/sdb5 vga=795 title Funtoo-Gentoo 2.6.30-r4 - Xfce4 - Testing uuid 0f295b57-89f0-4182-8657-c93bfcfcd604 #root (hd0,0) kernel /kernel-2.6.30-gentoo-r4 root=/dev/sdb5 vga=795 title SystemRescueCd root (hd1,8) kernel /sysrcd/rescuecd subdir=sysrcd setkmap=cf initrd /sysrcd/initram.igz boot
Dans cet exemple, le noyau kernel-2.6.30-gentoo-r4 a été ajouté aux options du gestionnaire d'amorçage. Notez que la partition /boot peut être identifiée par son UUID.
Si vous n'utilisez pas de partition /boot, veuillez ajouter /boot devant kernel sur la ligne du même nom.
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 module-rebuild est installé ? Vérifiez avec par exemple la commande whereis.
Si vous obtenez une réponse différente de :
module-rebuild: /usr/sbin/module-rebuild
c'est que l'outil n'est pas installé. Consultez ce guide pour l'installer.
Devez-vous exécuter module-rebuild ? La réponse se trouve dans l'information retrounée par :
Vous devez lancez module-rebuild, si vous obtenez une information comme celle-ci :
** Packages which I will emerge are: =app-emulation/virtualbox-modules-3.0.2
L'exécution de module-rebuild pour reconstruire les modules du noyau est :
Redémarrage de l'ordinateur
Rendu à cette étape, vous êtes maintenant prêt à redémarrer votre machine afin qu'elle tourne sur le nouveau noyau. Repositionnez-vous à la racine de votre système et démontez, si vous en avez une, la partition /boot.
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.
Suppression des fichiers de l'ancien noyau
Pour supprimer les fichiers de l'ancien noyau, vous exécutez cette commande :
Vous aurez alors à confirmer la suppression.
Calculating dependencies... done!
>>> Checking for lib consumers...
>>> These are the packages that would be unmerged:
sys-kernel/gentoo-sources
selected: 2.6.30-r2 2.6.30-r3
protected: none
omitted: 2.6.30-r4
>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.
Would you like to unmerge these packages? [Yes/No]
Vous répondez par Yes et les fichiers de l'ensemble figurant sur la ligne selected seront purgés.
L'intervention suivant la suppression des fichiers du noyau désuet consiste à supprimer le dossier de ce noyau.
Remplacez version par la valeur affichée sur la ligne selected.
Finalement, il ne vous reste plus qu'à retirer du menu du gestionnaire d'amorçage les lignes concernant le lancement de l'ancienne version du noyau. Vous éditez le fichier /boot/grub/grub.conf après avoir monté la partition /boot si vous en avez une.


