Noyau Linux
Transcription
Noyau Linux
Table des matières 1 Noyau Linux ............................................................................................................... 2 1.1 NOYAU ............................................................................................................... 2 1.1.1 VERSION DU NOYAU ............................................................................... 2 1.1.2 NUMÉRO DE VERSION............................................................................. 2 1.1.3 EMPLACEMENT DU NOYAU .................................................................. 3 1.1.4 OU TROUVER LE DERNIER NOYAU? ................................................... 3 1.1.5 NOYAU 2.6 .................................................................................................. 3 1.2 MISE À JOUR DU NOYAU ............................................................................... 4 1.3 MODULES DU NOYAU .................................................................................... 4 1.3.1 CHARGEMENT AUTOMATIQUE ............................................................ 4 1.3.2 UTILITAIRES DE MODULES DE NOYAU .............................................. 5 _____________________________________________________________________ 2011 Hakim Benameurlaine 1 1 1.1 Noyau Linux NOYAU Le noyau constitue la couche matérielle de Linux, vous paramétrez dans celui-ci les modules qui vous serviront à déclarer vos périphériques: carte vidéo, souris, usb..etc Vous pouvez générer vos pilotes de périphérique à l'intérieur du noyau (option Y dans la configuration) ou bien générer un module qui sera chargé dynamiquement (option M). L'avantage de choisir un module est que le noyau sera plus petit donc plus rapide à charger avec la possibilité de charger/décharger dynamiquement des modules sans redémarrer, ce qui s'avère pratique. 1.1.1 VERSION DU NOYAU Pour déterminer les noyaux installés sur votre système: # rpm -q kernel Pour déterminer la version ACTUELLE du noyau chargé: # uname -r 1.1.2 NUMÉRO DE VERSION Le numéro de version d’un noyau comporte trois segments : Majeur (version) Majeur (indique un changement majeur dans le noyau). Linux est passé en version 1 en 1994 et la version 2 actuelle depuis 1996. Mineur (patchlevel) Un second numéro permet d’identifier le niveau de développement dont est issu le noyau. Ces versions, que l’on peut qualifier de principales, déterminent alors l’architecture et les fonctionnalités du noyau. Sous-version (sublevel) Il existe une notion de sous-version qui fait état de l’avancement du développement pour une même version principale. Révision (extraversion) _____________________________________________________________________ 2011 Hakim Benameurlaine 2 Un quatrième numéro à été introduit pour les corrections de bogues dans une même sous-version. Par exemple pour un noyau 2.6.11-1 o o o o 2 est la version majeure 6 est la version mineure 11 est le numéro de sous-version 1 indique le numéro de révision 1.1.3 EMPLACEMENT DU NOYAU L’image du noyau se trouve dans le répertoire /boot et porte le nom de vmlinuzversion # ls /boot/vmlinuz* 1.1.4 OU TROUVER LE DERNIER NOYAU? Si vous voulez avoir la dernière version du noyau, vous pouvez le télécharger à partir www.kernel.org ou bien http://mirror.centos.org/centos/5.4/updates/SRPMS/ 1.1.5 NOYAU 2.6 Le noyau fourni avec Linux est construit de façon personnalisée par l'équipe noyau de CentOS, afin d'assurer son intégrité et sa compatibilité avec le matériel pris en charge. Avant de pouvoir lancer un noyau, celui-ci doit subir toute une série de tests d'assurance de la qualité. Les noyaux Linux officiels sont mis en paquetage sous forme de RPM de façon à ce qu'ils soient faciles à mettre à jour et à vérifier. Par exemple, en installant le paquetage RPM kernel, Il modifie le fichier de configuration du chargeur de démarrage afin que le nouveau noyau soit démarré si GRUB ou LILO est installé. Ce module couvre les étapes nécessaires à la mise à jour du noyau sur un système x86 seulement. Le noyau 2.6 est fourni avec Linux. Voici les caractéristiques principales du noyau 2.6, tel que vous le trouverez dans Linux : Le répertoire pour la source du noyau est /usr/src/linux-2.6 et non plus /usr/src/linux qui devient un lien symbolique vers /usr/src/linux-2.6. Prise en charge du système de fichiers ext3. Support multiprocesseur (SMP). Prise en charge de la mémoire vive physique jusqu'à 64 gigaoctets. Prise en charge USB. _____________________________________________________________________ 2011 Hakim Benameurlaine 3 1.2 MISE À JOUR DU NOYAU Vous pouvez utiliser le service yum-updatesd pour mettre à jour automatiquement votre noyau et les autres paquetages sur votre machine. Vous pouvez aussi mettre à jour manuellement le noyau en utilisant la commande : # yum update kernel Pour vérifier si une mise à jour du noyau existe : # 1.3 yum check-update kernel MODULES DU NOYAU Le noyau Linux a une conception modulaire. Au démarrage, seul un noyau résident minimal est chargé dans la mémoire. Par la suite, chaque fois qu'un utilisateur demande une fonction qui n'est pas présente dans le noyau résident, un module de noyau est chargé dynamiquement dans la mémoire. Après un délai d'inactivité spécifié, le module peut être supprimé de la mémoire. Les fichiers contenant le code compilé des modules se trouvent dans un des sousrépertoires de /lib/modules/<version-noyau>/kernel/drivers et porte l’extension .ko Un inconvénient de l’utilisation de la modularité est l’impossibilité d’utiliser les modules pour le matériel ou les fonctionnalités nécessaires au démarrage. Par exemple il n’est pas possible d’utiliser un module pour le pilote du contrôleur de disque contenant le système de fichier racine. Il est possible d’outrepasser cette limite en créant un disque mémoire d’initialisation "Initial RAM Disk" ou "initrd" contenant tous les modules nécessaires. Ce fichier spécial devra alors être chargé à l’amorçage par GRUB (directive initrd dans fichier /etc/grub.conf). 1.3.1 CHARGEMENT AUTOMATIQUE A partir de la version 2.0, la structure modulaire du noyau est supportée. Les modules sont chargés seulement au besoin, ce qui réduit considérablement la taille du noyau. C’est le noyau qui se charge de cette opération depuis sa version 2.2.x ; avant cela, les modules étaient chargés par le démon kerneld avec les noyaux de la série 2.0.x. Le fichier de configuration /etc/modprobe.conf regroupe les paramètres éventuels à passer lors du chargement des modules (par exemple numéro IRQ associé à la carte) ainsi que des alias sur les noms de modules. _____________________________________________________________________ 2011 Hakim Benameurlaine 4 Il est possible de donner un nom générique comme eth0 à un module et de l’associer au pilote réel de la carte réseau Ethernet. Ce fichier est également utilisé par les commandes depmod et modprobe. 1.3.2 UTILITAIRES DE MODULES DE NOYAU Vous pouvez également utiliser un groupe de commandes pour répertorier, charger ou décharger des modules de noyau. Ces commandes sont utiles si vous voulez essayer différents modules ou voir si un module a bien été chargé. lsmod La commande lsmod permet d'afficher la liste des modules actuellement chargés. Exemple de résultats lsmod # lsmod Module ipv6 autofs4 sunrpc acpi_cpufreq video button i2c_piix4 i2c_core pcnet32 mii floppy dm_snapshot dm_zero ext3 jbd BusLogic sd_mod scsi_mod Size 248513 21957 163557 7625 17733 7121 9425 22721 33357 5825 61373 18925 2241 136137 60629 71621 21697 139341 Used by 18 2 1 0 0 0 0 1 i2c_piix4 0 1 pcnet32 0 0 0 2 1 ext3 2 3 2 BusLogic,sd_mod Comme vous pouvez le voir dans l'exemple, lsmod affiche le nom du module, la taille mémoire, un compteur d'utilisation et la liste des autres modules utilisant ce module. _____________________________________________________________________ 2011 Hakim Benameurlaine 5 insmod Par défaut, insmod essaie de charger le module à partir des sous-répertoires /lib/modules/<version-noyau>/kernel/drivers. Il existe un sous-répertoire pour chaque type de module, comme le sous-répertoire net pour les pilotes d'interface réseau. La commande insmod charge le module en mémoire si les dépendances avec les autres modules sont remplies. On préfère utiliser la commande modprobe car elle gère automatiquement les dépendances entre modules. Par exemple, la commande suivante permet de charger le module floppy : # modprobe floppy rmmod Pour décharger des modules de noyau, utilisez la commande rmmod suivie du nom du module. L'utilitaire rmmod ne déchargera que les modules qui ne sont pas utilisés et qui ne constituent pas une dépendance d'autres modules en cours d'utilisation. Utiliser l’option -a pour décharger tous les modules inutilisés. Par exemple, la commande suivante permet de décharger le module floppy : # rmmod floppy _____________________________________________________________________ 2011 Hakim Benameurlaine 6 modinfo modinfo constitue un autre utilitaire de module de noyau utile. Vous pouvez utiliser la commande modinfo pour afficher des informations concernant un module de noyau. La syntaxe générale est : modinfo [options] <module> Les options comprennent -d, qui affiche une brève description du module et -p, qui répertorie les paramètres pris en charge par le module. Pour une liste complète des options, reportez-vous à la page de manuel modinfo (man modinfo). # modinfo mii filename: /lib/modules/2.6.171.2142_FC4/kernel/drivers/net/mii.ko license: GPL description: MII hardware support library author: Jeff Garzik <[email protected]> srcversion: 16DCEDEE4B5629C222C352D depends: vermagic: 2.6.17-1.2142_FC4 mod_unload 686 REGPARM 4KSTACKS gcc-4.0 depmod Pour faciliter la dépendance entre les modules, la commande depmod parcourt l’arborescence /lib/modules et sauvegarde les dépendances trouvées dans le fichier /lib/modules/<version-noyau>/modules.dep Le fichier est alors utilisé par la commande modprobe qui charge le module demandé ainsi que tous les modules nécessaires. _____________________________________________________________________ 2011 Hakim Benameurlaine 7