Journal Compiler son kernel dans /usr/src/linux, c'est mal ?

Posté par  .
Étiquettes :
0
5
nov.
2003
Depuis quelques années, j'ai l'habitude de compiler les sources du noyau dans /usr/src/linux avec néanmoins un soupçon de mauvaise conscience à cause du message d'un certain Linus Torvalds qu'une moule chevelu(e) et barbu(e) m'avait signalé :
http://lists.insecure.org/linux-kernel/2000/Jul/4404.html(...)
Or donc, en faisant le ménage dans mes signets, je suis retombé (boum !) sur ce message écrit en californien de bas étage mais bon, c'est un travailleur émigré, on ne va pas lui sucrer sa gree card pour ça.
La question qui se pose est de savoir si le risque signalé par ce Linus Torvalds (ah ça, ma bonne Germaine, c'est pas un nom bien de chez nous !) est avéré. En effet, je n'ai, jusqu'à ce jour, constaté aucun problème.
Y'a-t-il dans l'assistance une moule (barbu(e) et chevelu(e) comme il se doit) qui pourrait éclairer ma lanterne ? Me remettre dans le droit chemin de l'obéissance stricte du dogme ?
  • # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

    Posté par  (site web personnel) . Évalué à 1.

    Ben moi je te dis ce que je fais personnelement c'est que je mets dans mon home.
    Les noyaux recents ( 1ans peut-etre plus) font un lien dans le repertoire des modules vers les sources.
    Ainsi chaque 'truc' que tu veux ajouter au noyau peut sans te le demander aller voire dans les sources.
    Mais c'est mon avis perso.
  • # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

    Posté par  . Évalué à 1.

    Mais dans ce cas, comment faire quand on est sous Debian et qu'on utilise make-kpkg, qui a besoin que les sources du noyau soient dans /usr/src/linux ?
    • [^] # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

      Posté par  . Évalué à 3.

      Le problème n'est pas que les sources du noyau se trouvent dans /usr/src/linux ! Le problème existe si les dossiers /usr/incude/{linux,asm} sont des liens vers les dossier du noyau dans /usr/src/linux/include. Normalement, ces dossiers ne doivent pas être liés à /usr/src/linux/include : ils doivent contenir une copie des entêtes du noyau utilisés au moment de la compilation de la glib du système ! C'est ce que fait Linux Slackware qui a installe une copie des entêtes du noyau sans liens vers /usr/src/linux.
    • [^] # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

      Posté par  . Évalué à 1.

      Pas besoin de décompresser le noyau dans /usr/src sous Debian.
      J'ai toujours utilisé make-kpkg en décompressant dans /tmp/ ou dans ma maison :-) en tant qu'utilisateur non privilégier les sources du noyau, je n'ai jamais eu de problème en rapport avec cela :-)

      R.
  • # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

    Posté par  . Évalué à 5.

    > Y'a-t-il dans l'assistance une moule (barbu(e) et chevelu(e) comme il se doit) qui pourrait éclairer ma lanterne ? Me remettre dans le droit chemin de l'obéissance stricte du dogme ?

    Quand tu compiles ta glibc, elle utilise les entêtes de la version installé du noyau : les entêtes dans /usr/src/linux/include (sauf si tu as utilisé le paramètre "--with-headers" lors du "./configure") sont utilisés. Certaines distributions incluent donc un lien /usr/include/asm qui pointe vers /usr/src/linux/include/asm (et aussi un lien /usr/include/linux qui pointe vers /usr/src/linux/include/linux).

    Or si tu installes un nouveau noyau dans /usr/src/linux, le nouveau contenu de /usr/src/linux/include/{asm,linux} ne correspond pas forcément à l'ancien contenu : des structures ont pu radicalement changer. Ainsi, si tu compiles un programme sur ton système, il utiliseras les nouvelles structures avec les appels systèmes de la libraries C qui s'attendent à recevoir l'ancienne version de la structure : évidemment, ce n'est pas correct.

    La solution ? Normalement, une distribution bien faite doit copier les entêtes du noyau utilisés pour la compilation de la glibc dans /usr/include : ainsi, sur une architecture ix86, le lien /usr/include/asm doit être un dossier ou un lien qui pointe sur le dossier /usr/include/asm-i386 (dossier qui contient une copie des entêtes du noyau linux utilisé lors de la compilation de la glibc). De même pour /usr/include/linux qui doit être un dossier et non pas un lien vers /usr/src/include/linux.

    Pour information, Linux Slackware (depuis la version 9.x au moins) n'est pas concernée par ce problème dans la mesure ou les entêtes utilisés pour la compilation de la glibc sont regroupés dans leur propres paquetage (kernel-headers) et ils sont installés dans /usr/include sans aucun lien symbolique avec /usr/src/linux/include.
    • [^] # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

      Posté par  . Évalué à 1.

      Merci pour cette réponse !
      Je vais aller acheter un tube d'aspirines et potasser ! :-)
    • [^] # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

      Posté par  (site web personnel) . Évalué à 1.

      Très intéressant.

      Après vérification, cela semble être aussi le cas sous Mandrake grâce au paquetage glibc-devel : "This package also includes the C header files for the Linux kernel. The header files define structures and constants that are needed for building most standard programs. The header files are also needed for rebuilding the kerne".
    • [^] # Re: Compiler son kernel dans /usr/src/linux, c'est mal ?

      Posté par  . Évalué à 1.

      Arès examen, il apparaît que, pour la Debian Woody, les en-têtes avec lesquels la glibc a été compilée sont dans les dossiers /usr/include/{asm,linux} et sont fournis par le paquet libc6-dev.
      In n'y a donc aucun lien avec les en-têtes actuels du noyau.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.