[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:slackbook:linux_kernel [2014/11/10 15:53 (UTC)] – [Pourquoi et comment compiler un noyau] ellendhelfr:slackbook:linux_kernel [2017/06/16 05:30 (UTC)] (Version actuelle) – [Pourquoi et comment compiler un noyau] pierreaverseng
Ligne 4: Ligne 4:
 ===== Que fait le noyau Linux ? ===== ===== Que fait le noyau Linux ? =====
  
-Vous avez probablement entendu des gens parler de compilation du kernel ou de construction du kernel, mais qu'est-ce qu'est un kernel exactement et à quoi sert-il ? Le kernel est le centre de votre ordinateur. C'est la fondation du système d'exploitation tout entier. Le kernel joue le rôle d'un pont entre le matériel et les applications. Cela signifie que le kernel est (généralement) la seule partie logicielle responsable de la gestion des composants matériels de votre ordinateur. C'est le kernel qui ordonne à votre disque dur de rechercher certaines données. C'est le kernel qui ordonne à votre carte réseau d'envoyer des changements rapides de courant. Le kernel est aussi à l'écoute du matériel. Lorsque la carte réseau détecte un ordinateur distant envoyant de l'information, elle renvoie cette information au kernel. Cela fait du kernel le logiciel le plus simple et le plus complexe de votre ordinateur.+Vous avez probablement entendu des gens parler de compilation du kernel ou de construction du kernel, mais qu'est-ce qu'un kernel exactement et à quoi sert-il ? Le kernel est le centre de votre ordinateur. C'est la fondation du système d'exploitation tout entier. Le kernel joue le rôle d'un pont entre le matériel et les applications. Cela signifie que le kernel est (généralement) la seule partie logicielle responsable de la gestion des composants matériels de votre ordinateur. C'est le kernel qui ordonne à votre disque dur de rechercher certaines données. C'est le kernel qui ordonne à votre carte réseau d'envoyer des changements rapides de courant. Le kernel est aussi à l'écoute du matériel. Lorsque la carte réseau détecte un ordinateur distant envoyant de l'information, elle renvoie cette information au kernel. Cela fait du kernel le logiciel le plus simple et le plus complexe de votre ordinateur.
  
 ===== Travailler avec les modules ===== ===== Travailler avec les modules =====
Ligne 53: Ligne 53:
 La plupart des utilisateurs de Slackware n'auront jamais besoin de compiler un noyau. Le noyau //huge// (en anglais : "gros") et le noyau //generic// ("générique") contiennent potentiellement tout ce dont vous aurez besoin.  La plupart des utilisateurs de Slackware n'auront jamais besoin de compiler un noyau. Le noyau //huge// (en anglais : "gros") et le noyau //generic// ("générique") contiennent potentiellement tout ce dont vous aurez besoin. 
  
-Cependant, certains utilisateurs peuvent avoir besoin de compiler un noyau. Si votre ordinateur dispose de matériel dernier cri, un nouveau noyau peut offrir une meilleur prise en charge de celui-ci. Parfois, un correctif (//patch//) du noyau peut être disponible pour corriger le problème que vous rencontrez. Dans ces situations, la compilation d'un nouveau noyau probalement justifiée. Les utilisateurs souhaitant simplement utiliser la version la plus à jour ou ceux pensant qu'un noyau personnalisé leur procurera de meilleurs performances peuvent bien sûr le faire, mais il est peu probable qu'ils ressentent une amélioration significative.+Cependant, certains utilisateurs peuvent avoir besoin de compiler un noyau. Si votre ordinateur dispose de matériel dernier cri, un nouveau noyau peut offrir une meilleur prise en charge de celui-ci. Parfois, un correctif (//patch//) du noyau peut être disponible pour corriger le problème que vous rencontrez. Dans ces situations, la compilation d'un nouveau noyau probablement justifiée. Les utilisateurs souhaitant simplement utiliser la version la plus à jour ou ceux pensant qu'un noyau personnalisé leur procurera de meilleures performances peuvent bien sûr le faire, mais il est peu probable qu'ils ressentent une amélioration significative.
  
 Si vous pensez que compiler votre propre noyau est une tâche que vous voulez ou devez effectuer, ce chapitre devrait vous guider pour chacune des différentes étapes. Compiler et installer un noyau n'est pas si difficile, mais il existe un certain nombre d'erreurs que vous pourriez commettre en chemin, et plusieurs peuvent empêcher votre ordinateur de démarrer et générer une certaine frustration. Si vous pensez que compiler votre propre noyau est une tâche que vous voulez ou devez effectuer, ce chapitre devrait vous guider pour chacune des différentes étapes. Compiler et installer un noyau n'est pas si difficile, mais il existe un certain nombre d'erreurs que vous pourriez commettre en chemin, et plusieurs peuvent empêcher votre ordinateur de démarrer et générer une certaine frustration.
  
-La première étape est de s'assurer que vous avez le code source du noyau installé sur votre système. The paquet pour le code source du noyau est inclus dans la série //"k"// de l'installateur Slackware, ou vous pouvez télécharger une autre version depuis [[http://www.kernel.org/|http://www.kernel.org/]]. Traditionellement, les sources du noyau sont situées dans ''/usr/src/linux'', qui est un lien symbolique pointant vers la version spécifique du noyau utilisé, mais cela n'est en aucun cas gravé dans le marbre. Vous pouvez copier le code source du noyau potentiellement n'importe où sans aucun problème.+La première étape est de s'assurer que vous avez le code source du noyau installé sur votre système. The paquet pour le code source du noyau est inclus dans la série //"k"// de l'installateur Slackware, ou vous pouvez télécharger une autre version depuis [[http://www.kernel.org/|http://www.kernel.org/]]. Traditionnellement, les sources du noyau sont situées dans ''/usr/src/linux'', qui est un lien symbolique pointant vers la version spécifique du noyau utilisé, mais cela n'est en aucun cas gravé dans le marbre. Vous pouvez copier le code source du noyau potentiellement n'importe où sans aucun problème.
  
 <code> <code>
Ligne 65: Ligne 65:
 </code> </code>
  
-L'étape la plus complexe lors de la préparation du noyau est sa configuration. Il existe des centaines d'options, qui pour la plupart peuvent être compilées de manière optionelle sous forme de modules. Cela signifie qu'il existe des centaines de façons de compiler un noyau. Heureusement, il existe quelques astuces utiles qui peuvent vous éviter trop de soucis. Le fichier de configuration du noyau se nomme ''.config''. Si vous êtes particulièrement audacieux, vous pouvez modifier ce fichier avec votre éditeur de texte, mais je recommande très fortement d'utiliser les outils proposés par le noyau pour modifier ''.config''.+L'étape la plus complexe lors de la préparation du noyau est sa configuration. Il existe des centaines d'options, qui pour la plupart peuvent être compilées de manière optionnelle sous forme de modules. Cela signifie qu'il existe des centaines de façons de compiler un noyau. Heureusement, il existe quelques astuces utiles qui peuvent vous éviter trop de soucis. Le fichier de configuration du noyau se nomme ''.config''. Si vous êtes particulièrement audacieux, vous pouvez modifier ce fichier avec votre éditeur de texte, mais je recommande très fortement d'utiliser les outils proposés par le noyau pour modifier ''.config''.
  
-À moins que vous ne soyez déjà expérimenté avec la configuration du noyau, vous devriez toujours partir sur une base solide et la modifier. Cela vous évitera de passer à côté d'une option importante qui vous obligerait à recommencer encore et encore jusqu'à ce que les choses fonctionnent. Le meilleur des fichiers ''.config'' repose sur celui utilisé par les noyau par défaut de Slackware. Vous pouvez les trouver sur les disques d'installation de Slackware ou dans le répertoire ''kernels/''de votre mirroir favori.+À moins que vous ne soyez déjà expérimenté avec la configuration du noyau, vous devriez toujours partir d'une base solide et la modifier. Cela vous évitera de passer à côté d'une option importante qui vous obligerait à recommencer encore et encore jusqu'à ce que les choses fonctionnent. Le meilleur des fichiers ''.config'' repose sur celui utilisé par les noyaux par défaut de Slackware. Vous pouvez les trouver sur les disques d'installation de Slackware ou dans le répertoire ''kernels/'' de votre 'mirroirfavori.
  
 <code> <code>
Ligne 78: Ligne 78:
 </code> </code>
  
-Vous pouvez facilement remplacer le fichier ''.config'' proposé par défaut en copiant ou téléchageant le fichier ''config'' pour le noyau que vous souhaitez utiliser. Personellement, j'utilise le noyau generic.s comme base, mais vous pouvez préférer utiliser le fichier de configuration de huge.s. Le noyau générique produit beaucoup de modules et de fait un noyau plus petit, mais il requiert assez souvent l'utilisation d'initrd.+Vous pouvez facilement remplacer le fichier ''.config'' proposé par défaut en copiant ou téléchargeant le fichier ''config'' pour le noyau que vous souhaitez utiliser. Personnellement, j'utilise le noyau generic.s comme base, mais vous pouvez préférer utiliser le fichier de configuration de huge.s. Le noyau générique produit beaucoup de modules et de ce fait un noyau plus petit, mais il requiert assez souvent l'utilisation d'initrd.
  
 <code> <code>
Ligne 85: Ligne 85:
  
 <note important> <note important>
-Le fichier de configuration du noyau de Slackware ne comporte pas de point dans son nom, au contraire des fichiers de configuration du noyau en général. Si vous oubliez, ou copiez simplement le fichier ''config'' dans ''/usr/src'' quelque soit le fichier ''.config'' présent, c'est celui-ci qui sera utilisé.+Le fichier de configuration du noyau de Slackware ne comporte pas de point dans son nom, à la différence des fichiers de configuration du noyau en général. Si vous oubliez, ou copiez simplement le fichier ''config'' dans ''/usr/src'' quel que soit le fichier ''.config'' présent, c'est celui-ci qui sera utilisé.
 </note> </note>
  
Ligne 94: Ligne 94:
 </code> </code>
  
-Maintenance que nous avons préparé une configuration de base solide, il est temps de faire les modificiations que nous voulons. La construction d'un noyau complet depuis sa configuration jusqu'à la compilation est effectuée par la commande **//make//**(1) en y ajoutant des options spécifiques. Chaque option correspond à une fonction différente.+Maintenant que nous avons préparé une configuration de base solide, il est temps de faire les modifications que nous voulons. La construction d'un noyau complet depuis sa configuration jusqu'à la compilation est effectuée par la commande **//make//**(1) en y ajoutant des options spécifiques. Chaque option correspond à une fonction différente.
  
 Si vous passez à une nouvelle version du noyau, vous aurez définitivement besoin de l'option //oldconfig//. Cela parcourera votre fichier ''.config'' de base et recherchera pour les éléments manquants qui indiquent que la nouvelle version du noyau contient de nouvelles options. Sachant que de nouvelles options sont ajoutées pour quasiment chaque nouvelle version du noyau, c'est généralement une bonne chose à faire. Si vous passez à une nouvelle version du noyau, vous aurez définitivement besoin de l'option //oldconfig//. Cela parcourera votre fichier ''.config'' de base et recherchera pour les éléments manquants qui indiquent que la nouvelle version du noyau contient de nouvelles options. Sachant que de nouvelles options sont ajoutées pour quasiment chaque nouvelle version du noyau, c'est généralement une bonne chose à faire.
Ligne 117: Ligne 117:
 </code> </code>
  
-Ici vous pouvez voir que le nouveau noyau que je compile ajoute le support pour un nouveau système de fichiers : ext4. //oldconfig// a revu ma configuration originelle, conservé les anciennes options telle qu'elles étaient et m'a demandé que faire pour les nouvelles options. Il est généralement sage de choisir l'option par défaut, mais vous pouvez chosir ce qui vous convient. //oldconfig// est un outil très pratique pour visualiser les nouvelles options de configuration, en faisant le plus adapté pour les utilisateurs qui veulent simplement essayer la dernière version du noyau.+Ici vous pouvez voir que le nouveau noyau que je compile ajoute le support pour un nouveau système de fichiers : ext4. //oldconfig// a revu ma configuration originelle, conservé les anciennes options telle qu'elles étaient et m'a demandé ce que je désire faire pour les nouvelles options. Il est généralement sage de choisir l'option par défaut, mais vous pouvez choisir ce qui vous convient. //oldconfig// est un outil très pratique pour visualiser les nouvelles options de configuration, en faisant le plus adapté pour les utilisateurs qui veulent simplement essayer la dernière version du noyau.
  
-Pour les opérations de configuration plus sérieuses, il existe une multitude d'options. Le noyau Linux peut être configuré de trois façons principales. La première est //config//, qui énumèrera chacune des options une par une et vous demander de que vous souhaitez. Cette méthode est si fastidieuse qu'il est peu probable que qui que ce soit l'utilise encore.+Pour les opérations de configuration plus sérieuses, il existe une multitude d'options. Le noyau Linux peut être configuré de trois façons principales. La première est //config//, qui énumérera chacune des options une par une et vous demander de que vous souhaitez. Cette méthode est si fastidieuse qu'il est peu probable que quiconque l'utilise encore.
  
 <code> <code>
Ligne 136: Ligne 136:
 </code> </code>
  
-Heureusement, il existe deux autres méthodes plus faciles pour configurer votre noyau, //menuconfig// et //xconfig//. Toutes les deux créent un programme basé sur des menus qui vous propose de sélectionner ou dé-sélectionner des options sans avoir à toutes les vérifier. //menuconfig// est la méthode la plus utilisée, et c'est celle que je recommande. //xconfig// n'est utile que si vous essayer de compiler un noyau depuis un environnement graphique via **//X//**. Les deux sont très proches, et nous n'allons documenter que //menuconfig//.+Heureusement, il existe deux autres méthodes plus faciles pour configurer votre noyau, //menuconfig// et //xconfig//. Toutes les deux créent un programme basé sur des menus qui vous propose de sélectionner ou dé-sélectionner des options sans avoir à toutes les vérifier. //menuconfig// est la méthode la plus utilisée, et c'est celle que je recommande. //xconfig// n'est utile que si vous essayez de compiler un noyau depuis un environnement graphique via **//X//**. Les deux sont très proches, et nous n'allons documenter que //menuconfig//.
  
 Lancer make menuconfig depuis un terminal vous présentera une interface basée sur curses, comme vous pouvez le voir ci-dessous. Chaque section du noyau dispose son propre sous-menu, et vous pouvez naviguer avec les touches fléchées. Lancer make menuconfig depuis un terminal vous présentera une interface basée sur curses, comme vous pouvez le voir ci-dessous. Chaque section du noyau dispose son propre sous-menu, et vous pouvez naviguer avec les touches fléchées.
Ligne 146: Ligne 146:
 </note> </note>
  
-Une fois que vous avez fini de configurer votre noyau, il est temps de passer à l'étape de compilation. Il existe différentes méthodes pour cela, mais la plus efficiace est d'utiliser //bzImage//. En utilisant cette option avec la commande **//make//** la compilation du noyau débutera et vous verrez un flot de messages s'afficher dans votre terminal jusqu'à le processus se termine ou qu'une erreur fatale se produise.+Une fois que vous avez fini de configurer votre noyau, il est temps de passer à l'étape de la compilation. Il existe différentes méthodes pour cela, mais la plus efficace est d'utiliser //bzImage//. En utilisant cette option avec la commande **//make//** la compilation du noyau débutera et vous verrez un flot de messages s'afficher dans votre terminal jusqu'à l'accomplissement de tout le processus ou si une erreur fatale se produit.
  
 <code> <code>
Ligne 162: Ligne 162:
 </code> </code>
  
-Si le processus engendre une erreur, vous devriez vérifier la configuration de votre noyau en premier lieu. Les erreurs de compilation sont le plus souvent générées par un problème dans le fichier ''.config''. Si tout c'est bien passé nous n'avons pas encore fini, il reste à préparer les modules.+Si le processus engendre une erreur, vous devriez vérifier la configuration de votre noyau en premier lieu. Les erreurs de compilation sont le plus souvent générées par un problème dans le fichier ''.config''. Si tout s'est bien passé nous n'avons pas encore fini, il reste à préparer les modules.
  
 <code> <code>
Ligne 182: Ligne 182:
 </code> </code>
  
-Une fois ces étapes completées, vous aurez une nouvelle image du noyau située dans ''/boot'''et de nouveaux modules dans le répertoire ''/lib/modules''. Afin de pouvoir utiliser ce nouveau noyau vous aurez besoin d'éditer ''lilo.conf'', de créer un initrd (uniquement si vous avez besoin de charger un ou plusieurs modules au démarrage) et d'exécuter la commande **//lilo//** pour mettre à jour votre gestionnaire de démarrage. Lorsque vous redémarrerez, si tout se passe sans accroc, vous devriez avoir une option pour démarrer votre système avec votre tout nouveau noyau. Si quelque chose ne marche pas, vous passerez sûrement un certain temps à régler le problème.+Une fois ces étapes complétées, vous aurez une nouvelle image du noyau située dans ''/boot'''et de nouveaux modules dans le répertoire ''/lib/modules''. Afin de pouvoir utiliser ce nouveau noyau vous aurez besoin d'éditer ''lilo.conf'', de créer un initrd (uniquement si vous avez besoin de charger un ou plusieurs modules au démarrage) et d'exécuter la commande **//lilo//** pour mettre à jour votre gestionnaire de démarrage. Lorsque vous redémarrerez, si tout se passe sans accroc, vous devriez avoir une option pour démarrer votre système avec votre tout nouveau noyau. Si quelque chose ne marche pas, vous passerez sûrement un certain temps à régler le problème.
  
 ====== Navigation ====== ====== Navigation ======
 fr:slackbook:linux_kernel ()