Outils pour utilisateurs

Outils du site


issue90:labo_linux

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
issue90:labo_linux [2015/02/21 16:01] – [13] auntieeissue90:labo_linux [2015/02/21 23:44] (Version actuelle) andre_domenech
Ligne 19: Ligne 19:
 LE SYSTÈME DE CONFIGURATION DU NOYAU LE SYSTÈME DE CONFIGURATION DU NOYAU
  
-Si nous jetons un coup d’œil aux répertoires du code source et aux fichiers qu'ils contiennent, nous trouverons une série de fichiers dont nous pouvons comprendre rapidement le but. Les fichiers avec l'extension .c sont clairement des fichiers de code source dans le langage de programmation C, et ceux avec l'extension .h sont des en-tête de fichiers pour le même code. Dans la partie 2 de cette série, nous avons également appris que le Makefile que nous trouvons dans chaque répertoire et sous-répertoire est un fichier qui donne au compilateur des instructions sur la façon de compiler le code source : quels fichiers sources compiler, comment nommer les fichiers de sortieet quels paramètres du compilateur utiliser.+Si nous jetons un coup d’œil aux répertoires du code source et aux fichiers qu'ils contiennent, nous trouverons une série de fichiers dont nous pouvons comprendre rapidement le but. Les fichiers avec l'extension .c sont clairement des fichiers de code source dans le langage de programmation C, et ceux avec l'extension .h sont des en-tête de fichiers pour le même code. Dans la partie 2 de cette série, nous avons également appris que le Makefile que nous trouvons dans chaque répertoire et sous-répertoire est un fichier qui donne au compilateur des instructions sur la façon de compiler le code source : quels fichiers sources compiler, comment nommer les fichiers de sortie et quels paramètres du compilateur utiliser.
  
 Lorsque nous parcourons chaque Makefile, nous pouvons voir que le fichier dans chaque répertoire se réfère uniquement au code source placé dans ce répertoire. Cela signifie qu'il y a une séparation entre les différentes parties de l'arborescence des sources du noyau : chaque répertoire ou sous-répertoire peut être compilé indépendamment. Quand nous arriverons à la notion de modules du noyau, nous verrons que cela signifie que nous pourrons compiler un seul module à la fois, sans avoir à compiler le noyau entier si ce n'est pas nécessaire. Lorsque nous parcourons chaque Makefile, nous pouvons voir que le fichier dans chaque répertoire se réfère uniquement au code source placé dans ce répertoire. Cela signifie qu'il y a une séparation entre les différentes parties de l'arborescence des sources du noyau : chaque répertoire ou sous-répertoire peut être compilé indépendamment. Quand nous arriverons à la notion de modules du noyau, nous verrons que cela signifie que nous pourrons compiler un seul module à la fois, sans avoir à compiler le noyau entier si ce n'est pas nécessaire.
Ligne 59: Ligne 59:
   default n    default n 
   help    help 
 +    
     Cette option ajoute un paramètre de noyau « 'selinux' », qui permet de désactiver SELinux au démarrage. Si cette option est sélectionnée, la fonctionnalité SELinux peut être désactivée avec selinux=0 sur la ligne de commande du noyau. Le but de cette option est de permettre de distribuer une seule image du noyau avec SELinux intégré, mais pas nécessairement activé.      Cette option ajoute un paramètre de noyau « 'selinux' », qui permet de désactiver SELinux au démarrage. Si cette option est sélectionnée, la fonctionnalité SELinux peut être désactivée avec selinux=0 sur la ligne de commande du noyau. Le but de cette option est de permettre de distribuer une seule image du noyau avec SELinux intégré, mais pas nécessairement activé. 
    
Ligne 115: Ligne 116:
 • « M » pour compiler le module comme un fichier chargeable, qui ne sera pas chargé dans la RAM au démarrage, mais seulement si c'est nécessaire pendant le fonctionnement du système. • « M » pour compiler le module comme un fichier chargeable, qui ne sera pas chargé dans la RAM au démarrage, mais seulement si c'est nécessaire pendant le fonctionnement du système.
  
-Le deuxième paragraphe dépend de la présence de ce qui précède : s'il est présent, l'utilisateur peut configurer le support pour les tunnels RFC2473 soit sous forme de module soit intégré.+Le deuxième paragraphe dépend de la présence de ce qui précède : s'il est présent, l'utilisateur peut configurer le support pour les tunnels RFC2473 soit sous forme de modulesoit intégré.
  
 Maintenant, nous avons besoin d'accéder au script de configuration lui-même. Cependant, avant de le faire, il est habituellement recommandé de commencer par nettoyer toute configuration restante. Pour ce faire, lancez : Maintenant, nous avons besoin d'accéder au script de configuration lui-même. Cependant, avant de le faire, il est habituellement recommandé de commencer par nettoyer toute configuration restante. Pour ce faire, lancez :
Ligne 129: Ligne 130:
 largely because I am comfortable with this lightweight environment that I have been using since way back when (Slackware days, to be precise). This is what you should see something like the image shown below.** largely because I am comfortable with this lightweight environment that I have been using since way back when (Slackware days, to be precise). This is what you should see something like the image shown below.**
  
-Comme indiqué dans la partie 2, nous avons à notre disposition au moins quatre scripts de configuration différents. Deux sont basés sur des environnements textuels : « make config » et « make menuconfig ». Deux autres sont graphiques: « make xconfig » basé sur la boîte à outils Qt et « make gconfig » basé sur les bibliothèques Gtk. Faites votre choix - au bout du compte, tous ces scripts s'appuient sur les mêmes fichiers Kconfig. Dans mon cas, j'utiliserai+Comme indiqué dans la partie 2, nous avons à notre disposition au moins quatre scripts de configuration différents. Deux sont basés sur des environnements textuels : « make config » et « make menuconfig ». Deux autres sont graphiques : « make xconfig » basé sur la boîte à outils Qt et « make gconfig » basé sur les bibliothèques Gtk. Faites votre choix - au bout du compte, tous ces scripts s'appuient sur les mêmes fichiers Kconfig. Dans mon cas, j'utiliserai :
  
 $ make menuconfig $ make menuconfig
Ligne 213: Ligne 214:
 When you are satisfied with your choices, exit the configuration menu, saving the configuration in the default file .config .** When you are satisfied with your choices, exit the configuration menu, saving the configuration in the default file .config .**
  
-Lorsque vous avez choisi l'option du noyau 32-bit, allez dans « Type de processeur et fonctionnalités »et vers le dernier tiers de la liste il y a une option appelée « Support de la Mémoire Haute » (ci-dessous à droite). Celle-ci doit être activée afin d'accéder à l'intégralité du contenu d'une mémoire RAM de 4 Go, ou pour aller jusqu'à 64 Go. Si l'option de 64 Go est activée, l'option PAE sera insérée dans le menu un peu plus bas. Si le support de la mémoire haute est désactivé (utiliser jusqu'à 3 Go de RAM) ou sur le choix de 4 Go, PAE devrait être désactivé automatiquement.+Lorsque vous avez choisi l'option du noyau 32-bit, allez dans « Type de processeur et fonctionnalités » etvers le dernier tiers de la listeil y a une option appelée « Support de la Mémoire Haute » (ci-dessous à droite). Celle-ci doit être activée afin d'accéder à l'intégralité du contenu d'une mémoire RAM de 4 Go, ou pour aller jusqu'à 64 Go. Si l'option de 64 Go est activée, l'option PAE sera insérée dans le menu un peu plus bas. Si le support de la mémoire haute est désactivé (utiliser jusqu'à 3 Go de RAM) ou sur le choix de 4 Go, PAE devrait être désactivé automatiquement.
  
-Enfin, si vous souhaitez examiner et/ou configurer les pilotes supplémentaires apportés par Canonical aux sources du noyau, revenez au menu principal et vous trouverez un sous-menu séparé « pilotes tiers fournis par Ubuntu » (illustré ci-dessous) qui en contient une partie. Naturellement, ceci est inclus uniquement avec la version du code du noyau des dépôts Ubuntu.+Enfin, si vous souhaitez examiner et/ou configurer les pilotes supplémentaires apportés par Canonical aux sources du noyau, retournez au menu principal et vous trouverez un sous-menu séparé « pilotes tiers fournis par Ubuntu » (illustré ci-dessous) qui en contient une partie. Naturellement, ceci est inclus uniquement avec la version du code du noyau des dépôts Ubuntu.
  
 Lorsque vous êtes satisfait de vos choix, quittez le menu de configuration, en sauvegardant la configuration dans le fichier par défaut .config. Lorsque vous êtes satisfait de vos choix, quittez le menu de configuration, en sauvegardant la configuration dans le fichier par défaut .config.
Ligne 233: Ligne 234:
 COMPILER LE NOUVEAU NOYAU COMPILER LE NOUVEAU NOYAU
  
-Compiler le noyau comporte deux étapes différentes : compiler le noyau lui-même, et compiler les modules chargeables - bien que cette seconde partie ne soit effectuée que si l'option pour les modules a été activée, ce qui est généralement le cas.+La compilation du noyau comporte deux étapes différentes : compiler le noyau lui-même, et compiler les modules chargeables - bien que cette seconde partie ne soit effectuée que si l'option pour les modules a été activée, ce qui est généralement le cas.
  
 Pour commencer ce très long processus, exécutez la commande : Pour commencer ce très long processus, exécutez la commande :
Ligne 255: Ligne 256:
 sys 0m27.180s**  sys 0m27.180s** 
  
-Soyez prêt à voir le processeur travailler très dur et pendant une période de temps prolongée. Il est important de s'assurer que la ventilation est adéquate car l'ordinateur aura tendance à chauffer (c'est mieux de faire cela sur une machine de bureau, si possible), et consommera de l'énergie généreusement - branchez-le en cas d'exécution sur la batterie ! Sur un dual-core Intel Core i5, le processus de compilation complète a pris environ deux heures :+Soyez prêt à voir le processeur travailler très dur et pendant une période de temps prolongée. Il est important de s'assurer que la ventilation est adéquate car l'ordinateur aura tendance à chauffer (c'est mieux de faire ceci sur une machine de bureau, si possible), et consommera beaucoup d'énergie - branchez-le en cas d'exécution sur la batterie ! Sur un dual-core Intel Core i5, le processus de compilation complète a pris environ deux heures :
  
 réel 126m0.103s  réel 126m0.103s 
Ligne 261: Ligne 262:
 système 13m31.106s  système 13m31.106s 
    
-Si nous faisons un changement dans la configuration du noyau, comme par exemple modifier la chaîne de version arbitraire comme ci-dessus, l'exécution d'un nouveau processus de compilation devra compiler uniquement les parties qui ont changé. Si notre modification n'affecte que le noyau lui-même, tous les modules devront être vérifiés, mais pas compilés. De nombreux sous-systèmes du noyau lui-même n'auront pas besoin d'être recompilés des répertoires entiers du code source seront laissés inchangés. Le temps de compilation sera considérablement réduit, par exemple :+Si nous faisons un changement dans la configuration du noyau, comme par exemple modifier la chaîne de version arbitraire comme ci-dessus, l'exécution d'un nouveau processus de compilation devra compiler uniquement les parties qui ont changé. Si notre modification n'affecte que le noyau lui-même, tous les modules devront être vérifiés, mais pas compilés. De nombreux sous-systèmes du noyau lui-même n'auront pas besoin d'être recompilésdes répertoires entiers du code source seront laissés inchangés. Le temps de compilation sera considérablement réduit, par exemple :
  
 réel 5m51.928s  réel 5m51.928s 
Ligne 279: Ligne 280:
 sys 0m16.867s**  sys 0m16.867s** 
  
-Par contre, si une modification a été apportée dans l'un des modules, nous pouvons préciser que seuls les modules doivent être vérifiés pour les modifications et compilés si nécessaire, et pas le noyau lui-même. Ceci est géré avec la commande :+En revanche, si une modification a été apportée dans l'un des modules, nous pouvons préciser que seuls les modules doivent être vérifiés pour les modifications et compilés si nécessaire, pas le noyau lui-même. Ceci est géré avec la commande :
  
 $ make modules $ make modules
Ligne 301: Ligne 302:
 Une fois que le noyau et les modules ont été compilés, on peut les trouver dans les mêmes sous-répertoires que les fichiers source. Par exemple, dans le sous-répertoire mm (gestion de la mémoire), vous trouverez à la fois les sources des routines de gestion de mémoire dans mm/mempool.c, et le fichier objet compilé mm/mempool.o. Une fois que le noyau et les modules ont été compilés, on peut les trouver dans les mêmes sous-répertoires que les fichiers source. Par exemple, dans le sous-répertoire mm (gestion de la mémoire), vous trouverez à la fois les sources des routines de gestion de mémoire dans mm/mempool.c, et le fichier objet compilé mm/mempool.o.
  
-Une fois que chaque fichier source a été compilé en un objet, ils doivent être reliés entre eux dans un fichier exécutable pour le noyauet transformés en fichiers de module chargeables pour chaque module. Le noyau lui-même est un fichier vmlinux dans la racine de l'arborescenceet devrait peser environ 158 Mo. Ce fichier devra être compressé et placé dans le répertoire /boot. Une fois compressé avec gzip, bzip ou LZMA, la taille du noyau peut descendre aux 5-6 Mo qu'on attend pour un fichier du noyau Linux.+Une fois que chaque fichier source a été compilé en un objet, ils doivent être reliés entre eux dans un fichier exécutable pour le noyau et transformés en fichiers de module chargeables pour chaque module. Le noyau lui-même est un fichier vmlinux dans la racine de l'arborescence et devrait peser environ 158 Mo. Ce fichier devra être compressé et placé dans le répertoire /boot. Une fois compressé avec gzip, bzip ou LZMA, la taille du noyau peut descendre aux 5-6 Mo qu'on attend pour un fichier du noyau Linux.
  
 ====== 19 ====== ====== 19 ======
Ligne 316: Ligne 317:
  
 Afin d'exécuter notre nouveau noyau, nous aurons besoin d'effectuer quatre actions distinctes : Afin d'exécuter notre nouveau noyau, nous aurons besoin d'effectuer quatre actions distinctes :
-• Les modules doivent être séparés des fichiers sourceset copiés dans le répertoire /lib/modules/<nom-du-noyau>/kernel.+• Les modules doivent être séparés des fichiers sources et copiés dans le répertoire /lib/modules/<nom-du-noyau>/kernel.
 • Le noyau lui-même doit être compressé, et le fichier compressé placé dans /boot. • Le noyau lui-même doit être compressé, et le fichier compressé placé dans /boot.
 • Les modules doivent également être intégrés dans un fichier compressé initrd (système de fichier initial), également placé dans /boot. • Les modules doivent également être intégrés dans un fichier compressé initrd (système de fichier initial), également placé dans /boot.
Ligne 338: Ligne 339:
 • initrd.img-3.13.11.2: the compressed file system (with modules generated from /lib) needed to perform initial system boot.** • initrd.img-3.13.11.2: the compressed file system (with modules generated from /lib) needed to perform initial system boot.**
  
-Heureusement, il y a une cible spécifique disponible pour que make fasse tout cela automatiquement. Puisque nous ferons des changements dans la configuration du système, nous devrons le faire avec des privilèges d'administrateur donc la commande « sudo ». C'est aussi le moment où nous pouvons sérieusement casser des choses dans notre système, donc procédez avec prudence et uniquement lorsque vous êtes sûr que les étapes précédentes se sont déroulées correctement. Ensuite, pour installer les modules dans /lib (étape 1 ci-dessus), saisissez :+Heureusement, il y a une cible spécifique disponible pour que make fasse tout cela automatiquement. Puisque nous ferons des changements dans la configuration du système, nous devrons le faire avec des privilèges d'administrateurdonc la commande « sudo ». C'est aussi le moment où nous pouvons sérieusement casser des choses dans notre système, alors procédez avec prudence et uniquement lorsque vous êtes sûr que les étapes précédentes se sont déroulées correctement. Ensuite, pour installer les modules dans /lib (étape 1 ci-dessus), saisissez :
  
 $ sudo bash $ sudo bash
Ligne 344: Ligne 345:
 # make modules_install # make modules_install
  
-Vous verrez chaque fichier .ko défiler sur l'écran comme s'il était recopié. Maintenant, nous sommes prêts pour faire le noyau lui-même. Saisissez :+Vous verrez chaque fichier .ko défiler sur l'écran pendant qu'il est recopié. Maintenant, nous sommes prêts pour faire le noyau lui-même. Saisissez :
  
 # make install # make install
  
-et le script exécutera les étapes 2, 3 et 4 à la suite à votre place. Vous verrez alors la sortie de l'outil de configuration de GRUB grub-mkconfig à l'écran et  les nouveaux fichiers feront leur apparition dans le répertoire /boot :+et le script exécutera les étapes 2, 3 et 4 à la suite à votre place. Vous verrez alors la sortie de l'outil de configuration de GRUB grub-mkconfig à l'écran et les nouveaux fichiers feront leur apparition dans le répertoire /boot :
 • vmlinuz-3.13.11.2 (ou similaire) : le noyau compressé ; • vmlinuz-3.13.11.2 (ou similaire) : le noyau compressé ;
-• System.map-3.13.11.2 (ou similaire) : une table des symboles dans le noyauet leurs positions correspondantes dans la mémoire ; +• System.map-3.13.11.2 (ou similaire) : une table des symboles dans le noyau et leurs positions correspondantes dans la mémoire ; 
-• initrd.img-3.13.11.2 : le système de fichier compressé (avec les modules générés à partir de /lib) nécessaire pour effectuer le démarrage initial du système.+• initrd.img-3.13.11.2 : le système de fichiers compressé (avec les modules générés à partir de /lib) nécessaire pour effectuer le démarrage initial du système.
  
 ====== 21 ====== ====== 21 ======
Ligne 367: Ligne 368:
 ESSAYER VOTRE NOUVEAU NOYAU ESSAYER VOTRE NOUVEAU NOYAU
  
-Puisque le processus automatique d'installation a pris soin de la configuration de GRUB pour nous, tout ce que nous avons à faire maintenant est de redémarrer l'ordinateur. Dans le menu de GRUB, la première entrée que nous trouvons est simplement étiquetée « Ubuntu »et c'est celle qui correspond à notre nouveau noyau. Au moins une autre entrée sera présente en dessous, intitulée « Ubuntu 14.04 LTS » ou similaire. C'est l'ancien noyau, toujours disponible comme une sauvegarde au cas où le nouveau noyau ne fonctionnerait pas comme prévu.+Puisque le processus automatique d'installation a pris soin de la configuration de GRUB pour nous, tout ce que nous avons à faire maintenant est de redémarrer l'ordinateur. Dans le menu de GRUB, la première entrée que nous trouvons est simplement « Ubuntu » et c'est celle qui correspond à notre nouveau noyau. Au moins une autre entrée sera présente en dessous, intitulée « Ubuntu 14.04 LTS » ou similaire. C'est l'ancien noyau, toujours disponible comme une sauvegarde au cas où le nouveau noyau ne fonctionnerait pas comme prévu.
  
 Démarrez avec le nouveau noyau - avec la touche Entrée - et normalement le système devrait apparaître. En fait, il devrait être plutôt difficile de voir que le nouveau noyau est utilisé. Cependant, si nous ouvrons un terminal et utilisons la commande uname, nous devrions voir la description et la date de notre nouvelle compilation du noyau : Démarrez avec le nouveau noyau - avec la touche Entrée - et normalement le système devrait apparaître. En fait, il devrait être plutôt difficile de voir que le nouveau noyau est utilisé. Cependant, si nous ouvrons un terminal et utilisons la commande uname, nous devrions voir la description et la date de notre nouvelle compilation du noyau :
Ligne 393: Ligne 394:
 Ubuntu 3.13.0-24.47-generic-alan Ubuntu 3.13.0-24.47-generic-alan
  
-Si vous avez réussi à nous suivre jusqu'ici, félicitations ! Ce que vous venez de réussir est assez difficile - ou presque impossible pour les humains mortels - avec la plupart des systèmes d'exploitation actuels. Maintenant, faites-vous plaisir et essayez votre nouveau noyau. Comment se compare-t-il avec l'ancien ? Qu'en est-il la vitesse et de l'utilisation de la mémoire ?+Si vous avez réussi à nous suivre jusqu'ici, félicitations ! Ce que vous venez de réussir est assez difficile - ou presque impossible pour les humains mortels - avec la plupart des systèmes d'exploitation actuels. Maintenant, faites-vous plaisir et essayez votre nouveau noyau. Comment se compare-t-il avec l'ancien ? Qu'en est-il de la vitesse et de l'utilisation de la mémoire ?
  
 Dans la prochaine partie de cette série, nous allons examiner la façon de faire des changements et d'appliquer des réglages simples à notre noyau, et comment ils affectent les performances du système. Dans la prochaine partie de cette série, nous allons examiner la façon de faire des changements et d'appliquer des réglages simples à notre noyau, et comment ils affectent les performances du système.
  
issue90/labo_linux.1424530863.txt.gz · Dernière modification : 2015/02/21 16:01 de auntiee