Accéder au contenu principal

Compiler le kernel


COMPILER LE KERNEL

Nous allons voir comment compiler un kernel Linux. Dans ce tutoriel, nous utiliserons suse 10. Nous compilerons le kernel 2.6.13-15.7. Les commandes montres dans cet article fonctionnent néanmoins avec n''importe quel kernel 2.6.

Installez les sources du kernel
rpm -i kernel-source-2.6.13-15.7.i586.rpm

déplacez-vous dans le répertoire du kernel (/usr/src/linux) pour effectuer les prochaines opérations.

Modifiez la ligne contenant EXTRAVERSION dans le fichier Makefile. N'importe quelle valeur peut être mise, mais le premier caractère doit être un trait d'union.

Si vous ne voulez pas utiliser le fichier de config de ce kernel faite
make mrproper

Cette commande permet de choisir les options du kernel
make xconfig

Pour débuter, il peut être intéressant de rien changer afin de s''assurer que ça fonctionne. Par la suite, vous pouvez enlevez des fonctionnalités que vous n''utilisez pas.

Ouvrez le fichier: .config et modifiez la ligne concernant: CONFIG_LOCALVERSION, changez sa valeur. La valeur mise pour cet exemple est: -default_collinm_1. Ce changement permettra de ne pas écraser les modules. Ainsi, ce noyau et ses modules seront totalement indépendants du noyau que vous avez.

Cette commande compile le kernel
make bzImage

Cette commande compile les modules
make modules

Cette commande installe les modules
make modules_install

La commande ci-dessous copie le bzimage, System-map et modifie grub pour vous
make install

Ensuite, vous devez modifier votre fichier grub ou lilo. Ici nous allons modifier le menu de grub
Avant les modifications menu.lst ressemblait à
# Modified by YaST2. Last modification on Tue Jan 17 02:34:27 EST 2006

color white/blue black/light-gray
default 0
timeout 8
gfxmenu (hd0,4)/message

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE LINUX 10.0
    root (hd0,4)
    kernel /vmlinuz root=/dev/sda6 vga=0x317 selinux=0    resume=/dev/sda9  splash=silent showopts
    initrd /initrd

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE LINUX 10.0
    root (hd0,4)
    kernel /vmlinuz root=/dev/sda6 vga=normal showopts ide=nodma apm=off acpi=off noresume selinux=0 nosmp noapic maxcpus=0 edd=off 3
    initrd /initrd

Le fichier après les modifications fait par make install ressemble à
# Modified by YaST2. Last modification on mer fév  8 22:53:52 EST 2006
color white/blue black/light-gray
default 1
timeout 8
gfxmenu (hd0,4)/message
title Linux-2.6.13-test1-15.7-default_collinm_1
 root (hd0,4)
 kernel /vmlinuz-2.6.13-test1-15.7-default_collinm_1 root=/dev/sda6 vga=0x317 selinux=0    resume=/dev/sda9  splash=silent showopts
 initrd /initrd-2.6.13-test1-15.7-default_collinm_1

###Don''t change this comment - YaST2 identifier: Original name: linux###
title SUSE LINUX 10.0
 root (hd0,4)
 kernel /vmlinuz root=/dev/sda6 vga=0x317 selinux=0    resume=/dev/sda9  splash=silent showopts
 initrd /initrd-2.6.13-15.7-default
###Don''t change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE LINUX 10.0
 root (hd0,4)
 kernel /vmlinuz root=/dev/sda6 vga=normal showopts ide=nodma apm=off acpi=off noresume selinux=0 nosmp noapic maxcpus=0 edd=off 3
 initrd /initrd-2.6.13-15.7-default

Si vous regarder dans votre répertoire /boot, il est fort probable que vmlinuz pointe sur la nouvelle valeur ici: vmlinuz-2.6.13-test1-15.7-default_collinm_1. Il faut donc modifier cela.
# Modified by YaST2. Last modification on mer fév  8 22:53:52 EST 2006
color white/blue black/light-gray
default 1
timeout 8
gfxmenu (hd0,4)/message
title Linux-2.6.13-test1-15.7-default_collinm_1
 root (hd0,4)
 kernel /vmlinuz-2.6.13-test1-15.7-default_collinm_1 root=/dev/sda6 vga=0x317 selinux=0    resume=/dev/sda9  splash=silent showopts
 initrd /initrd-2.6.13-test1-15.7-default_collinm_1

###Don''t change this comment - YaST2 identifier: Original name: linux###
title SUSE LINUX 10.0
 root (hd0,4)
 kernel /vmlinuz-2.6.13-15.7-default root=/dev/sda6 vga=0x317 selinux=0    resume=/dev/sda9  splash=silent showopts
 initrd /initrd-2.6.13-15.7-default

###Don''t change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE LINUX 10.0
 root (hd0,4)
 kernel /vmlinuz-2.6.13-15.7-default root=/dev/sda6 vga=normal showopts ide=nodma apm=off acpi=off noresume selinux=0 nosmp noapic maxcpus=0 edd=off 3
 initrd /initrd-2.6.13-15.7-default

Il est maintenant possible de démarrer sur un et l''autre des noyaux. Les modules sont indépendants.

Si vous utilisez les pilotes Nvidia, une fois qu'ils sont installés vous pouvez démarré sur vos autres noyaux. Lancez NVIDIA-Linux-x86-1.0-xxxx-pkg1.run avec l'option -K. Vous allez ainsi avoir les pilotes pour le noyau en cours. Cette commande doit être faite pour chacun de vos noyaux.

Commentaires

Posts les plus consultés de ce blog

Toshiba AC100 et Android 4

Toshiba AC100 est un smartbook. Toshiba est la seule grosse entreprise qui a commercialisé un smartbook, malgré que plusieurs autres en aient présenté. Un smartbook est similaire à un netbook (taille) en plus d'avoir des caractéristiques souvent proche à un mobile (GPS, 3g, processeur ARM, autonomie). Le Toshiba AC100 utilisait le système d'exploitation Android en version 2.1. Toshiba a effectué une mise à jour Android 2.2. Il a arrêté la commercialisation et le support de cette machine. L'appareil ayant un bon rapport qualité/prix, la communauté le prit en charge. Il est possible d'installer une version beaucoup plus récente d'Android telle que la 4.1. La rom alternative Cyanogen a été utilisée pour ce portage. Les procédures citées ont été faites sous Linux.  Sous Windows, il faut télécharger une version de nvflash pour ce système. Préparation Télécharger les fichiers: cm_ac100-ota-eng.cm10-beta2.zombah.zip recovery.ac100-cm10_beta2.img via ce...

Spring data jpa et Hibernate’s Warning “firstResult/maxResults specified with collection fetch”

Nous verrons dans cet article comment corrigé le problème  Hibernate’s Warning “firstResult/maxResults specified with collection fetch” qui peut survenir lorsqu'il y a un fetch d'effectuer et qu'il y a du paging. Nous utiliserons spring data jpa. Détail structure Imaginons une relation 1 à plusieurs Lorsqu'on obtient un parent, on désire obtenir aussi sa liste d'enfants. En sql, il y aurait une jointure à effectuer. Il est question d'une recherche avancé où on pourrait recherche par plusieurs critères. Spécification Création d'une spécification pour construire une requête dynamique @Component public class ParentSpecification {     public Specification<Parent> recherche(RechercheParent recherche) {         return (root, cq, cb) -> {             Join<Parent, enfant> enfantJoin;              List<Predicate> rootPredicates = new ArrayList<>();       ...

Migration d’une application Spring Boot 2.2 vers Spring Boot 4.0 : retour d’expérience concret

 En 2019, nous avons développé une application métier basée sur : Java 8 Spring Boot 2.2.7 Gradle 6.6.1 Thymeleaf Bootstrap 4.3.1 Environ 40 000 lignes de code Java Fin 2025, voici un retour d’expérience concret sur la migration vers : Java 25 Spring Boot 4.0.1 Gradle 9.2.1 La partie thymeleaf, n'a pas été touché, il y a quelques warning concernant l'obsolescence de certain commande tel que th:include. Une migration plus rapide que prévu Un point important : en moins de 30 minutes, l’application démarrait sur la nouvelle stack. Évidemment, "ça démarre" ne veut pas dire "tout fonctionne", mais ce premier jalon est très révélateur : la base Spring Boot reste solide les outils de migration sont matures la dette technique était maîtrisée Les changements majeurs rencontrés De javax.* à jakarta.* C’est probablement le changement le plus visible. Tous les imports javax.* doivent être migrés ve...