Patched the kernel

This commit is contained in:
2024-10-14 10:35:34 +02:00
parent 1021a93de1
commit ab76c3d432

56
Tp3.md
View File

@@ -8,29 +8,73 @@ Le but du travail est de manipuler le source d'un noyeau linux en le patchant et
### [Q1] : Quelle est la version du noyau sur votre machine de développement ?
[TODO]
Sur ma machine perso je suis sur macos mais sur la machine virtuelle X86 que j'ai mise en place pour ces TP on peut faire la commande `uname -ir`
Et on a ce resultat
```
uname -ir
6.8.0-45-generic x86_64
```
J'ai donc une version stable du kernel linux 6.8.0
## Obtenir les sources du noyau Linux
### [Q2] : Quelle est la dernière version stable du noyau Linux selon le site officiel (indiquez la date de consultation) ?
[TODO]
La dernière version stable au moment ou je regarde sur www.kernel.org le 10 octobre 2024 est la 6.11.3
### [Q3] : Quelle est la dernière version stable longterm du noyau Linux possédant la plus longue EOL (End Of Life) ? Quelle est sa EOL (indiquez la date de consultation) ?
[TODO]
Les versions long term support au moment ou je regarde sur www.kernel.org le 10 octobre 2024 sont:
- la 6.6.56 Support jusqu'à Décembre 2026
- la 6.1.112 Support jusqu'à Décembre 2026
- la 5.15.167 Support jusqu'à Décembre 2026
- la 5.10.226 Support jusqu'à Décembre 2026
Elles expirent donc toutes en décembre 2026... bizarre mais bon on va prendre la plus récente quand même qui dans notre cas es la `6.6.56`
Pour accèder à toutes les versions de linux disponibles et pas juste celles qui sont mises en avance sur kernel.org on peut aller sur https://www.kernel.org/pub/linux/kernel/ et voir directement chaque version.
Dans notre cas on veut la mainline 6.5
`wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.5.tar.xz`
### [Q4] : Est-ce que la combinaison de cette version du noyau et votre chaîne de compilation croisée risque de poser problème ? Justifiez en développant votre réponse.
[TODO]
j'ai trouvé la version des headers de notre version de chaine de compilation et c'est la `4.19.315`pour trouver cette info il suffit de retourner sur le site de bootlin ou on a telechargé cette dernière.
On peut donc voir que nos headers sont bien plus vieux que notre noyeau linux et c'est bien car les noyeaux sont rétrocompatibles. Le problème aurait été si notre chaine de compilation était plus récente que notre noyeau et la ca aurait été problematique.
### [Q5] : Quel est le nombre total de fichiers sources (.c, .h, et .S) du noyau que vous venez de télécharger ? Déterminer cette valeur en utilisant seulement une seule exécution de la commande find (astuces : find accepte largument -o pour réaliser un “ou” logique et pensez à utiliser pipe sur la sortie de find avec le compteur de lignes wc -l).
[TODO]
`find ./ \( -name "*.h" -o -name "*.c" -o -name "*.S" \) | wc -l`
Avec cette commande on peut chercher plusieurs noms de fichiers différents. Dans le cas présent je me suis posé à la racine du kernel.
-name permet de spécifier que l'on veut filtrer sur le nom du fichier
-o permet d'indiquer un OR pour dire que on chercher plusieurs noms de fichiers possibles
Le résultat est : `56888 fichiers` c'est un peu abusé mais bon ca comprend toutes les architetures possibles drivers etc...
### [Q6] : Quels fichiers patch devez vous donc télécharger ?
[TODO]
Pour rappel, on a pas telechargé la version 6.6.56 mais la version mainline 6.5 pour permettre de s'amuser avec les patchs. Mais évidemment si on devait le faire pour de vrai en perdant le moins de temps possible on utiliserait juste git ou on prendrait tout simplement la dernière version directement sur kernel.org
Si on rergarde la nomenclature de notre version 6.6.56 et 6.1.112 on peut voir que la version téléchargée est 5 versions mineures derrière la version cible.
Pour patcher notre kernel on doit donc passer par deux étapes :
1: passer à la version Mainline (ici passer de 6.5 à 6.6)
2: passer de la version Mainline à la version longterm avec les différentes modifications (ici de passer de 6.6 à 6.6.112)
## Préparation à la compilation croisée du noyau