Trucs:Mise à jour du noyau : conserver la config de votre distrib

De Lea Linux
Aller à la navigation Aller à la recherche
Jice<jice chez lea-linux point org>

Méthode très simple pour mettre à jour votre noyau avec par exemple un noyau de tests ou une version plus récente, en conservant la configuration du noyau de votre distribution (Mandrake dans cet exemple) :
Il suffit de recopier l'ancien fichier .config dans les nouvelles sources, et de recompiler.

Détail de la "méthode" :
(ici, on passe du noyau 2.2.17-mdk au 2.4.0-test11, voir la remarque 2 ci-dessous pour les "petites" montées de version)

# cd /usr/src
# rm linux
# tar xvzf /le_chemin/linux-2.4.0-test11.tar.gz
# mv linux linux-2.4.0-test11
# ln -s linux-2.4.0-test11 linux
# cp linux-2.2.17-mdk/.config linux-2.4.0-test11

Bien sûr, il faut auparavant avoir installé les sources du noyau 2.2.17-mdk et récupéré le tar.gz ou tar.bz2 su nouveau noyau.

Il suffit ensuite de faire :
# cd linux
# make dep
# make bzImage
# make modules
# make install
# make modules_install

et la config mdk sera conservée tout en upgradant le noyau.

Remarque : vous pouvez vérifier/modifier la configuration du noyau en tapant make xconfig avant le make dep ci-dessus.

Merci à Manuel Flury

Remarque 2 : Si la montée de version n'est pas très grande (ex : 2.2.16 -> 2.2.18), plutôt que de télécharger toutes les sources du nouveau kernel (au moins 12 Mo quand même), vous pouvez récupérer simplement les patches qui séparent la version de votre kernel actuel de la nouvelle version (p.ex. 2,4 Mo pour passer du noyau 2.2.17 au 2.2.18, 2,4Mo+736Ko pour passer du 2.2.16 au 2.2.18, etc.), puis les appliquer un par un. Ensuite, il ne vous reste plus qu'à le recompiler !
Le patch pour passer de la version 2.x.y à la version 2.x.y+1 a pour nom patch-2.x.y+1.bz2. Ainsi, pour passer de la 2.2.16 à la 2.2.18, téléchargez patch-2.2.17.bz2 et patch-2.2.18.bz2, appliquez les dans cet ordre sur les sources du 2.2.16 (ce qui vous donne les sources du 2.2.18 en fait), entrez dans les sources (cd linux), puis recompilez-les comme ci-dessus (make dep, etc.).

Afin de patcher le noyau :

  • décompressez le patch : bunzip2 patch-2.x.y.bz2
  • allez dans /usr/src/linux (cd /usr/src/linux), puis faites :
  • # patch -p1 le/chemin/vers/le/patch-2.x.y

New : Yves Perrey m'a transmis cette astuce pour patcher facilement le noyau :
Pour patcher un kernel, il suffit de stocker les divers patches du noyau dans un répertoire (/usr/src/linux peut faire l'affaire) et de taper la commande depuis le répertoire ou sont les patches :
# /usr/src/linux/scripts/patch-kernel
ça se débrouille avec les diverses versions des patches - dans le cas de patches multiples pour upgrader de plus d'une version - et les diverses compressions utilisées pour lesdits patches - pas besoin de décompresser avant d'appliquer le script, que les patches soit au format gzip ou bzip2 (voire plain text, i.e. non compressés).

C'est valable pour les distributions noyau prises chez kernel.org et mirroirs. Pour les distros type RedHat, il y a de fortes chances que les patches échouent car les sources du noyau livré par RedHat ne concernent que la plateforme de la distro (i.e. i386 par exemple) et pas les autres (si i386, exit le code bas niveau pour PPC, Alpha, ARM, etc...), en tout cas en RH5.2 - depuis je ne suis pas allé fouiller sous /usr/src/linux/*/asm...

Hyperefficace en tout cas que ce script patch-kernel ;-)
En esperant que ça aide ou informe (un peu :) )