Qu’est-ce que le Noyau Linux (kernel) : rôle, versions et comment ça marche

Le noyau Linux ou kernel Linux en anglais est un projet libre conçu et créé en 1991 par Linus Torvalds.
Il a donc plus de 25 ans d'ancienneté, ce qui fait de lui un des projets open sources les plus vieux.

Lorsque l'on devient utilisateur Linux et que l'on commence à bidouiller, on rencontre très vite le terme de noyau Linux ou Kernel Linux.
Mais qu'est ce que le noyau Linux ? A quoi sert-il et quel est son rôle ?
Quelles sont les versions et comment connaître la version du noyau Linux ?

Ce tutoriel vous dit tout sur le noyau Linux.

Qu'est-ce que le Noyau/Kernel Linux : rôle, versions et comment ça marche

Rôle et qu'est-ce que le Noyau Linux

Qu'est-ce que le noyau Linux

La noyau Linux est le cœur principal du système d'exploitation.
C'est en grande partie lui qui permet le fonctionnement du hardware et l’interaction entre l'utilisateur et le PC.
Ainsi, le noyau gère la communication entre la partie logicielle et matériel du PC.
On pense au PC mais le noyau Linux est aussi déployé sur une grande variété de systèmes informatiques, tels que les appareils embarqués, les appareils mobiles (y compris son utilisation dans le système d'exploitation Android), les ordinateurs personnels, les serveurs, les ordinateurs centraux et les supercalculateurs.

A ses débuts, les principaux contributeurs étaient des développeurs non payés mais leurs parts diminuent de plus en plus vers des développeurs issues d'entreprises privées.
Le noyau Linux étant intégré dans beaucoup de plateformes différentes, de grandes entreprises de l'IT y contribuent car elles en sont aussi dépendantes.
Intel et Huawei Technologies sont parmi les 2 principaux contributeurs de la version 5.0.
En effet, Huawei propose plusieurs produits et services qui reposent fortement sur Linux. Ses smartphones qui utilisaient Android et son nouvel OS mobile Harmony sont très probablement un Android remanié et donc basé sur Linux.
Mais on trouve aussi des entreprises comme SUSE, AMD, NVIDIA, Linaro, Google, IBM, Samsung, et Red Hat et bien d'autres.

Les rôles du noyau Linux

Voici les quatre principales fonctions du noyau Linux :

  • Gestion de la mémoire: gardez une trace de la quantité de mémoire utilisée pour stocker quoi et où
  • Gestion des processus: déterminez quels processus peuvent utiliser l'unité centrale (CPU), quand et pendant combien de temps
  • Pilotes de périphériques: agissent en tant que médiateur / interprète entre le matériel et les processus
  • Appels système et sécurité: recevez les demandes de service des processus
architectures et rôles du noyau Linux

Ainsi, Le noyau Linux gère l’environnement matériel du système afin que d’autres programmes tels que les programmes d’espace utilisateur et les logiciels d’application du système d’exploitation puissent fonctionner correctement sans modification sur une variété de plates-formes différentes et sans avoir besoin d’en savoir beaucoup sur ce système sous-jacent.
Pour cela, il contrôle les ressources matérielles telles que les E / S (réseau, stockage, graphiques et divers périphériques d'interface utilisateur, etc.), la mémoire et le processeur de votre appareil ou ordinateur.

Il fournit aussi des API afin que des applications puissent travailler avec les sous-couches.
Par exemple les API de chiffrement (Linux Kernel Crypto API) sont utilisés pour des solutions de chiffrement de disques : Quelles solutions pour chiffrer ses disques et données sur Linux
Iptables communique avec la couche réseau Netfilter pour modifier les paquets et leurs acheminement.

C'est le premier élément qui se charge lorsque vous amorcez votre PC.
Ainsi, au démarrage du PC, le Linux Loader GRUB boot sur une version spécifique du noyau selon sa configuration interne.

Ring, Espaces Kernel-userpace et User mode et modules

Le noyau Linux fonctionne avec différences espaces et couches protégées.
On nomme ces dernières anneau ou Ring et vont de 0 à 3 :

  • Kernel internal : est l'emplacement où le code du noyau est stocké et s'exécute sous.
    • Ring 0 (mode noyau) : L'anneau 0 (espace noyau) est l'anneau le plus privilégié et a accès à toutes les instructions de la machine
    • Ring 1 et 2 peut être utilisé par les hyperviseurs ou pilotes de machine virtuelle,
  • Kernel user space (Ring 3) : qui est un ensemble d'emplacements où s'exécutent les processus utilisateur normaux (c'est-à-dire tout autre que le noyau). Le rôle du noyau est de gérer les applications qui s'exécutent dans cet espace

Les pilotes de périphériques et les extensions de noyau s'exécutent dans l'espace noyau (anneau 0 dans de nombreuses architectures de processeur), avec un accès complet au matériel, bien que certaines exceptions s'exécutent dans l'espace utilisateur.
Le matériel est représenté dans la hiérarchie des fichiers. Les applications utilisateur interagissent avec les pilotes de périphériques via des entrées dans les répertoires /dev ou /sys.
Les informations sur les processus sont également mappées au système de fichiers via le répertoire /proc.
La reconnaissance du noyau Linux se fait à travers le daemon udev.

La couche utilisateur comprend les processus démarré par l'utilisateur.
Le noyau gère leur exécution et notamment l'attribution des adresses mémoires à travers la mémoire virtuelle.
A lire : La mémoire dans Linux : comment ça marche
Les processus de l'espace utilisateur ne peuvent accéder qu'à une petite partie du noyau via une interface exposée par le noyau appelé System Call les appels système.
Si un processus effectue un appel système, une interruption logicielle est envoyée au noyau, qui distribue ensuite le gestionnaire d'interruption approprié et continue son travail une fois le gestionnaire terminé.

Enfin Linux est un noyau monolithique avec une conception modulaire.
On peut charger ou décharger des modules avec les commandes modprobe et rmmod.
Cela permet de charger un pilote interne au noyau ou des fonctionnalités spécifiques.
On peut alors configurer les modules à charger au démarrage du PC ou en charger/décharger à n'importe quel moment.

Les fichiers du noyau Linux dans /boot

Les fichiers du noyau Linux se trouvent dans le répertoire /boot.
On trouve trois principaux fichiers :

  • initrd-XXX.img : Initrd est l'abréviation de "Initial ramdisk. Initrd est généralement utilisé pour démarrer temporairement le matériel dans l'état où le noyau réel vmlinuz peut prendre le relais et continuer à démarrer
  • System.map-XXX : c'est la est une table de symboles de noyau d'un noyau spécifique. C'est le lien avec le système. Carte de votre noyau en cours d'exécution
  • vmlinux-XXXX : Vmlinuz est un noyau amorçable et compressé. «VM» représente «Virtual Memory».

XXX étant la version du noyau Linux.

Les fichiers du noyau Linux dans /boot

Quelles sont les versions du noyau Linux

Le noyau Linux se présente sous la forme de versions et de branches.
La version majeure (ou branche) est indiquée par les deux premiers nombres, pris dans leur ensemble.
Par exemple, dans la version 2.6, la version majeure est 2.
Dans la version 3.11, la version majeure est la 3.
Les mises à jour occasionnelles des versions stables sont identifiées par un schéma de numérotation à trois (par exemple, 4.13.1, 4.13.2, …, 4.13.16).

Les nouvelles versions apportent en général de nouvelles fonctionnalités et supports d'architectures ou de nouveaux matériels.
Des détails sur l'historique du noyau 2.6 et ChangeLog sont disponibles sur le site officiel kernel.org.

VersionDate de publicationDescription
2.21999Supporte de nouvelles architectures comme m68k, PowerPC, Sparc64, Alpha.
Apporte la lecture du système de fichiers NTFS
2.4.02001Apporte le support ISA Plug and Play, USB, et cartes PC ainsi que le Pentium 4 et Itanium.
Enfin apport de la prise en charge de Bluetooth, le gestionnaire de volume logique (LVM) version 1, le support RAID, les systèmes de fichiers InterMezzo et ext3.
2.6.02003Ajout du support de nouveaux systèmes de fichiers comme omme ext3, ext4, FUSE, Btrfs et d'autres qui sont natifs d'autres systèmes d'exploitation comme JFS, XFS, Minix, Xenix, Irix, Solaris, System V, Windows et MS-DOS.
L'intégration de µClinux dans les sources principales du noyau, le support PAE, le support de plusieurs nouvelles lignes de processeurs, l'intégration de Advanced Linux Sound Architecture (ALSA) dans les sources principales du noyau.
Le support de jusqu'à 232 utilisateurs (au lieu de 216), prise en charge de jusqu'à 229 identifiants de processus (64 bits uniquement, arches 32 bits toujours limitées à 215), considérablement augmenté le nombre de types d'appareils et le nombre d'appareils de chacun type, prise en charge 64 bits améliorée.
Prise en charge des systèmes de fichiers prenant en charge des tailles de fichier jusqu'à 16 téraoctets, préemption dans le noyau, prise en charge de la bibliothèque de threads POSIX native (NPTL)
Intégration Linux en mode utilisateur dans les sources principales du noyau, SELinux intégration dans les sources principales du noyau, prise en charge d'InfiniBand.
3.0.02011Ajout d'un backend de stockage pour Xen, ce qui signifie que le noyau contient désormais tous les principaux composants nécessaires pour fonctionner en tant que Dom0.
La fusion du support Xen semblait extrêmement proche il y a six ans, mais il a fallu jusqu'à présent pour que cela se produise.
Un certain nombre de modifications ont également été apportées au système de fichiers Btrfs et aux pilotes graphiques.
Ajout de plusieurs nouveaux pilotes et amélioré de nombreux pilotes existants.
3.112013Nouvelles fonctionnalités telles que le nouvel indicateur O_TMPFILE pour open (2) pour réduire les vulnérabilités des fichiers temporaires, la gestion expérimentale de l'alimentation dynamique AMD Radeon, l'interrogation réseau à faible latence et zswap (cache d'échange compressé).
4.02015La possibilité d'installer / appliquer des correctifs de sécurité sur le noyau Linux «en direct», sans avoir besoin de redémarrer
Améliorations de la plate-forme Intel «Skylake»
Prise en charge Intel Quark SoC
Divers correctifs pour améliorer Linux fonctionnant sur une Playstation 3
Le pilote AMD Radeon open source prend en charge DisplayPort Audio
Divers réglages de pilotes HID, y compris les claviers compacts Lenovo, Wacom Cintiq 27QHD
Le pilote des paramètres d'alimentation Toshiba ajoute la fonctionnalité de veille / charge USB, la charge rapide, la mise en veille avec musique, etc.
Ajustements du système de fichiers, y compris F2FS, BtrfFS, etc.
5.0Prise en charge d'AMD Radeon FreeSync
Prise en charge d'un nouveau VegaM
Prise en charge de l'affichage NVIDIA Xavier
Poursuite des travaux sur les graphiques Intel Icelandake Gen11
Prise en charge initiale des SoC NXP i.MX8
Prise en charge de Allwinner T3, Qualcomm QCS404 et NXP Layerscape LX2160A
Prise en charge du mode évolutif Intel VT-d pour la virtualisation d'E / S évolutive
Nouveaux pilotes Intel Stratix 10 FPGA
Corrections pour F2FS, EXT4 et XFS
Le système de fichiers Btrfs restaure la prise en charge des fichiers d'échange
Prise en charge de Fscrypt Adiantum pour un chiffrement rapide des données sur du matériel bas de gamme. Cela remplace le tristement célèbre algorithme Speck de la NSA.
Améliorations du pilote Realtek R8169
Prise en charge du défilement haute résolution de Logitech
Pilote de l'écran tactile Raspberry Pi
Amélioration des pilotes d'ordinateur portable x86
Amélioration de la sécurité Thunderbolt
Prise en charge de la carte Intel FPGA Chameleon96
Amélioration de la gestion de l'alimentation
Les versions majeures du noyau Linux

Le noyau Linux est sans cesse en développement le lancement du projet.
Ainsi le nombre de lignes de codes ne cesse lui aussi d'augmenter.
En anglais on nomme ceci SLOC (Source lines of code).

VersionsNombre de lignes de codes
(SLOC)
1.0.0176,250
2.2.01,800,847
2.4.03,377,902
2.6.05,929,913
3.014,647,033
4.019,5
5.027,8
Généré depuis https://github.com/udoprog/kernelstats

Distributions Linux et versions du kernel

Les distributions Linux sont un ensemble de logiciels libres autour du noyau Linux.
Elles offrent aussi un installeur et du support.

Chaque version d'une distribution Linux propose une version spécifique du noyau Linux.
Des mises à jour de sécurité peuvent être proposées lorsqu'une vulnérabilité et failles logiciels sont publiées.
Les patchs sont gérés par les développeurs de la distribution Linux.

Par exemple ci-dessous, le gestionnaire de mises à jour Ubuntu propose une mise à jour du noyau Linux et Linux Kernel modules et Linux Kernel Headers.

Mise à jour du noyau Linux par le gestionnaire de mise à jour Ubuntu

Les changements majeures de version d'une distribution suivent en général les versions majeures du noyau Linux.

Comment connaître la version du noyau

Plusieurs commandes ou fichiers donnent la version du noyau Linux.
Reportez-vous à ce tutoriel complet :

Paramétrer le noyau Linux avec sysctl

Des paramètres et options sont disponibles afin d'activer des composants du noyau.
sysctl est un utilitaire en ligne de commandes pour modifier les paramètres du noyau Linux.
Ce dernier set disponible sur toutes les distributions Linux comme Debian, Ubuntu, Mint, CentOS, Fedora, etc.

Ce tutoriel vous montre comment utiliser sysctl :

Liens

sources :

https://en.wikipedia.org/wiki/Linux_kernel
https://unix.stackexchange.com/questions/87625/what-is-difference-between-user-space-and-kernel-space

Tags: