Les kernel-header
packages de distribution contiennent, comme leur nom l'indique, uniquement les fichiers d'en-tête du noyau (plus la plomberie nécessaire) qui sont nécessaires pour construire des logiciels comme les modules du noyau.
Vous ne devriez pas vous attendre du tout à trouver des fichiers binaires dans un répertoire source du noyau , à l'exception de la sortie de génération. (Si vous configurez et construisez un noyau vous-même, le répertoire source du noyau contiendra également les objets compilés, les modules, le noyau construit lui-même et quelques autres éléments binaires qui le font fonctionner.)
KConfig
fichiers sont une description des options de configuration du noyau (et leurs dépendances) disponibles pour un répertoire / module donné.
En dehors de cela, c'est tout (principalement) du code source C, des fichiers d'en-tête et Makefile
s. Il y a quelques scripts d'assistance ici et là, ainsi que la source de l'assembly.
Les packages d'en-tête (ce que vous avez installé) ne contiennent que la partie d'en- tête de ce qui précède (et pas tout cela - uniquement les en-têtes "exportés"), et une partie de l'infrastructure de construction. Donc, ce que vous voyez est attendu. Packages d'en-tête ne contiennent pas de code source C (à l'exception de certains stubs et du code d'infrastructure de construction). L'intérêt d'avoir ce type de paquet est d'économiser de l'espace (et de la bande passante) - l'ensemble de l'arborescence des sources du noyau Linux est plutôt volumineux et complètement inutile si vous n'avez pas l'intention de compiler le noyau vous-même. Les packages d'en-tête sont construits et expédiés par des distributions pour fournir exactement ce qu'il faut pour construire des modules, mais pas plus. (Ils ne contiennent certainement pas le noyau compilé.)
Répondre à votre commentaire: les packages d'en-tête ne se déplacent nulle part. Ils sont construits pour des versions spécifiques du noyau, emballés dans un répertoire spécifique, et c'est tout. Ce n'est qu'un ensemble de fichiers. (Notez que les packages d'en-tête n'ont pas nécessairement la même version que les packages binaires stables actuels du noyau - les packages d'en-tête sont génériques et peuvent être en retard par rapport au noyau que vous utilisez. Ils ne doivent cependant pas provenir d'un noyau version plus récente que le noyau installé (ou cible) actuel.)
Les fichiers binaires du noyau installés sont généralement installés dans le /boot
répertoire, avec les fichiers binaires du chargeur de démarrage et les fichiers de configuration. (Il s'agit parfois d'un système de fichiers indépendant, non monté par défaut.) Le nom exact des fichiers dépend du noyau et de la distribution. (Il en va de même pour le chargeur de démarrage.)
Les modules du noyau installés résident dans des sous-répertoires de:
/lib/modules/`uname -r`/
Ainsi, par exemple sur mon système, ils sont actuellement en
/lib/modules/3.1.4-gentoo/
Code source complet du noyau : Sur Ubuntu, si vous voulez que les sources complètes du noyau construisent vous-même un noyau, vous devez installer en suivant les instructions ici .
Vous pouvez également télécharger une archive tar source kernel.org
et la décompresser quelque part (n'écrasez pas les fichiers installés par Ubuntu si vous utilisez cette archive tar, gardez vos fichiers personnels et ceux gérés par RPM séparément).
/usr/src/linux
est un endroit traditionnel pour mettre des sources du noyau, mais rien ne vous empêche de mettre des sources du noyau ailleurs. Ce chemin n'est souvent qu'un lien symbolique vers un répertoire. par exemple, je l'ai sur ma machine:
$ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec 7 17:03 /usr/src/linux -> linux-3.1.4-gentoo
Le lien symbolique est là pour simplifier la construction d'applications qui dépendent de la source du noyau. Vous liez ce chemin à votre noyau en cours d'exécution (ou cible) afin de ne pas avoir à spécifier la version exacte ou les informations de chemin lorsque vous créez un module hors de l'arborescence. Aide au moins un tas de distributions basées sur la source.