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 →
Ceci est une ancienne révision du document !
Les sources du noyau sont archivées à cette adresse : The Linux Kernel Archives.
cd /usr/src
Puis après avoir récupérer l'adresse du lien de l'archive “tar.xz” par exemple.
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.1.tar.xz
tar -xvJf linux-3.16.1.tar.xz
ls
linux-3.16.1 linux-3.16.1.tar.xz
ls linux-3.16.1
arch Documentation init lib README sound block drivers ipc MAINTAINERS REPORTING-BUGS tools COPYING firmware Kbuild Makefile samples usr CREDITS fs Kconfig mm scripts virt crypto include kernel net security
xz –decompress nom-fichier.xz
Depuis le répertoire parent des fichiers ou dossiers à archiver.
tar -cf fichier.tar dossier-à-archiver/
ou
tar -cf fichier.tar fichier1 fichier2 ...
-c pour archiver
-f pour créer un fichier “filezilla.tar”
Depuis le répertoire parent du fichier à désarchiver:
tar -xf fichier.tar
tar permet aussi de compresser :
-cj : pour compresser du bz2
-cz : pour compresser du gz
-cJ : pour compresser du xz
-cv[j[z][J]] : verbose
-f : pour créer un fichier
tar -cJf fichier.tar.xz fichier1 fichier2
ou
tar -cf fichier.tar dossier/
tar -xvJf fichier.tar.xz
-xvJf : pour décompresser du xz
-xvjf : pour décompresser du bz2
-xvzf : pour décompresser du gz
touch essai1 essai2
Archivage et compression :
tar -cJf essai.tar.xz essai1 essai2
Désarchivage et décompression :
tar -xvJf essai.tar.xz
essai1 essai2
rm essai1 essai2
Par exemple, sur mon système debian:
ls /boot/ | grep ".*linu*"
vmlinuz-3.2.0-4-amd64
./drivers
: contient des dossiers pour les éléments matériels ./fs
: contient des dossiers pour système de fichiers supportés./net
: contient les dossiers pour les différents supports réseaux
Lors de la préparation de la compilation on peut choisir les fonctionnalités que l'on souhaite, et si on les souhaite de façon modulaire ou dans le monobloc.
Voir plus bas
cd /usr/src/linux-source-3.2 && ls
arch crypto include Kconfig Makefile REPORTING-BUGS sound block Documentation init kernel mm samples tools COPYING drivers ipc lib net scripts usr CREDITS fs Kbuild MAINTAINERS README security virt
README
: instructions pour la compilation et information sur la documentationDocumentation
: 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.
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 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).
aller sur https://www.kernel.org/pub/ → “linux” puis v3.x → cliquer sur “Last modified”.
cd /usr/src/ && wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.tar.xz
tar -xvJf linux-3.8.tar.xz
linux-3.8 linux-3.8.tar.xz
Pour télécharger un patch : https://www.kernel.org/pub/
→ linux → kernel → les v… sont les différentes versions.
Par exemple, v3.x : il y a les “ChangeLogs”, les “kernels” (entiers, “linux…”), et les “patch”.
Il existe le patch “patch-3.8.13.xz”
cd /usr/src/ && wget https://www.kernel.org/pub/linux/kernel/v3.0/patch-3.8.13.xz
xz -k -d patch-3.8.13.xz
patch-3.8.13 patch-3.8.13.xz
ou unxz fichier.xz
cd linux-3.8
make kernelversion
3.8.0
patch -p1 < ../patch-3.8.13
make kernelversion
3.8.13
gzip -cd patch-version.gz | patch -p0
bzipp2 -dc patch-version.bz2 | patch -p0
patch -p0 < version
Normalement on devrait lancer “patch” depuis le dossier parent du dossier source, par exemple /usr/src/, ou /Téléchargement dans lesquels il y aurait le fichier “linux-3.8”.
Si on avait lancé “patch” depuis le dossier parent au dossier des sources (“linux-3.8”)
patch -p0 < ../patch-3.8.13
Si on lance patch depuis le dossier des sources (“linux-3.8”)
patch -p1 < ../patch-3.8.13
(../patch-3.8.13 car on n'a pas mis “patch-3.8.13” dans le dossier des sources, on l'a laisser dans le dossier “/urs/src”)
Patcher avec un patch de version supérieure :
S'il est possible à partir d'une version .0 (par exemple 3.8.0)1) à 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). Pour passer à une version supérieure (“upgrader” de 3.8 à 3.9), il faut par exemple appliquer le patch 3.9 à la version 3.8, mais appliquer un patch 3.9 à une version 3.8.4).
Par exemple, pour passer de la version 3.8 à la 3.9 avec le patch “patch-3.9.xz” :
cd /usr/src/
wget https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.9.xz
unxz patch-3.9.xz
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)
tar -xvJf linux-3.8.tar.xz
cd linux-3.8
make kernelversion
3.8.0
patch -p1 < ../patch-3.9
make kernelversion
3.9.0
patch -p1 --dry-run < fichier-du-patch
Par exemple :
cd linux-3.8 && patch -p1 --dry-run < ../patch-3.8.13
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.
Cette version a 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 :
cd linux-3.8 && patch -p1 --dry-run < ../patch-3.8.13
C'est ok donc on lance la commande :
cd linux-3.8 && patch -p1 --dry-run < ../patch-3.8.13
zcat patch-version | patch -p0 -R
patch -B oldfile/ -p0 < patch-file
Récupération de la sauvegarde :
diff -ur linux-version oldfiles/linux-version > recover-version-patch
patch -b -p0 < fichier-patch