Top Qs
Chronologie
Chat
Contexte
Noyau Linux
noyau de système d'exploitation de type UNIX De Wikipédia, l'encyclopédie libre
Remove ads
Le noyau Linux est un noyau de système d'exploitation de type UNIX. Il est utilisé dans les systèmes d'exploitation Linux. Le noyau Linux est un logiciel partiellement libre développé essentiellement en langage C par des milliers de bénévoles et salariés collaborant sur Internet.
Remove ads

Le noyau est le cœur du système, c'est lui qui s'occupe de fournir aux logiciels une interface de programmation pour utiliser le matériel. Le noyau Linux a été créé en 1991 par Linus Torvalds pour les compatibles PC. Initialement conçu pour l'architecture de processeur x86, il a ensuite été porté sur de nombreuses autres, dont m68k, PowerPC, ARM, SPARC, MIPS et RISC-V. Il s'utilise dans une très large gamme de matériel, des systèmes embarqués aux superordinateurs, en passant par les téléphones mobiles et ordinateurs personnels.
Ses caractéristiques principales sont d'être multitâche et multi-utilisateur. Il respecte les normes POSIX ce qui en fait un digne héritier des systèmes UNIX. Au départ, le noyau a été conçu pour être monolithique. Ce choix technique fut l'occasion de débats enflammés entre Andrew S. Tanenbaum, professeur à l'université libre d'Amsterdam qui avait développé Minix, et Linus Torvalds. Andrew Tanenbaum arguant que les noyaux modernes se devaient d'être des micro-noyaux et Linus répondant que les performances des micro-noyaux n'étaient pas bonnes. Depuis sa version 2.0, le noyau, bien que n'étant pas un micro-noyau, est modulaire, c'est-à-dire que certaines fonctionnalités peuvent être ajoutées ou enlevées du noyau à la volée (en cours d'utilisation).
Remove ads
Histoire
Résumé
Contexte
En 1991, les compatibles PC dominent le marché des ordinateurs personnels et fonctionnent généralement avec les systèmes d'exploitation MS-DOS, Windows ou OS/2. Les PC basés sur le microprocesseur Intel 80386, vendus depuis 1986, commencent à être abordables. Mais les systèmes grand public restent attachés à la compatibilité avec les anciens processeurs 16 bits d'Intel et exploitent mal les capacités 32 bits et l'unité de gestion mémoire du 80386.
C'est cette année que l’étudiant finlandais Linus Torvalds, indisposé par la faible disponibilité du serveur informatique UNIX de l’université d'Helsinki, entreprend le développement d’un noyau de système d'exploitation, qu’on appellera plus tard « Linux ». Linus désire alors surtout comprendre le fonctionnement de son ordinateur fondé sur un Intel 80386.
Linus Torvalds fait son apprentissage avec le système d’exploitation Minix. Comme le concepteur de Minix — Andrew Tanenbaum — refuse d’intégrer les contributions visant à améliorer Minix, Linus décide de programmer un remplaçant de Minix. Il commence par développer un simple émulateur de terminal, qu’il utilise pour se connecter via un modem au serveur informatique de son université. Après l’ajout de diverses fonctionnalités dont un système de fichiers compatible avec celui de Minix, Linus oriente son projet vers quelque chose de plus ambitieux : un noyau aux normes POSIX. À ce noyau, il adapte de nombreux composants disponibles du système d’exploitation GNU pour obtenir un système d’exploitation plus complet.
Le , il annonce[4] sur le forum Usenet news:comp.os.minix qu'il écrit un système d'exploitation, mais en tant que « hobby, qui ne sera pas grand et professionnel comme gnu ». Le , il annonce la disponibilité d’une ébauche de la version 0.02 de son noyau, la version 0.01 ayant eu une diffusion plus que confidentielle[5]. Enfin en , la version 0.12 est diffusée sous la Licence publique générale GNU (GNU GPL) à la place de la licence ad hoc qui interdisait jusque-là la redistribution commerciale[6].
La version Linux 1.0.0 a été lancée le [7] avec 176 250 lignes de code[8].
Initialement appelé Freax par son créateur, le projet trouve son nom définitif grâce à Ari Lemmke[9], administrateur du serveur FTP ftp.funet.fi, qui héberge le travail de Linus Torvalds dans un répertoire nommé Linux. C’est la première apparition d’un terme composé à partir de « Linus » et « UNIX », qui deviendra par la suite une marque déposée au nom de Linus Torvalds[10]. Le manchot Tux, dessiné par Larry Ewing en 1996, devient la mascotte du projet.
La mise à disposition du code de Linux suscita beaucoup d'intérêt de la communauté des utilisateurs de Minix. Dès lors, des milliers de programmeurs bénévoles à travers le monde participèrent au projet. Le modèle de développement de Linux est toujours considéré comme un représentant type de l'organisation caractéristique des grands collectifs open source[11]. Aujourd'hui, des centaines de passionnés et des entreprises de toutes tailles participent au projet, dont Linus Torvalds est toujours le coordinateur. Eric Raymond décrit dans l'essai La Cathédrale et le Bazar (2001) le modèle de développement du noyau Linux et d’une partie des logiciels libres[12].
Dans les systèmes embarqués, Linux est fréquemment utilisé avec les outils uClibc et BusyBox qui ont été développés pour le matériel particulièrement limité en capacité mémoire. Le fait de pouvoir compiler le noyau Linux avec des options spécialement adaptées au matériel cible donne aux développeurs de nombreuses possibilités d’optimisation.
Remove ads
Développement du noyau Linux
Résumé
Contexte
Si au début de son histoire le développement du noyau Linux était assuré par des développeurs bénévoles, les principaux contributeurs sont aujourd'hui un ensemble d'entreprises, souvent concurrentes, comme Red Hat, Novell, IBM ou Intel[13].
IBM possédait son propre UNIX, nommé AIX, mais le passage à Linux - outre qu'il permet d'affecter à d'autres projets les développeurs et mainteneurs d'AIX - présente aussi l'avantage de permettre une reprise, sans difficulté de portage d'applications ni nouvelle formation des équipes informatiques, de serveurs Linux PC vers des Linux sur ses séries i, p et z.
La licence du noyau Linux est la licence publique générale GNU dans sa version 2. Cette licence est libre, ce qui permet d'utiliser, copier et modifier le code source selon ses envies ou ses besoins. Ainsi, quiconque a les connaissances nécessaires peut participer aux tests et à l'évolution du noyau.
Rythme de développement
Entre mars et , le nombre de lignes de code a doublé (de 4,4 millions à 8,8 millions). Début 2009, la version 2.6.30 du noyau linux est composée de plus de 11,5 millions de lignes de code[14] dans 28 000 fichiers[13], alors que 2,8 millions de lignes ont été ajoutées entre Noël 2008 et [15].
Entre 2005 et mi-2009, 5 000 développeurs et 500 entreprises ont participé à l'écriture du noyau. Le nombre de patchs proposé est en augmentation, notamment depuis la version 2.6.25[13].
Rôle de Linus Torvalds
Linus Torvalds, créateur du noyau Linux, est le mainteneur officiel depuis le début en 1991. Il est une sorte de « dictateur bienveillant », l'autorité en termes de choix techniques et organisationnels. Les différentes versions du noyau publiées par Linus Torvalds s'appellent « mainline » ou « vanilla » en anglais. Ce sont les noyaux vanilla qui sont intégrés par les distributeurs, avec parfois l'addition de quelques patchs de sécurité, de corrections de bogue ou d'optimisations.
Processus de développement
Linus Torvalds a apporté un changement radical dans la façon dont les systèmes d'exploitation sont développés, en utilisant pleinement la puissance du réseau Internet.
Le processus de développement de Linux est public sur Internet : les sources du noyau y sont visibles par tous, les modifications de ces sources sont publiées et revues sur Internet et sont également visibles de tous. Un cycle de développement incrémental et rapide a été adopté depuis le début (aujourd'hui une nouvelle version est publiée toutes les 9 semaines environ), qui a permis de construire autour de Linux et d'Internet par couches successives une communauté dynamique composée de développeurs, de sociétés et d'utilisateurs.
Mode de numérotation
Les numéros de version du noyau sont composés de trois nombres : le premier est le numéro majeur, le second le numéro mineur. Avant l'apparition des versions 2.6.x, les numéros mineurs pairs indiquaient une version stable et les numéros mineurs impairs une version de développement. Ainsi, les versions 2.2, 2.4 sont stables, les versions 2.3 et 2.5 sont des versions de développement. Cependant, depuis la version 2.6 du noyau, ce modèle de numérotation stable/développement a été abandonné et il n'y a donc plus de signification particulière aux numéros mineurs pairs ou impairs. Le troisième nombre indique une révision, ce qui correspond à des corrections de bogues, de sécurité ou un ajout de fonctionnalité, par exemple 2.2.26, 2.4.30 ou 2.6.11. Le passage à la version 3.0 fut décidé par Linus Torvalds à l'occasion des 20 ans du noyau Linux, même si la véritable raison fut plutôt arbitraire[16].
Depuis (date de publication du noyau 2.6.11), Greg Kroah-Hartman et Chris Wright tentent de maintenir une branche stabilisée du noyau vanilla de Linus Torvalds. Leur but est de stabiliser davantage le noyau, en intégrant des patchs de correction de bogues, de sécurité ou d'optimisation simples et concis répondant à des critères stricts. Cette branche n'intègre pas de nouvelles fonctionnalités. Leurs publications sont indiquées par un quatrième nombre de version, par exemple 2.6.11.1 ou 2.6.11.6. Le fonctionnement technique et organisationnel de cette branche sera éprouvé avec le temps, sur le moyen et long terme.
Patches
Il existe une multitude de patches disponibles sur Internet au sein de la communauté de développement du noyau Linux. Les plus connus sont ceux d'Andrew Morton suffixés -mm qui intègrent des patchs de fonctionnalités et optimisations très demandées et les WOLK (working over loaded kernel, noyau surchargé fonctionnel).
La distribution Ubuntu Studio comporte également un noyau à faible latence (Low-latency Kernel) assurant pour les applications audio une latence plus faible, au prix toutefois d'une plus grande charge du système lui-même (due à des boucles de vigilance, polling) et donc d'une diminution de son throughput. Ce noyau est peu utilisé en dehors de la création musicale, qui exige aussi peu de délai que possible entre la frappe d'une touche et la production de l'effet correspondant.
Différence entre le Mainline et le Downstream
Le noyau Mainline est diffusé par Linus Torvalds et ses équipes. Le noyau Downstream, est un noyau retravaillé par un fabricant, avec ses prestataires, pour être adapté sur un modèle de téléphone spécifique. Or, si un noyau ancien (downstream) fonctionnera avec un téléphone de son époque sans problème, l'absence de code source ouvert ne permettra pas aux noyaux récents de fonctionner avec le dit téléphone, à défaut d'une nouvelle adaptation, couteuse[17].
Linux en temps réel
Les patches d'Ingo Molnár suffixés -rt sont utilisés par les distributions Linux multimédia comme DeMuDi ; ils permettent d'obtenir les performances temps réel nécessaires au bon fonctionnement d'une station de travail multimédia professionnelle. Ingo Molnar est aussi à l'origine du débogueur du noyau kgdb.
Chronologie
Gestion de versions
Le noyau a longtemps été maintenu sans système de gestion de versions, avant tout parce que Linus Torvalds n'aimait pas les systèmes de gestion de version centralisés[97].
En 2002, le noyau est passé à Bitkeeper, un système de gestion de versions propriétaire qui correspondait aux exigences techniques de Linus Torvalds. L'utilisation de ce logiciel était offerte gratuitement aux développeurs du noyau. Cependant, ne s'agissant pas d'un logiciel libre, le choix de ce produit a suscité des controverses dans la communauté[98]. Le système n'était, par exemple, pas interopérable avec des systèmes de gestion de versions libres tels que CVS et SVN.
En , les efforts d'Andrew Tridgell pour faire de l'ingénierie inverse sur Bitkeeper ont conduit BitMover, l'éditeur de ce logiciel, à arrêter son soutien au développement de Linux. En réaction, Linus Torvalds et quelques autres ont développé un nouveau système de gestion de versions : Git. Une première version de Git a été écrite en quelques semaines, et deux mois plus tard, sortait une nouvelle version du noyau développée avec Git[99]. Le développement et la maintenance du logiciel Git a ensuite été rapidement laissé à Junio Hamano et à la communauté. Il est depuis largement adopté, entre autres, par la communauté du logiciel libre.
Remove ads
Caractéristiques techniques
Résumé
Contexte
Compilation du noyau
Comme tous les programmes informatiques, le noyau Linux est écrit sous forme de code source, et doit être transformé en binaire exécutable pour être compris par le microprocesseur.
Dans la mesure où le code source du noyau Linux contient une très grande quantité de fonctionnalités, l'utilisateur peut choisir de n'intégrer que celles qui lui sont utiles ou les mieux adaptées (de nombreuses fonctionnalités sont concurrentes) : c'est l'étape de configuration du noyau.
La grande majorité des distributions GNU/Linux installent un noyau compilé préalablement qui répond aux besoins des postes de travail et serveurs. Il est donc rare qu'un utilisateur de Linux ait à compiler un noyau. La compilation permet d'adapter le noyau à des besoins spécifiques comme le support de matériels peu répandus, l'activation de fonctionnalités expérimentales ou l'adaptation à des plateformes particulières comme des systèmes embarqués.
Le code source du noyau Linux est disponible sur le site kernel.org, mais les distributions GNU/Linux fournissent également des sources empaquetées sur leurs dépôts.
L'étape la plus importante de la compilation d'un noyau personnalisée est la configuration du noyau. Les options de configuration sont déclarées dans le fichier .config
, chacun correspond à une fonctionnalité du noyau, qu'on décide d'utiliser ou non. Trois choix sont généralement possibles :
- Y : la fonctionnalité est compilée et implantée dans l'image du noyau
- M : la fonctionnalité est compilée comme module
- N : la fonctionnalité est ignorée
Certaines options consistent en un choix binaire : la fonctionnalité est incluse dans l'image noyau ou n'est pas compilée.
Il existe plusieurs outils pour régler la configuration :
make config
: programme en mode texte qui énumère toutes les options et demande d'entrer son choixmake menuconfig
: utilitaire en mode texte écrit avec ncurses, il permet une navigation plus aisée dans la configurationmake gconfig
: outil graphique basé sur GTK+make xconfig
: outil graphique basé sur Qtmake defconfig
: outil permettant de récupérer les paramètres de configuration par défaut du noyau. Ces paramètres sont donnés par les développeurs du noyau à chaque nouvelle sortie du noyau.make oldconfig
: outil permettant de récupérer les paramètres de configuration d'une ancienne version du noyau afin de ne pas recommencer la configuration à zéro.make olddefconfig
: outil permettant de récupérer les paramètres de configuration par défaut du noyau et de mettre les autres paramètres par défaut.make localmodconfig
: outil permettant de récupérer les paramètres de configuration du noyau tournant actuellement sur la machine afin de ne charger que les modules nécessaires.
La compilation du noyau et des modules se fait par la commande make
. Cette opération peut être assez longue, cependant l'utilisation de l'argument -j
permet de réduire le temps de compilation. Ceci au détriment de la réactivité des autres programmes et donc du système d'exploitation. L'installation est automatisée, les commandes make install
et make modules_install
permettent respectivement d'installer l'image du noyau et ses modules.
Pour permettre l'amorçage du système avec la nouvelle image de noyau, il est nécessaire de configurer le chargeur de démarrage (LILO, GRUB) pour qu'il exécute l'image du noyau au démarrage. Avec (GRUB, GRUB2) la commande update-grub automatise la configuration.
La distribution Debian fournit un utilitaire, make-kpkg
qui automatise les étapes ci-dessus et crée des paquets Debian. Ceci permet ensuite un déploiement facile sur un grand nombre de machines.
Sinon, toujours pour debian, on peut entrer les commandes sudo su ;
make menuconfig ;
make deb-pkg ;
cd ../ ;
dpkg -i *deb
Interfaces

Portabilité

Bien que le but initial du projet était seulement de fournir un noyau de type UNIX sur les architectures x86, la disponibilité des sources a permis à des contributeurs de l'adapter à un très grand nombre d'architectures.
Linux peut fonctionner sur des ordinateurs grand public aussi bien que sur les super-calculateurs classés premiers au Top 500 : dans le classement de novembre 2021, Linux est présent sur 100 % des machines[100].
Le noyau est également utilisé sur des systèmes embarqués, pourvus d'un matériel plus modeste ; parmi les exemples les plus connus, on peut citer les systèmes de navigation par satellite TomTom ou les téléphones équipés de la distribution Linux Android.
Codage des caractères
Alors que la plupart des applications sont développées pour travailler avec des codages de caractères particuliers, la conception du noyau Linux est telle que le codage des caractères utilisé n'est pas connu. En particulier, comme dans les anciens Unix, le nom des fichiers est considéré comme une chaîne d'octets, sans qu'il soit possible de savoir de manière déterministe quel texte spécifique elle représente, en l'absence de la connaissance du codage de caractères utilisés.
Pour ce qui est du shebang, le noyau de Linux considère que les scripts seront écrits dans un codage de caractère étendant l'ASCII, sans inclure d'octet indicateur avant le premier caractère, comme cela peut se produire en Unicode. Malgré tout, du texte Unicode peut transiter dans le noyau, notamment lors de l'accès aux systèmes de fichiers NTFS ou CIFS/Samba.
Remove ads
Litiges
Simple hobby d'un étudiant au départ, le noyau Linux a permis l'émergence de systèmes d'exploitation gratuits en concurrence directe avec les autres systèmes d'exploitation commerciaux. Depuis sa mise à disposition sur de nombreuses architectures (après la version 1.0), il a été la cible d'actions en justice :
- Sur la marque : en 1995, alors que Linux avait déjà acquis une certaine notoriété, un particulier eut l'idée de déposer la marque Linux, ce que personne n'avait fait. La réaction fut vive dans toute la communauté, le litige se régla à l'amiable et Linus devint propriétaire du nom Linux (et donc libre de le refuser ou non à une distribution jugée par trop commerciale)[101].
- Sur les droits d'auteur : en 2003 un procès opposa SCO à IBM au sujet du noyau Linux : voir à ce sujet SCO contre Linux.
- Sur les brevets logiciels : incompatibles avec l’idée d’interopérabilité indispensable au succès des logiciels libres, les brevets logiciels constituent pour Linux une menace. De tels brevets sont délivrés aux États-Unis, mais ont été rejetés par le Parlement européen[102].
Remove ads
Critiques
Résumé
Contexte
Brad Spengler, développeur chez grsecurity, accuse le noyau Linux de centrer parfois ses efforts sur les fonctionnalités au détriment de la sécurité. Il prétend que Linus Torvalds lui aurait dit ne pas être intéressé par l’ajout d’options de sécurité utiles pour éviter des dépassements de tampon, car cela ralentirait le chargement des applications[103].
Il reproche l’absence d’une personne chargée officiellement de la sécurité, avec qui il serait possible de communiquer en privé en toute sécurité. À la place, la seule solution est d’envoyer un courriel sur une liste de diffusion relative aux questions de sécurité où les failles découvertes sont parfois utilisées à des fins malveillantes avant qu’une mise à jour de sécurité ne soit diffusée, alors que les usagers de Linux ne sont pas au courant de l’existence de cette faille[103].
Enfin, il remet en cause l’implantation du système LSM depuis la version 2.6 du noyau qui aurait été implanté par laxisme et aurait facilité l’insertion de rootkits invisibles au sein du système en les faisant passer pour des modules de sécurité[104]. Cette critique n’est plus d’actualité grâce aux modifications apportées depuis la version 2.6.24[105].
Remove ads
Notes et références
Annexes
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads