logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
utilisateurs:hypathie:tutos:kernel-linux [21/08/2014 13:43]
Hypathie créée
utilisateurs:hypathie:tutos:kernel-linux [22/08/2014 08:46]
Hypathie [Patch]
Ligne 7: Ligne 7:
  
 ===== Introduction ===== ===== Introduction =====
-====Récupération des sources du noyau ==== + 
-===Archives téléchargeables===+==== Récupération des sources du noyau ==== 
 + 
 +=== Archives téléchargeables=== 
 Les sources du noyau sont archivées à cette adresse : [[https://​www.kernel.org/​|The Linux Kernel Archives]].\\ ​ Les sources du noyau sont archivées à cette adresse : [[https://​www.kernel.org/​|The Linux Kernel Archives]].\\ ​
  
Ligne 14: Ligne 17:
   -stable [EOL] : versions qui ne sont plus supportées   -stable [EOL] : versions qui ne sont plus supportées
   -longterm : support étalé dans le temps   -longterm : support étalé dans le temps
-  -stable : pour récupérer le noyau télécharger ​[tar.xz]+  -stable : pour récupérer le noyau téléchargé ​[tar.xz]
   -mainline (...-rc) : version testée   -mainline (...-rc) : version testée
    
Ligne 23: Ligne 26:
 <code root>​wget https://​www.kernel.org/​pub/​linux/​kernel/​v3.x/​linux-3.16.1.tar.xz</​code>​ <code root>​wget https://​www.kernel.org/​pub/​linux/​kernel/​v3.x/​linux-3.16.1.tar.xz</​code>​
 <code root>tar -xvJf linux-3.16.1.tar.xz</​code>​ <code root>tar -xvJf linux-3.16.1.tar.xz</​code>​
-<code root>​ls</​code+<code root>​ls</​code>
 <​code>​ <​code>​
 linux-3.16.1 ​ linux-3.16.1.tar.xz linux-3.16.1 ​ linux-3.16.1.tar.xz
Ligne 41: Ligne 44:
 </​code>​ </​code>​
  
-===Remarques sur Décompression/​Compression=== +=== Remarques sur Décompression/​Compression === 
-  * **Plusieurs ​programme ​de compression**\\ compression/​décompression d'un seul fichier à la fois:​\\ ​+ 
 +  * **Plusieurs ​programmes ​de compression**\\ compression/​décompression d'un seul fichier à la fois:​\\ ​
   * **gunzip** ; pour le format gz   * **gunzip** ; pour le format gz
   * **bzip2** ;  pour le format bz2.   * **bzip2** ;  pour le format bz2.
Ligne 144: Ligne 148:
   - ''​Documentation''​ : sur les fonctionnalités du kernel, très technique : dans cette documentation commencer par lire les fichiers "​INDEX"​ qui sont des résumés de chaque fichier de "​technique"​ de la doc.   - ''​Documentation''​ : sur les fonctionnalités du kernel, très technique : dans cette documentation commencer par lire les fichiers "​INDEX"​ qui sont des résumés de chaque fichier de "​technique"​ de la doc.
  
-=====Patch =====+===== Patch ===== 
 Un patch permet de modifier un logiciel existant.\\ Cela permet corriger un noyau manuellement,​ mais aussi de "​passer à une version supérieure"​.\\ ​ Un patch permet de modifier un logiciel existant.\\ Cela permet corriger un noyau manuellement,​ mais aussi de "​passer à une version supérieure"​.\\ ​
-Par exemple on a un version du noyau 3.8 et on se sert du patch pour la faire passer à la version 3.9.\\ Il y a aussi des patch pour modifier le comportement du kernel par exemple rt (temps réel).+Par exemple on a une version du noyau 3.8 et on se sert du patch pour la faire passer à la version 3.9.\\ Il y a aussi des patch pour modifier le comportement du kernel par exemple rt (temps réel). 
 + 
 +==== Patch correctif ==== 
 + 
 +=== Préparation d'une ancienne version à patcher===
  
-====Patch correctif ==== 
-===Préparation d'une ancienne version à patcher=== 
 aller sur [[https://​www.kernel.org/​pub/​]] -> "​linux"​ puis v3.x -> cliquer sur "Last modified"​. aller sur [[https://​www.kernel.org/​pub/​]] -> "​linux"​ puis v3.x -> cliquer sur "Last modified"​.
  
Ligne 169: Ligne 176:
  
 >Il existe le patch "​patch-3.8.13.xz"​ >Il existe le patch "​patch-3.8.13.xz"​
 +
   * Télécharger le patch :   * Télécharger le patch :
 <code user> <code user>
Ligne 225: Ligne 233:
 __**Patcher avec un patch de version supérieure**__ :\\  __**Patcher avec un patch de version supérieure**__ :\\ 
  
-Par exemple pour la version 3.8 on voulait appliquer un patch 3.9.4, il faut d'​abord ​passer ​à la version ​3.9 (sur une 3.8.0 -> patch -p1 < 3.9).\\  +S'il est possible à partir d'​une ​version ​.0 (par exemple ​3.8.0)((qu'​on trouve sous le nom de 3.9 sur le site "Index of/​pub/​kernel"​)) à un correctif éloigné (par exemple 3.8.13)pour une version déjà corrigée (par exemple 3.8.1) ​il faut passer ​par tous les intermédiaires (par exemple ​3.8.2 ; 3.8.3 ... 3.8.13). 
-Puis à partir ​de la 3.9.0on peut appliquer un patch 3.9.4.+Pour passer ​à une version supérieure ("​upgrader" ​de 3.8 à 3.9), il faut par exemple appliquer le patch 3.9 à la version 3.8mais appliquer un patch 3.9 à une version 3.8.4).
  
-**__Lancer un test de patch__** ​:+Par exemple, pour passer ​de la version 3.8 à la 3.9 avec le patch "​patch-3.9.xz" ​: 
 + 
 +<code root>cd /​usr/​src/</​code>​ 
 +<code root>​wget https://​www.kernel.org/​pub/​linux/​kernel/​v3.x/​patch-3.9.xz</​code>​ 
 +<code root>​unxz patch-3.9.xz</​code>​ 
 +Décompresser "​linux-3.8.tar.xz"​ (ce qui supprime l'​ancienne "​linux-3.8",​ qui était une 3.13, du fait qu'on avait déjà appliqué le patch) 
 +<code root>tar -xvJf linux-3.8.tar.xz</​code>​ 
 +<code root>cd linux-3.8</​code>​ 
 +<code root>​make kernelversion</​code>​ 
 +<​code>​3.8.0</​code>​ 
 +<code root>​patch -p1 < ../​patch-3.9</​code>​  
 +<code root>​make kernelversion</​code>​ 
 +<​code>​3.9.0</​code>​
  
-<code root>​patch -p1 -dry-run < fichier-du-patch</​code>​ 
-S'il est demandé "​Reversed (or previous applied) patch detected)! Assume -R? [n]"​\\ ​ 
-Il faut taper **''​y''​** pour avancer jusqu'​au bout. Ce message apparaît quand on applique un patch d'une version supérieure ou q'un a déjà appliqué le patch, ou autre erreur. 
 </​note>​ </​note>​
 +
 +===Lancer un test avant d'​appliquer un patch===
 +
 +<​code>​patch -p1 --dry-run < fichier-du-patch</​code>​
 +
 +Par exemple : 
 +<code root>cd linux-3.8 && patch -p1 --dry-run < ../​patch-3.8.12</​code>​
 +Il est demandé "​Reversed (or previous applied) patch detected)! Assume -R? [n]"​\\ ​
 +Il faut taper **''​y''​** pour avancer jusqu'​au bout. Ce message apparaît quand on applique un patch d'une version supérieure ou qu'on a déjà appliqué un patch, ou autre erreur.
 +Cette version avait déjà été patchée. On supprime le dossier source "​linux-3.8"​ et on décompresse "​linux-3.8.tar.xz"​.
 +
 +On essaie à nouveau : 
 +<code root>cd linux-3.8 && patch -p1 --dry-run < ../​patch-3.8.12</​code>​
 +
 +C'est ok donc on lance la commande :
 +
 +<code root>cd linux-3.8 && patch -p1 --dry-run < ../​patch-3.8.12</​code>​
 +
 +====Revenir à une version antérieure ("​dé-patcher"​) ====
 +
 +<​code>​patch -p0 -R < ./​patch-version-à-retirer/​code>​
 +
 +Par exemple, à la version "​linux-3.8",​
 +<code root>cd linux-3.8</​code>​
 +<​code>​make kernelversion</​code>​
 +<​code>​3.8.0</​code>​
 +
 +  *le patch-3.8.13((''​cd linux-3.8''​ puis ''​patch -p1 < ../​patch-3.8.13''​ puis ''​make kernelversion''​ on a bien ''​3.8.13''​))
 +
 +Pour passer de la version linux-3.8.13 à la version linux-3.8.0,​ on fait :
 +
 +<code root>/​usr/​src/​linux-3.8#​ patch -p1 -R < ../​patch-3.8.13</​code>​
 +
 +Et voilà :
 +<code root>​make kernelversion</​code>​
 +<​code>​3.8.0</​code>​
 +
 +
 +====Effectuer une sauvegarde avant d'​appliquer un patch====
 +===Création d'une sauvegarde des sources à patcher===
 +
 +<​code>​patch -p0 -B fichier-sauvegarde/​ -b < ./​patch-version</​code>​
 +
 +Par exemple, avant d'​appliquer un patch,
 +
 +<code root>cd linux-3.8 && mkdir save-linux-3.8</​code>​
 +
 +  * Puis on applique le patch ainsi :
 +<code root>​patch -p1 -B save-linux-3.8/​ -b < ../​patch-3.8.13</​code>​
 +
 +**On vérifie la nouvelle version** :
 +<code root>​make kernelversion</​code>​
 +<​code>​3.8.13</​code>​
 +
 +Et on a une sauvegarde des sources de "​linux-3.8.0":​
 +<code root>ls save-linux-3.8/</​code>​
 +<​code>​arch Documentation ​ include lib  ​ net     sound
 +block drivers ​       ipc Makefile ​ scripts ​  tools
 +crypto fs  ​      ​kernel mm  ​ security ​ virt</​code>​
 +
 +===Revenir à la version "​linux-3.8.0"​ avec la sauvegarde :===
 +
 +  * créer un dossier de sauvegarde des modifications :
 +<​code>​diff -ur linux-version oldfiles/​linux-version > fichier-de-récupération-du-patch</​code>​
 +
 +>"​fichier-de-récupération-du-patch"​ est un fichier contenant une comparaison entre la sauvegarde de linux-3.8.0 et le dossier actuel (les sources patchée en linux-3.8.13).
 +> -r : indiquer des répertoires
 +> -u : 
 +
 +Par exemple :
 +<code root>cd /​usr/​src/</​code>​
 +<code root>​diff -ur . ./​save-linux-3.8/​ > patch-save</​code>​
 +
 +  * Se servir de ce fichier de comparaison pour récupérer l'​ancienne version du noyau :
 +
 +<code root>​patch -p0 < ./​patch-save</​code>​
 +
 +**Vérifier** :
 +<code root>​make kernelversion</​code>​
 +<​code>​3.8.0</​code>​
 +
 +====Autre méthode pour créer une sauvegarde lors de l'​application d'un patch====
 +
 +Il s'agit d'​appliquer le patch en demandant la création d'un dossier "​Makefile.orig"​ dans le dossier le nouveau dossier des sources patché.
 +
 +Par exemple, application à la version linux-3.8.0
 +<code root>​make kernelversion</​code>​
 +<​code>​3.8.0</​code>​
 +
 +du patch-3.8.13 :
 +<code root>​patch -p1 -b < ../​patch-3.8.13</​code>​
 +
 +Vérification de la nouvelle version du noyau:
 +<code root> make kernelversion</​code>​
 +<​code>​3.8.13</​code>​
 +
 +Le fichier "​Makefile.orig"​ a été créé dans le dossier des sources :
 +<code root>​ls</​code>​
 +<​code>​arch  ​      ​drivers Kbuild ​      ​Makefile.orig ​  ​samples  ​     usr
 +block  ​      ​firmware ​ Kconfig ​     mm       save-linux-3.8 ​ virt
 +COPYING ​       fs kernel ​      ​net  ​     scripts
 +CREDITS ​       include lib       patch-save ​     security
 +crypto  ​      init MAINTAINERS ​ README  ​     sound
 +Documentation ​ ipc Makefile ​    ​REPORTING-BUGS ​ tools</​code>​
 +
 +===Récupération de la version originale à partir de ce dossier "​Makefile.orig"​===
 +
 +Il faut utiliser un script shell.
 +<code bash>
 +for i in $(find linux-3.8 | grep "​orig"​)
 +do
 +DOSSIER=$(echo $i | sed '​s/​\.orgig//'​)
 +mv -f $i $DOSSIER
 +done
 +</​code>​
 +
  
 =====Personnalisation du noyau ===== =====Personnalisation du noyau =====
utilisateurs/hypathie/tutos/kernel-linux.txt · Dernière modification: 24/08/2014 07:39 par Hypathie

Pied de page des forums

Propulsé par FluxBB