Linux keskecè ? Pour faire quoi ? Essayer Linux Bureaux graphiques 2D/3DBlackbox, Enlightenment, Gnome, KDE, WindowMaker, XGL / Compiz / Beryl,... Linux Girls
Comparatifs   Arch Linux   Debian   Dreamlinux   Mandriva   Ubuntu   Sabayon   Yoper live CD/DVDKnoppix, Kaella, Elive, GComprix, TRK, Wolvix, SuperGamer, ... Sur clé USB / iPodBureau portable ~   de Jeux / Gamers ~   localiséesPhaeronix, Arabian Linux, Ehad Linux (ultra)légèresAustrumi, Damn Small Linux, DeliLinux, Toutou, ... ÉducativesAbulÉdu, Edubuntu, GComprix Rescue / sauvetage /  restaurationGParted, PartedMagic, SystemRescue, RIS, TRK Serveur / firewall Liens
Bureautique Éducatif Gravure Graphisme 2/3D Internet / P2P Jeux sous Linux Développement Web Son & Vidéo Outils Gestionnaires de fenêtres   WM : Fluxbox Écrire en Chinois, Japonais, Coréen, Arabe, Russe, ... écrire en japonais Émulation & Virtualisation Apps Windows /Linux
l'Installation l'Administrateur "root" les Utilisateurs Périphériques PC portables Gérer le pingouin l'Affichage graphique le Réseau la Sécurité Installer & configurer les logiciels le Noyau Conclusion
Commandes shell Dameons Partitions FAT & NTFS Sauvegarder Clonage disques Configurer Mandriva RPMdrake uRPMi RPMbuild le Guide de survie sous Linux Centre de contrôle Mandriva Le kernel (noyau) Compiler une application
Acquisition vidéo APNs & webcams Optimiser ses Disques: hdparm Gestion Disques: Raid & LVM Imprimantes & Scanners les NAS sous LinuxNetwork Attached Storage PCs & ultra-portables Pilotes nVidia, nForce, ATI & Intel nVidia ou ATI ? Speedtouch & modems USB Wi-Fi

Pages liées

Configurer les applis

PackagesCompiler ~

Tux kernel compilation guideLiens →

Freashmeat : des milliers d'applicationsfreashmeat

SourceFORGE.net : softwares mapsourceForge

lea-linuxlogiciels

le kernel par lea-linuxDate un peu mais la plupart des commandes sont tj valables

Compiler kernel trustonme.net

framasoftframasoft

Index des articles qui présentent et évaluent des Applications sous Linux.Applications sous Linux

Gestionnaires logiciels

APT, dpkg-deb, alien ~

Synaptic ~

Pacman ~

urpmi ~

YUM ~

YaST ~

Scripts utiles

Scripts pour l'utilisateur - Forums Ubuntu-fr

échange bannières

K> HOWTOS
petite bannière pour placer un lien vers cette page

Bonnes affaires

ebuyclub.com

Actu

Candidats.fr 2008, c'est parti !

Manifestation cyclo-nudiste à Paris le 9 juin 2007

J'aime le Liban - Ouhib Lubnan - I love Lebanon

Bilan des destructions au Liban

Quelques brèves sur le noyau Linux

If Torvalds quit Linux would anyone notice? sur TuxMachine.org (06/02/2008)

Introduction : Pourquoi ?

Source de l'article : Pourquoi un nouveau noyau par Jean-Christophe de lea-linux]

a) Vous avez besoin d'un nouveau noyau si :

- Vous avez un matériel dont le support a été ajouté dans une nouvelle version du noyau (ex : le contrôleur ethernet de cartes mères Asrock s939 nécessite le noyau 2.6.14.x),
- Un trou de sécurité a été découvert dans le noyau actuel, ce problème étant réglé dans une nouvelle version,
- Vous souhaitez toujours avoir le dernier noyau possible :)
- Vous pensez améliorez les performances de votre système en compilant pour votre matériel (l'espoir fait vivre)
en fait La plupart du temps, vous n'avez pas réellement besoin de nouveau noyau...
Vous pouvez récupérer la dernière version du noyau (ainsi que toutes les autres) sur kernel.org, ou avec votre gestionnaire de paquetages.

b) Quelle est la version actuelle de votre noyau ?

C'est facile, il suffit de lancer uname -r pour avoir la réponse.
Les noyaux sont numérotés sur 3 nombres: x.y.z qui indiquent :

- le nombre du milieu est pair pour une version stable (exemple : 2.4.x)
- le nombre du milieu est impair pour une version de développement (exemple : 2.5.x)
attention il n'est pas recommandé à des utilisateurs peu expérimentés d'utiliser un noyau d'une version de développement, car ces noyaux sont à priori destinés aux testeurs et pas stables.

Prérequis

Installer les sources du noyau qu'on va compiler :

  1. Avec le gestionnaire de packages (ici .rpm de Mandrake) :
    urpmi kernel-source
    vérifier qu'il s'agit de la bonne version = la même que le noyau qu'on va compiler.
  2. Avec le tarball :
    tar zxvf kernel-source-[version].tar.gz
  3. On fait repointer le lien /usr/src/linux vers les sources du nouveau noyau :
    rm -f linux
    ln -s linux-2.x.x linux

    En général, /usr/src/linux représente un lien vers le répertoire courant contenant les sources du noyau que l'on compile (pas l'ancien).
    Ce lien est nécessaire à la compilation du noyau et afin que les fichier d'entêtes (les "includes") du noyau soient disponibles pour des compilations futures d'application.

HOWTO RAPIDE pour processeurs de la famille i386 (Intel/AMD) :

Vous avez installé les sources

La liste des commandes rapide, sans ouatemille explications :

cd /usr/src/linux
cp ./.config /outuveux
--> sauvegarder la configuration initilale.
(make mrproper --> Pour nettoyer l'arborescence des sources (attentionremet à zéro ton .config).)

make xconfig --> Choisis les options qui te conviennent.

make
make modules
make modules_install
make install

(ou make && make modules_install && make install si vous avez des courses à faire :)

et voila, une compilation propre, nickel, sans accro...

Source : forum.mandrakeclub.com

Ces commandes sont détaillées ci-dessous.

HowTo détaillé

Vous avez installé les sources (vi je sais mais j'insiste !)

1 - CONFIGURATION

1.1 - Trois commandes sont disponibles

make xconfig (graphique, le plus clair mais oblige à être sous X) ou :
make menuconfig (mode texte semi-graphique avec menus) ou encore :
make config (mode texte intégral)

Là il va falloir choisir les options.
Si vous ne l'avez jamais fait, sachez qu'il y en a un paquet, alors prévoyez un bon petit moment (et prenez des notes avant) !
* Annexe lea-linux sur les options

1.2 - Récupèrer la configuration actuelle de votre noyau ( à partir du kernel 2.6.x )

Une des nouveautés du kernel 2.6 est le pseudo fichier /proc/config.gz, il suffit donc de faire :
zcat /proc/config.gz > /usr/src/linux/.config et le tour est joué !

2 - COMPILATION DU NOYAU ET DES MODULES

Si vous voulez juste recompiler le noyau, sans monter de version :

Déplacez le répertoire /lib/modules/2.x.x vers /lib/modules/old-2.x.x (par exemple), avant la phase de compilation.
Ainsi, l'installation des modules recréera ce répertoire et y placera les nouveaux modules

Notez qu'il faut donc lancer make modules_install avant le "make install" du noyau.

Cela vous épargnera des problèmes si la nouvelle configuration du noyau a modifié celle des modules.
Si tout fonctionne correctement après le redémarrage, vous pourrez supprimer /lib/modules/old-2.x.x.

Les commandes :

à l'ancienne mode :

make dep && make clean && make bzImage pour compiler le noyau lui-même
make modules pour compiler les modules (i.e. les drivers).
Ne reste plus qu'à installer ces modules.

Avec les commandes modernes

Pour la plupart des logiciels, la commande make suffit à lancer la compilation. Et bien il en est de même pour le noyau !

  1. cd /usr/src/linux/
    make
  2. puis make modules
    make modules_install
  3. et enfin make install

Dans cet ordre, make install créé automatiquement les fichiers nécessaires dans le noyau.

=> Par exemple quand j'ai compilé le kernel-2.6.8.1-12mdk, make install créé dans /boot :
- config-2.6.8.1-12mdkcustom
- initrd-2.6.8.1-12mdkcustom.img
- System.map-2.6.8.1-12mdkcustom
- vmlinuz -> vmlinuz-2.6.8.1-12mdkcustom
- vmlinuz-2.6.8.1-12mdkcustom

make

Comme annoncé dans l'introduction, le make sert à générer un exécutable, pour ce faire il suit les indications contenues dans le .config.

Rappelons que la compilation est une traduction, au même titre que le passage de l'anglais au français. On passe d'un fichier ascii, contenant du code source C à un fichier binaire (contenant des 0 et des 1) appelé exécutable.

Si on lance "make install" maintenant, on obtient le message d'erreur :

make[1]: « arch/i386/kernel/asm-offsets.s » est à jour.
CHK include/asm-i386/asm_offsets.h
CHK include/linux/compile.h
Kernel: arch/i386/boot/bzImage is ready
sh /usr/src/linux-2.6.8.1-12mdkcustom/arch/i386/boot/install.sh 2.6.8.1-12mdkcustom arch/i386/boot/bzImage System.map ""
/lib/modules/2.6.8.1-12mdkcustom is not a directory.
mkinitrd failed:
(mkinitrd -v -f /boot/initrd-2.6.8.1-12mdkcustom.img --ifneeded 2.6.8.1-12mdkcustom)) at /usr/lib/libDrakX/boot loader.pm line 121.
make[1]: *** [install] Erreur 2
make: *** [install] Erreur 2

3) INSTALLATION DU NOUVEAU NOYAU

Installation (les lignes suivantes sont à adapter à votre configuration, à la version du noyau...) :

3.1) Installer les modules dans le répertoire /lib/modules/2.x.x :

cd /usr/src/linux/
make modules_install

3.2) Installer le noyau :

Les gestionnaires de packages le font automatiquement. Pareil pour 'make install'. Mais voilà la manip manuellement :

cd /usr/src/linux/
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.7
cp System.map /boot/System.map-2.6.7

Ici j'installe un noyau 2.6.7, mais le nom de vmlinuz est là par logique et non par nécessité, évitez néanmoins de les appeler vmlinuz ou System.map tout court.
À ce stade votre noyau est installé, mais pour être totalement en règle avec la syntaxe Linux, exécutez également les commandes suivantes :

cd /boot
mv vmlinuz vmlinuz.old
ln -sf /boot/vmlinuz-2.6.7 vmlinuz
rm System.map
ln -s System.map-2.6.7 System.map

3.3) mkinitrd :

Fait automatiquement si on a respecté l'ordre donné ci-dessus :o))

Si votre distribution utilise un disque ram initial (initial ramdisk = initrd) pour démarrer (visible à la ligne "initrd=" dans le chargeur Lilo ou Grub), tapez également :

mkinitrd -o /boot/initrd-2.6.7 /lib/modules/votre_nouveau_noyau
Nan, c'est plutot :
mkinitrd -f -v /boot/initrd-2.6.8.1-12mdkcustom.img 2.6.8.1-12mdkcustom (de : /lib/modules/nuvo_noyau )

3.4) Mise à jour du chargeur d'OS / Gestionnaire de boot :

Les gestionnaires de packages le font automatiquement. Mais voilà la manip manuellement :

Maintenant que votre noyau est installé il vous reste à mettre à jour votre chargeur d'OS, il peut s'agir de lilo ou grub.

Si vous utilisez Lilo, éditez /etc/lilo.conf pour mettre à jour avec la nouvelle version ou ajouter une entrée, puis lancez lilo :
/sbin/lilo
(Détails ci-dessous)

Si vous utilisez Grub, éditez simplement /boot/grub/menu.lst pour mettre à jour sur la nouvelle version du noyau ; laissez les entrées préexistantes telles quelles, elles seront bien utiles si le nouveau noyau ne fonctionne pas !
(Détails ci-dessous)

Détails LILO

Editez votre fichier /etc/lilo.conf, focalisez sur la zone qui démarre Linux (label=linux), chez moi elle ressemble à ce qui suit, il peut y avoir quelques variations chez vous en fonction de votre distribution

image = /boot/vmlinuz
root = /dev/hda4
append = "hdc=ide-scsi hdd=ide-scsi"
label = Linux
vga = 773
read-only

Vous devez la dédoubler et modifier chacun des deux blocs :

# Ancien noyau :
image = /boot/vmlinuz.old
root = /dev/hda4
append = "hdc=ide-scsi hdd=ide-scsi"
label = mylinux-old
vga = 773
read-only

# Nouveau noyau :
image = /boot/vmlinuz
root = /dev/hda4
label = Linux
vga = 773
read-only

Le reste doit rester inchangé. Si vous utilisez une distribution avec initrd, votre /etc/lilo.conf ressemblera à ceci :

image=/boot/vmlinuz
label=linux
root=/dev/hdc6
initrd=/boot/initrd.img
append="quiet devfs=mount"
vga=788
read-only

Vous devez la dédoubler et modifier chacun des deux blocs :

# Ancien noyau :
image=/boot/vmlinuz.old
label = mylinux-old
root=/dev/hdc6
initrd=/boot/initrd.img
append="quiet devfs=mount"
vga=788
read-only

# Nouveau noyau :
image=/boot/vmlinuz
label=Linux
root=/dev/hdc6
initrd=/boot/initrd-2.6.7
append="quiet devfs=mount"
vga=788
read-only

Le reste doit demeurer inchangé. Quand vous êtes satisfait, validez vos changements en tapant :
/sbin/lilo -v

Détails GRUB :

Pour grub c'est le fichier /boot/grub/menu.lst, qu'il faut éditer, la section linux (title Linux) ressemble à :
title Linux
root (hd0,3)
kernel /boot/vmlinuz root=/dev/hda4 hdc=ide-scsi hdd=ide-scsi vga=773

Vous devez la dédoubler et modifier chacun des deux blocs :
# Ancien noyau :
title mylinux-old
root (hd0,3)
kernel /boot/vmlinuz.old root=/dev/hda4 hdc=ide-scsi hdd=ide-scsi vga=773

# Nouveau noyau :
title Linux-2.6.7
root (hd0,3)
kernel /boot/vmlinuz root=/dev/hda4 vga=773

Le reste doit rester inchangé.
Si vous utilisez une distribution avec initrd, votre /boot/grub/menu.lst ressemblera plutôt à ceci :

title Linux
kernel (hd0,5)/boot/vmlinuz root=/dev/hdc6 quiet devfs=mount vga=788
initrd (hd0,5)/boot/initrd.img

Vous devez la dédoubler et modifier chacun des deux blocs
[NB : si initrd est un symlink, suffit de le changer sur le nuvo initrd.img] :

# Ancien noyau :
title mylinux-old
kernel (hd0,5)/boot/vmlinuz.old root=/dev/hdc6 quiet devfs=mount vga=788
initrd (hd0,5)/boot/initrd.img

# Nouveau noyau :
title Linux-2.6.7
kernel (hd0,5)/boot/vmlinuz root=/dev/hdc6 quiet devfs=mount vga=788
initrd (hd0,5)/boot/initrd-2.6.7

4) ON REDÉMARRE

Voilà vous pouvez redémarrer, au boot vous choisirez Linux, en cas de difficultés vous pourrez toujours revenir à l'ancienne version en choisissant mylinux-old et recommencer plus consciencieusement.

Liens

News