Bonjour
J'aimerais savoir à quoi ça sert de compiler un noyau.
Et comment fait-on ? ![]()
J'ai regardé la dix de Debian, mais je trouve cela peu claire
J'aimerais essayer pour en savoir plus sur Linux.
Merci d'avance pour vos réponses
De nos jour, pour un utilisateur non developpeur, ca sert plutot a rien.
« J'aimerais savoir à quoi ça sert de compiler un noyau. »
Si tu utilises une distribution de GNU/Linux (autre que Linux From Scratch, si tant est qu'on peut appeler ça une distribution), il y a de fortes chances pour que tu utilises un noyau compilé et empaqueté par les développeurs de ta distro. Ces noyaux sont faits pour couvrir un maximum d'utilisations, mais parfois il peut te manquer des options, par exemple une fonctionnalité qui a été complètement désactivée (et même pas modularisée).
A côté de ça, tu peux aussi vouloir une version plus récente que celle(s) disponible(s) dans les dépôts de ta distribution. C'est mon cas pour Debian Stable, car les modules dédiés au WiFi ont subi un patch qui m'intéresse depuis la version 3.3, or Wheezy ne dispose que d'un noyau 3.2 par défaut.
Mais tu peux très bien vouloir compiler ton noyau pour voir un peu comment se passe une configuration de noyau, par curiosité. Ou pour spécialiser ton noyau pour ton matériel, l'optimiser pour l'utilisation que tu en fais, etc... les raisons sont nombreuses en fait.
« Et comment fait-on ? ![]()
J'ai regardé la dix de Debian, mais je trouve cela peu claire »
Je n'ai regardé que très brièvement la documentation de Debian au sujet de la compilation de son propre noyau, mais pour une fois je suis d'accord, ça pourrait être un peu plus détaillé.
Pour ma part, la première fois que j'ai voulu compiler un noyau j'ai suivi les grandes lignes de ce qui est donné ici:
http://linuxg.net/compilee-kernel-3-9-on-debian-wheezy/
J'ajouterai cependant quelques détails:
C'est une très bonne expérience pour comprendre le principe du noyau Linux. (je n'irais pas jusqu'à dire "le fonctionnement", mais au moins les grandes lignes)
« godrik Voir le profil de godrik
Posté le 2 novembre 2013 à 02:14:17 Avertir un administrateur
De nos jour, pour un utilisateur non developpeur, ca sert plutot a rien. »
Oui, comparé à il y a quelques années, les cas où une compilation du noyau est nécessaire voire indispensable sont vraiment rares pour les "gens normaux"...
Mais même moi, qui ne suis pourtant ni un développeur ni un über-bricoleur (juste un-peu-bricoleur, on va dire), j'ai eu besoin de compiler mon propre noyau au moins deux fois dans mes expériences Linuxiennes, pour les raisons expliquées plus haut entre autres. ![]()
Un autre exemple de "gens qui compilent" (bon ok, ce sont pas des gens lambdas non-plus): OVH. (et probablement tous les hébergeurs qui ont du matos spécifique / assez custom)
Comme ils ont la main sur le matos de leurs machines et les applications potentielles des distros GNU/Linux de stock qu'ils proposent, ils savent ce qui est nécessaire dans les noyaux à fournir. (modules adaptés au hardware, options propres à la virtualisation, toussa)
Merci pour ta réponse ![]()
Donc, je vais encore me renseigner un peu, et je vais essayer ![]()
Selon moi le plus gros avantage (et on en a longuement discuté ici) de compiler son noyau, c'est de pouvoir dire à tes potes "Non, je suis pas sorti ce week-end, j'ai compilé mon kernel
"
![]()
Oui, mais quand t'utilise une Debian stable c'est très probable de devoir utiliser un noyau custom.
Surtout si ton matos a été acheté récemment.
Voila, la compilation est en cour, mon processeur a l'air de bosser énormément ![]()
Apparemment tout ce passe bien, mais il y a tellement de chose qui défile, difficile de lire ![]()
Si t'as une erreur (et pas juste des avertissements qui sont fréquents et normaux), ça va de toute façon couper net la compilation et retourner un statut d'erreur. Il va pas te laisser compiler un noyau s'il risque d'être corrompu.
Monolithique
L'astuce, c'est de rediriger la sortie standard vers un fichier, et la sortie d'erreur vers un autre fichier.
Sous la forme:
macommande 1> stdout.log 2> stderr.log
Tu peux aussi garder un affichage sur l'écran ET envoyer vers un fichier, en utilisant le programme tee (cf. `man tee`).
macommande |tee fichier.log
Compilation terminé, maintenant j'installe ![]()
Merci Google_Bot, je connaissais pas cette astuce ![]()
C'est bon, j'ai installé la dernière version du kernel, ce fut sympas ![]()
Tu porte bien ton pseudo sachant que le noyau linux est monolithique. ![]()
ahah, j'avais hesite a ajouter "et admin systeme". Parceque dans les data center ca arrive de devoir pondre un noyau perso pour des trucs a la con.
La compilation du noyaux c'est un truc plutot difficile et casse couille. C'est pour ca qu'il ne vaut mieux pas compiler. Il faut faire attention a harmoniser le compilateur du noyau et des modules (et de la libc peut etre).
La compilation du noyau c'est plein d'option mystique que tu sais pas ce que ca fait. Et certaines il faut les garder, d'autres ne servent a rien pour toi. Une fois que tu as installe ton noyau a toi, ca veut dire que le noyau va pas se mettre a jour (ou alors ce que tu as fais ca sert a rien). De nos jours les differences de performances sont negligeable sur une machine personnelle. Et le seul interet est le support materiel. Mais la plupart du temps, c'est un module noyau a installer et pas de recompilation n'est necessaire. (sauf materiel au support nouveau comme google_bot l'a raconte).
« La compilation du noyaux c'est un truc plutot difficile et casse couille. »
Euh... j'ai pas l'impression qu'on parle de la même chose là. make-kpkg simplifie la création de .deb à partir du noyau obtenu, donc l'installation à proprement parler, mais la compilation en elle-même est damn-simplifiée avec les Makefile livrés dans les archives de kernel.org...
« Mais la plupart du temps, c'est un module noyau a installer et pas de recompilation n'est necessaire. »
Oui, sauf quand le module pue grave dans ta version actuelle du noyau, alors qu'il a été patché deux versions plus tard.
:vécu:
Mais globalement, c'est clair qu'à part "pour le sport" ou "par curiosité", un end-user ne devrait plus avoir à compiler son propre noyau depuis quelques années maintenant.
J'ai vu par ci par là sur le net, que par exemple, sous Debian Stable, passer d'un noyau 3.2 à plus récent a permis au gars d'obtenir une bien meilleure autonomie par exemple
C'est pas du bashing mais, avoir un 3.2 sur un poste client aujourd'hui c'est quand même antédiluvien ![]()
Il y a des gens qui ne veulent pas un noyau de 80 Mo, c'tout.
C'est pas compliqué en soit, c'est juste long et, comme godrik l'a dit, plein d'options obscures. Y'a des trucs tout con dedans que t'as pas besoin mais que sans elles ça fonctionne pas.
Difficile ?
Je ne voie pas en quoi c'est difficile, franchement ![]()
Peut être que j'avais pas forcement besoin de la faire, mais au moins, je sais le faire désormais, c'est toujours de la connaissance.
J'ajoute que dans de rares cas, un noyau "officiel" peut ne pas voir tous les cores du CPU.
C'est souvent le cas pour les gens qui ont un proc à 8 cores par exemple.
Ou encore sur certains serveur avec du Xeon bi-socket
Une recompilation est alors nécessaire. ![]()