Linux est un système d’exploitation pour les utilisateurs occasionnels et les inconditionnels. Pour les puristes, toutefois, le titre "Linux" est réservé au noyau qui alimente le système d'exploitation. Si vous êtes curieux de savoir ce qu'est le noyau Linux, répondons à cette question avec un œil pour le nouvel utilisateur.
Modes
Avant d’expliquer ce qu’est un noyau, il est important de comprendre les termes «mode utilisateur» et «mode noyau». Le mode utilisateur est lorsque l'exécution du code ne permet pas d'accéder directement au matériel ou à la mémoire de référence. Pour pouvoir accéder au matériel et à la mémoire, le code exécuté en mode utilisateur doit déléguer des instructions à des interfaces système de programmation (API). Le mode noyau est lorsque l'exécution de code a un accès illimité à tout le matériel et est réservée aux fonctions les plus fiables du système d'exploitation.
Qu'est-ce qu'un noyau?
Chaque système d'exploitation a un noyau. Windows, macOS, iOS, Android, Chrome OS et Linux ont chacun un système de bas niveau qui est chargé d'interfacer toutes les applications avec le matériel physique de l'ordinateur. Sans le noyau, aucune de vos applications ne pourrait utiliser l'ordinateur physique. Des applications telles que Firefox, Chrome, LibreOffice, MS Office ou Outlook ne fonctionneraient pas. Le noyau est également responsable de l’autorisation des processus pour échanger des informations à l’aide de ce qu’on appelle la communication inter-processus (IPC).
Il y a (en général) trois types de noyaux:
- Noyaux monolithiques: ces noyaux englobent le processeur, la mémoire, l'IPC, les pilotes de périphérique, la gestion du système de fichiers et les appels du serveur système. Il est également responsable du transfert de la mémoire système libre aux applications. Ces types de noyaux sont généralement meilleurs pour accéder au matériel et au multitâche.
- Micro-noyaux: Les micro-noyaux adoptent une approche minimaliste et ne gèrent que le processeur, la mémoire et l'IPC.
- Noyaux hybrides: Les noyaux hybrides ont la possibilité de décider ce qu’ils veulent exécuter en mode utilisateur ou en mode noyau. Bien que cela fournisse le meilleur des deux mondes, les fabricants de matériel exigent beaucoup plus pour créer des pilotes qui servent d'interface entre le code en cours d'exécution et le matériel.
Linux utilise un code source ouvert, Monolithic Kernel, alors que macOS et Windows utilisent tous deux des noyaux hybrides. Le noyau Linux a été conçu en 1991 par Linus Torvalds. À ce jour, M. Torvalds continue d’être le principal développeur du noyau Linux, tandis que des développeurs du monde entier contribuent au noyau Linux. En fait, on estime que près de 10 000 développeurs, appartenant à plus de 1 000 entreprises, ont contribué au noyau Linux (depuis le début du suivi en 2005).
Où est le noyau?
Si vous ouvrez une fenêtre de terminal et exécutez la commande ls / boot, vous verrez un fichier appelé vmlinuz-VERSION (Où VERSION est le nom ou le numéro de la version). Le fichier vmlinuz est le noyau Linux amorçable, et le «z» indique que le noyau est compressé; donc au lieu de vmlinux, nous avons vmlinuz.
Ce répertoire / boot contient d'autres fichiers importants du noyau, tels que initrd.img-VERSION, system.map-VERSION et config-VERSION (où VERSION est un nom ou un numéro de version). Ces autres fichiers servent les objectifs suivants:
- initrd: utilisé comme un petit disque RAM qui extrait et exécute le fichier de noyau actuel.
- system.map: utilisé pour la gestion de la mémoire, avant le chargement du noyau.
- config: indique au noyau quelles options et quels modules charger.
Modules
Sans modules, le noyau ne serait pas très utile. Les modules activent efficacement les pilotes nécessaires pour communiquer avec le matériel sans utiliser toute la mémoire de votre système. Les modules ajoutent également des fonctionnalités au noyau, telles que la communication avec les périphériques, la gestion des systèmes de fichiers, la sécurité, etc. Il est possible de répertorier, d'ajouter et de supprimer des modules dans le noyau à l'aide des commandes suivantes:
- lsmod listera tous les modules du noyau actuellement chargés.
- insmod chargera un module de noyau dans le noyau en cours d'exécution.
- rmmod déchargera un module du noyau en cours d'exécution.
Vous voyez donc, à l’aide de commandes simples, le noyau Linux peut être assez flexible.
Le noyau actuel
Au moment d'écrire ces lignes, le noyau Linux stable est 4.18.5, mais toutes les distributions Linux n'incluent pas le dernier noyau. En fait, la distribution mise à jour du bureau de SE élémentaire exécute le noyau 4.15.0-30. Qu'est-ce que ce nombre signifie? Dans le cas du dernier noyau sur Elementary OS, cela signifie:
- 4 est la version majeure
- 15 est la version mineure
- 0-30 est la révision
Il est également possible de télécharger différentes versions du noyau Linux à partir de kernel.org et de les compiler vous-même. La compilation du noyau Linux est une tâche qu'il vaut mieux laisser à ceux qui savent vraiment ce qu'ils font. Un noyau mal compilé peut rendre un système non amorçable. Ainsi, à moins que vous ne soyez prêt à plonger dans la tâche ardue de la compilation de code à ce niveau, utilisez le noyau par défaut fourni avec la distribution de votre choix.