quelle est la différence entre src version 3. * et 3. * - générique

10

Dans mon Linux / Ubuntu local, j'ai deux répertoires pour Linux src

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

J'ai trouvé que le code dans 3.16.0 est beaucoup plus que celui dans 3.16.0-générique. Je me demande pourquoi et comment ces deux répertoires sont différents (et que représentent-ils?)

Richard
la source

Réponses:

1

Les deux répertoires sont fournis par les packages correspondants, qui contiennent les fichiers d'en-tête du noyau. Utilisez la dpkgcommande pour trouver quel package fournit les répertoires.

$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...

Le premier répertoire /usr/src/linux-headers-X.X.XX-XXcomprend des fichiers d'en-tête pour plusieurs architectures, y compris x86, amd64, powerpc et autres, résultant en un plus grand nombre de fichiers et une plus grande taille de package.

L'autre répertoire /usr/src/linux-headers-X.X.XX-XX-genericsemblait contenir principalement des codes sources pertinents pour l'architecture x86 qui sont ciblés pour l'installation locale.

Le package correspondant a fait allusion dans la description, par exemple:

$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
 This package provides kernel header files for version 3.16.0, for sites
 that want the latest kernel headers. Please read
 /usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details

Pour autant que je sache, les deux répertoires ne contiennent que des codes source et non des binaires. Et la différence entre les deux est principalement l' architecture cible des codes sources.

Connexe: Que contient une arborescence source du noyau? Est-ce lié aux en-têtes du noyau Linux?

Réponse étendue (2015.07.30)

puisque les deux stockent le x86code associé, quelle est la différence entre le x86code dans les deux répertoires? - Richard 29 juillet 15 à 19:11

La plupart des répertoires et fichiers contenus dans /usr/src/linux-headers-X.X.XX-XX-genericsont des liens symboliques, qui pointent vers des répertoires et fichiers réels dans /usr/src/linux-headers-X.X.XX-XX. En d'autres termes, on arch/x86trouve dans ces deux répertoires la différence entre les liens réels et symboliques, avec quelques fichiers restants d'en- asmtêtes en *-genericcontrepartie.

Entre ces deux packages, on peut remarquer une autre différence majeure est la présence configet les generatedrépertoires en *-genericcontrepartie.

À ma meilleure compréhension, je pense que le *-genericrépertoire contient les fichiers d'en-tête nécessaires pour configurer et compiler des modules pertinents pour l' x86architecture, sans apporter de modifications accidentelles au répertoire source de linux-headers-x.x.xx-xx.

Surtout, les deux répertoires sont probablement l'approche "propre" de l'empaquetage et de la compilation des paquets sur les plates-formes respectives. Cependant, je ne suis pas en mesure de clarifier cette question.


Note du répondeur: J'ai écrit cette réponse naïvement à l'époque - je ne sais pas ce qui est correct ou incorrect - et certaines explications peuvent manquer entre les deux. Par conséquent, cette réponse est maintenant un wiki communautaire, afin que toute personne ayant une réputation minimale puisse améliorer ce message pour expliquer pleinement la différence.

clearkimura
la source
puisque les deux stockent le x86code associé, quelle est la différence entre le x86code dans les deux répertoires?
Richard
@ Richard J'ai mis à jour ma réponse comme ci-dessus à ma connaissance, aussi simple que possible. Ma réponse peut être considérée comme naïve, vous voudrez peut-être plutôt chercher une meilleure réponse de quelqu'un d'autre.
clearkimura