Page de documentation sur le kernel
Mis en ligne
Système et matériels / Installation et configuration

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :
Reprise du message précédent
Salut,le kernel sorce, c'est la même chose que les archives compressées que l'on trouve ici : https://www.kernel.org/
Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !


bbo_ Membre non connecté
-
- Voir le profil du membre bbo_
- Inscrit le : 09/09/2013
- Site internet
- Groupes :
nmrk.n :
J'avoue ne pas vraiment comprendre la subtilité de la différence entre devel et source ni l'utilité de cette différence
Salut,
La différence est abordé dans un sujet du forum Fedora (désolé, in english). En gros :
- kernel-devel contient des headers et makefile pour compiler les sources de modules externes qui s'appuient sur le noyau (genre le cas des drivers vidéos que cité par Akien).
- kernel-devel est "juste" une dépendance de compilation. A l'exécution, kernel-devel n'est pas utilisé, c'est le noyau qui gère.
Je me permets de tenter une explication, basée sur une analogie.
Je me trompe peut-être mais tu te demandes peut-être : C'est quoi les headers ?
D'abord, une précision sur le noyau. Le noyau est développé en C et permet, entre autre, de communiquer avec le matériel. Mais le noyau n'est pas sensé connaitre tout le matériel qui se fabrique dans le monde. Ainsi, le noyau utilise des modules. Chaque module supporte un matériel. Les modules peuvent être intégré dans le noyau ou chargés depuis l'extérieur.
Tu peux récupérer tout le code source du noyau et de ses modules internes dans kernel-source.
Ceci étant dit, les headers sont des fichiers utilisés dans le langage C pour décrire ce qui doit être fait dans le code source. Par exemple, si le noyau pouvait s'interfacer avec des cafetières pour nous faire du café, kernel-source contiendrait un fichier header "cafetiere.h" qui contiendrait les fonctions :
Code :
allumer_la_cafetiere
eteindre_la_cafetiere
En gros, grâce à ce fichier, l'hypothétique module "faire_du_café" du noyau s'en fout de savoir quel est le modèle de cafetière, il faut juste pouvoir l'allumer et l'éteindre et hop, on peut faire du café de manière générique. De base, admettons que le noyau supporte les cafetières A et B. Dans kernel-source, tu auras un fichier "cafetiere_A.c" et "cafetiere_B.c" qui contiendrait le code pour directement communiquer avec le matériel (avec la prise en compte de leurs spécificités).
Mais toi, tu possèdes la cafetière C qui est non standard et tu souhaites développer un module pour que ca marche.
Tu as 2 stratégies :
- récupérer kernel-source et ajouter ton petit "cafetiere_C.c" : c'est un peu violent car tu devras le refaire à chaque nouvelle mise à jour du noyau (sauf si tu t'appelles Linus)...
- faire un module externe : plus pratique car cela te permet de garder ton noyau binaire actuel. En plus, la politique du noyau Linux est de ne pas casser les interfaces, donc c'est cool.
Ton module va être un fichier "cafetiere_C.c" qui utilise "cafetiere.h" pour définir ce qu'il faut faire. On n'a pas kernel-source à disposition (un peu lourd), mais on a quand même besoin du header. Et là, tu commences peut-être à me voir venir : kernel-devel va contenir mon header sans que j'ai besoin de kernel-source

En fait, le problème est lié à la compilation (étape qui permet de passer du code au binaire). Je schématise mais une fois compilé en binaire, ton kernel ne fournit plus les fichiers headers car tout est devenu du code machine. L'interface "cafetiere" existe bien dans ton kernel mais plus sous forme de header.
Mais lorsque toi, tu voudras compiler ton module, le compilateur te dira "Eh mec, il est où ton cafetiere.h ???". kernel-devel te donne les moyens de passer cette étape de compilation en te donnant les headers. Mais à l'exécution, c'est bien le noyau binaire qui gère ton module.
C'est schématique et l'exactitude technique n'est pas là, mais j'espère que ca t'aide à y voir plus clair.
Sur ce, je vais me prendre un café


Akien Membre non connecté
-
- Voir le profil du membre Akien
- Inscrit le : 12/06/2011
- Groupes :
-
Équipe Mageia
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie