Linux-image, linux-headers, linux-kernel-headers,

Hello,

. quelqu’un pourrait me synthétiser la différence entre ces trois packages, quel est leur role principal?
aussi, m’indiquer si c’est vital ou optionnel, ça serait chouette:

linux-image
linux-headers
linux-kernel-headers

. dernière question, plus particulière, pourquoi ai-je un package:

linux-headers-2.6.16-2-686 de 11.5 Mb
linux-headers-2.6.16-2 de 16.6 Mb

puis-je en supprimer un des deux?
si oui, lequel?
si non, pourquoi pas?

merci pour vos lumieres.

j’ai dejà fait une pipo la dessus, mais je ne le retrouve plus.
quand tu fais une compilation qui necessite les headers du noyau, il va chercher les .h dans /usr/src/linux
Si tu as compilé ton noyau, /usr/src/linux pointe en général vers les sources de ton noyau, et c’est là qu’il prend les .h .
A défaut, tu peux faire pointer /usr/src/linux vers le répertoire ou sont installés tes headers.

Voila l’utilité essentielle des paquets [kernel|linux]-image et [kernel|linux]-headers.

Maintenant, comment sont ils construits: au moment d’un make-kpkg buildpackage, make-kpkg produit dans /usr/src une serie de 4 .deb:
-image (le noyau binaire à installer pour rebooter dessus),
-sources (les sources éventuellement retouchées avec lesquelles tu as compilé, pour les réinstaller eventuellement sur une autre machine,
-headers (qui contient les .h, pour compiler des modules sur une autre machine ou tourne le -image, sans avoir besoin de reinstaller les sources complètes),
-doc

Une image, sans les headers ou les sources, est limitée aux modules déjà compilés. Donc, si ton noyau est bien un 2.6.16-2-686, que tes sources ne sont pas déployées, et que tu veux pouvoir continuer à compiler des modules si nécessaires, il te faut un des deux fichiers headers (le 2.6.16-2 tout court contient des headers pour d’autres architectures que la tienne - inutiles donc - , et c’est pour ça qu’il est plus gros et que je le supprimmerais plutot que l’autre).

heu …

merci pour ce savant bilan :slightly_smiling:

mais je reconnais etre un peu largué …

serait-il possible d’etre plus clair et plus simple?

pour info, je ne compile pas mon noyau ni aucun module; je n’en ai absolument pas besoin ni absolument pas l’envie; d’où l’utilisation des packages.

le seul truc que j’ai fais est d’installer le noyau via apt et probablement une source ou l’autre pour installer les drivers nvidia.

mais lors d’une recente mise à jour, j’ai remarqué le double emploi cité ci-dessus ainsi que la taille importante de tous ce paquets.

je comprends bien que j’ai besoin du kernel linux pour que ma debian continue a fonctionner mais le reste? est-ce encore necessaire?

merci.

quote="MattOTop"Une image, sans les headers ou les sources, est limitée aux modules déjà compilés. Donc, si ton noyau est bien un 2.6.16-2-686, que tes sources ne sont pas déployées, et que tu veux pouvoir continuer à compiler des modules si nécessaires, il te faut un des deux fichiers headers (le 2.6.16-2 tout court contient des headers pour d’autres architectures que la tienne - inutiles donc - , et c’est pour ça qu’il est plus gros et que je le supprimmerais plutot que l’autre).[/quote]je peux pas faire plus simple. :wink:

alors …

si je supprime linux-headers-2.6.16-2 il veut egalement m’enlever linux-headers-2.6.16-2-686.

mais pas l’inverse.

si je comprend bien (et mieux donc), le premier est une base commune (Common header files for Linux kernel 2.6.16), le second specifique à mon architecture 686 (Header files for Linux kernel 2.6.16 on PPro/Celeron/PII/PIII/P4 machines).

la question est donc actuellement: puis-je supprimer les 2 sans faire de dégats, ou, posé differement, est-ce que ces 2 packages sont necessaires pour le bon fonctionnement de debian?

finallement, quid de linux-kernel-headers (Linux Kernel Headers for development) qui sont egalement des “headers” mais en plus pour le developpement ( :smt017 ).

Mici (désolé, sur ce coup là, je suis largué :smt108 ).

ok, bon, je me réponds:

j’ai supprimé linux-headers-2.6.16-2 et linux-headers-2.6.16-2-686 (= +/- 28mo les 2 packages).

on verra au prochain démarrage si ça pleure ou pas …

par contre, je laisse linux-kernel-headers car si je l’enleve, apt veut egalement m’enlever:

[quote]build-essential
g++
g+±4.0
g+±4.1
libc6-dev
libstdc++6-4.0-dev
libstdc++6-4.1-dev[/quote]

et ça, je suppose que c’est pas bon …

cheers.

ça va pas pleurer au prochain redémarrage, mais quand tu auras besoin de compiler un module wifi ou le dernier module nvidia pour ton noyau, tu va pleurer parceque tu n’auras plus les headers correspondant à ton noyau…

Sinon, tu as mieux compris que moi le rôle des headers generiques (je croyais qu’ils etaient liés à un noyau generique 386 installé en parallèle).
les linux-libc-headers sont AMA de la même manière les headers communs à tous les noyaux.