www.misfu.com : Cours et Formation Informatique et logiciels, apprendre et télécharger gratuitement
 Cours informatique



  • Télécharger des cours
  • Cours Débutant
  • Cours Internet
  • Cours Ergonomie
  • Cours Linux
  • Cours Réseaux
  • Cours JavaScript

  • Forum informatique
  • Annuaire informatique
  • Annuaire internet

    Cours Bureautique

  • Cours Excel
  • Cours Word
  • Cours PowerPoint
  • OpenOffice (Texte)
  • OpenOffice (Tableur)

    News et astuces

  • Test et comparatif ADSL
  • News informatique
  • Astuces Windows





  • Compilation et Configuration du noyau


    Accueil > Cours Linux > Compilation et Configuration du noyau


     Compilation et Configuration du noyau Linux
       

    Introduction

    Objectifs


    Les nouveaux noyaux offrent plus de facilité pour communiquer avec plus de configurations matérielles (c'est à dire qu'ils gèrent plus de périphériques). L'amélioration de l'ordonnancement des taches, la correction des erreurs dans les précédentes versions du noyau sont autant de points qui peuvent expliquer une recompilation de noyau.


    A la fin de ce cours, les apprenants seront capables de :


    a. configurer l'environnement logiciel de leurs matériel en vue d'une recompilation

    b. Recompiler leurs noyaux avec la gestion des modules

    c. interroger le noyau pour connaître les différents modules charges.


    Seuls les noyaux 2.4.xx seront couverts.


     Rôle du noyau

    Le noyau ou kernel joue le rôle d'intermédiaire entre vos programmes (logiciels) et votre matériel. Premièrement, il gère la mémoire pour tous les programmes en cours d'exécution (processus) et s'assurent qu'ils occupent tous une part équitable ou non du temps processeur (ordonnancement des tâches). En plus, il fournit une interface (API) simple aux programmes pour communiquer avec votre matériel (appels système).


     Architecture du noyau

    Le noyau linux est le cœur du système Linux mais isolé, il n'est pas d'une grande utilité. Ainsi on peut décomposer un système Linux en 4 parties:


    ----------------------------------------------

    | Applications Utilisateurs |

    ----------------------------------------------

    | Services O/S |

    ----------------------------------------------

    | Noyau Linux |

    ----------------------------------------------

    | Contrôleurs matériels |

    ----------------------------------------------

    Décomposition d'un système Linux en sous-systèmes majeurs


    Applications Utilisateurs : l'ensemble des applications utilisées sur un système Linux (Les exemples typiques sont un traitement de texte ou un navigateur)


    Services O/S: Il y a des services qui sont typiquement considérés comme faisant partie du système opératoire (système de fenêtrage, commande Shell). En plus, l'interface de programmation du noyau est inclus dans ce sous-système.


    Noyau Linux: c'est la couche d'abstraction permettant l'accès aux ressources : périphériques (disque dur, écran, clavier, lecteur disquette ...), processeur et mémoire vive (RAM).


    Contrôleurs matériels: ce sous-système comprend tous les périphériques d'accès physiques (généralement liste des fichiers dans /dev)


     Compilation du noyau et Gestion des modules

    La compilation du noyau est une des spécificités des systèmes dits libres (disponibilité des sources). Le simple fait de vouloir un noyau plus petit et adapté à son système, fut une des principales raisons pour recompiler.


    Aujourd’hui avec la gestion des modules dynamiques, la principale cause de compilation/recompilation réside dans le support de nouveaux matériels, une amélioration technique ou une correction de failles (assez rare).


    La compilation du noyau nécessite de disposer des sources officielles (vérifier les md5sums) et d'un compilateur compatible.


    Certains compilateurs (gcc par exemple) comportent des optimisations incompatibles avec certaines constructions du noyau. Procurez vous egcs si vous avez ce type de compilateur.


    L'opération de compilation du noyau n'est pas difficile mais nécessite de répondre correctement aux questions de configuration. Les erreurs sont souvent fatales (arrêt de la compilation).


     Préparation des sources

    Les sources peuvent être téléchargées sur le site officiel du noyau (http://www.kernel.org). Il est possible de récupérer les sources complètes sous la forme d'un archive compressée tar.gz (environ 30Mo). Toutefois, si on dispose déjà des sources complètes, il est envisageable de ne télécharger que les patchs.


    Installer les sources du noyau dans /usr/src/linux-/ et éditer un lien symbolique vers ce répertoire sous le nom /usr/src/linux. Ceci permet d'avoir plusieurs jeux de sources du noyau.


    [root@touba src]# cd /usr/src/

    [root@touba src]# ls

    RPM/


    [root@touba src]# mkdir linux-2.4.x

    [root@touba src]# ln -s linux-2.4.x linux


    [root@touba src]# ls -l

    total 8

    lrwxrwxrwx 1 root root 11 aoû 29 2001 linux -> linux-2.4.x/

    drwxr-xr-x 18 root root 4096 nov 27 15:56 linux-2.4.x/

    drwxr-xr-x 7 root root 4096 nov 22 17:40 RPM/


    Il nous reste maintenant à décompresser et "désarchiver" les sources du noyau.


    [root@touba src]# tar xzvf linux-2.4.x.tar.gz

    linux-2.4.x/

    linux-2.4.x/Makefile

    linux-2.4.x/Rules.make

    [ ... ]



    Si l'on dispose déjà d'une version complète des sources, et que l'on désire appliquer une rustine (patch), il faut décompresser le fichier de rustine puis l'appliquer avec l'option -p0


    [root@touba src]# gunzip fichier_rustine.gz

    [...]

    [root@touba src]# patch -p0 < fichier_rustine


    Ces commandes doivent être lancées à partir du répertoire /usr/src/ et supposent que les sources sont dans ./linux.


    Si les sources sont localisées ailleurs, jouez sur l'option -px (x étant un nombre pour designer le niveau du sous répertoire relatif au répertoire courant. Consultez la page de manuel de patch pour plus d'options sur cette commande.


    Vous pouvez aussi lancer le script ./linux/scripts/patch-kernel, qui recherchera automatiquement les rustines en comparant les versions et les appliquera.


    Les distributions apportent quelques fois des modifications qui empêchent une bonne application des rustines. Privilégiez les sources officielles sous format tarball (http://kernel.org).


     Programmes de configuration

    Avant de lancer l'outil de configuration, il faudra vérifier que l'environnement de compilation est propre. i.e: aucun fichier d'extension .o ne subsiste.


    La commande suivante permet de nettoyer le répertoire de compilation :


    [root@touba linux]# make mrproper


    On a le choix entre une configuration à l'ancienne avec la commande:


    [root@touba linux]# make config


    Une interface newt (mode texte)


    [root@touba linux]# make menuconfig


    Et une interface en TCL/Tk (mode graphique de l'interface texte) :


    [root@touba linux]# make menuconfig


    Quelque soit la méthode utilisée, il faut répondre par 'Y' (pour Yes), 'N' (pour No) ou 'M' (Module) lorsque c'est possible.


    'Y' ou 'M' incluent la fonctionnalité dans le kernel alors que 'N' la supprime. 'M' permet d'utiliser la fonctionnalité en tant que module. L'utilisation des modules permet d'alléger le noyau puisque les fonctionnalités sont chargées et déchargées à la demande (dynamiquement).


    Cependant les fonctionnalités nécessaires au démarrage de Linux, comme les gestionnaires de systèmes de fichiers ou le gestionnaire de disques par exemple, ne doivent en aucun cas être placées dans les modules sous peine d'avoir un système qui ne démarre pas.


    Ne pas hésiter à consulter l'aide présente dans l'outil de configuration pour décider du choix de l'option.


    L'étape de la configuration est obligatoire même si le changement de versions du noyau est mineur.


     Compilation et Modules

    Deux commandes permettent de construire un noyau:


    Génerez correctement les dépendances entre les fichiers avec make dep:


    [root@touba linux]# make dep


    Puis construisez l'image compressée du nouveau noyau (Compilation + Edition de liens) avec :


    [root@touba linux]# make bzImage


    Au cas ou certaines fonctionnalités ont été prises en tant que modules, deux commandes supplémentaires permettent de les incorporer:

    [root@tou
    ba linux]# make modules


    Puis :


    [root@touba linux]# make modules_install


    Un supplément d'informations sur l'utilisation des modules se trouve dans ./linux/Documentation/modules.txt


     Installation du noyau

    Une fois la compilation achevée, la nouvelle image du noyau doit être installée pour qu'on puisse l'utiliser au prochain démarrage. Il faudra s'assurer de sa bonne fonction et conserver l'ancien noyau (avec ses modules bien sur).


    Déplacez le nouveau noyau (./linux/arch/i386/boot/bzImage) dans le répertoire ou les noyaux sont généralement stockes (/boot pour les distributions Linux en général) en le renommant vmlinuz.


    Il faudra auparavant renommer l'ancien noyau pour éviter de l'écraser :


    [root@touba linux]# mv vmlinuz vmlinuz-old


    puis :


    [root@touba linux]# cp ./arch/i386/boot/bzImage /boot/vmlinuz


    Le plus simple est de créer des liens symboliques comme on l'a fait avec le répertoire de compilation /usr/src/linux.


    Il suffit maintenant d'indiquer au gestionnaire d'amorçage l'emplacement des noyaux et les changements effectues sur leurs noms.


    Dans le cas de lilo, il faudra :


    - Editer le fichier /etc/lilo.conf.

    - Ajouter une nouvelle entrée en copier/coller de l'ancienne

    - changer le nom de l'ancienne image (vmlinuz-old)

    - Exécuter /sbin/lilo pour réécrire la table d'amorçage.

    - Vérifier que tout est ok (pas de messages d'erreurs de la part de lilo)

    - Redémarrer (avec la commande reboot par exemple)


    Si vous voulez démarrer sur une disquette, il suffit de copier l'image du noyau sur cette disquette en utilisant la commande dd


    [root@touba linux]# dd if=/boot/vmlinuz of=/dev/fd0


    mkbootdisk est une commande plus simple pour créer des disquettes de démarrage (man mkbootdisk).


    Les commandes lsmod, rmmod , insmod et depmod permettent de gérer les modules de maniére dynamique. Le lecteur consultera les pages de manuel de ces commandes pour plus d’informations.


    Les modules du noyau X se trouvent dans /lib/modules/X


     Bibliographie

    1) Kernel Source: $KERNEL_SOURCE/README

    2) Kernel Source: $KERNEL_SOURCE/Documentation/

    3) http://plg.uwaterloo.ca/~itbowman/CS746G/a1/ : Conceptual Architecture of the Linux Kernel



    Par l'équipe technique A.N.F.A


    Vous pouvez également faire héberger vos tutoriaux sur le site Misfu, il vous suffit de nous les envoyer







     Initiation Linux

  • Philosophie Linux
  • Caractéristiques
  • Interfaces graphiques
  • Utiliser KDE
  • Gestion des fichiers
  • Pré-requis installation
  • Installer Linux
  • Outils multimédia
  • Linux & internet

     Administration Linux

  • Configurer Lilo
  • Gestion utilisateur
  • Packages sous Linux
  • Daemons et Linux
  • Routage IP
  • Commandes réseaux
  • Poste en réseau
  • Sécurité et Linux
  • Système NFS
  • Planification des tâches
  • Compilation noyau Linux
  • SAMBA et Linux
  • Utiliser le DNS
  • Récupérer mdp root
  • Utiliser Grep
  • Recherche et archivage
  • DHCP et Linux

     Divers

  • Midnight-Commander (MC)
  • Equivalence logiciel Linux/Windows
  • Editeur de texte VI
  • Créer un RPM
  • Commandes Linux
  • Commandes Unix
  • Commandes Bash
























  • Tous les Logos et Marques sont déposés, les commentaires sont sous la responsabilité de ceux qui les ont publiés, le reste © www.misfu.com.