noyau libre et open source de type Unix , utilisé dans de nombreux systèmes informatiques à travers le monde. Créé par Linus Torvalds en 1991, il a rapidement été adopté comme noyau du système d'exploitation GNU (GNU OS), conçu comme une alternative libre à Unix . Depuis la fin des années 1990, il est intégré à de nombreuses distributions de systèmes d'exploitation , dont beaucoup portent le nom de Linux . Android , par exemple, est un système d'exploitation basé sur le noyau Linux et utilisé dans de nombreux appareils mobiles et embarqués.
La majeure partie du code du noyau est écrite en C , avec le support de la collection de compilateurs GNU (GCC), qui offre des extensions au-delà du C standard. Le code contient également du code assembleur pour la logique spécifique à l'architecture, comme l'optimisation de l'utilisation de la mémoire et de l'exécution des tâches. Le noyau possède une conception modulaire permettant l'intégration de modules en tant que composants logiciels monolithique au sens architectural du terme, puisque l'ensemble du noyau du système d'exploitation s'exécute dans l'espace noyau .
Linux est fourni sous la licence publique générale GNU version 2, bien qu'il contienne des fichiers sous d'autres licences compatibles .
En 1991, Linus Torvalds était étudiant en informatique à l' Université d'Helsinki . Durant ses études, il commença à développer un système d'exploitation, en parallèle de ses études, inspiré d'UNIX, pour un ordinateur personnel. Il débuta par un gestionnaire de tâches en langage assembleur Intel 80386 et un pilote de terminal . Le 25 août 1991, Torvalds publia le message suivant sur comp.os.minix , un groupe de discussion Usenet :
Je développe un système d'exploitation (gratuit) (un simple passe-temps, rien de comparable à GNU) pour les clones AT 386(486) . Le projet est en gestation depuis avril et commence à prendre forme. J'aimerais avoir vos retours sur les points forts et les points faibles de Minix , car mon système d'exploitation lui ressemble quelque peu (même organisation physique du système de fichiers, pour des raisons pratiques, entre autres). J'ai porté Bash (1.08) et GCC (1.40) et tout semble fonctionner. Cela signifie que je devrais obtenir quelque chose de fonctionnel d'ici quelques mois. [...] Oui, il est exempt de tout code Minix et possède un système de fichiers multithread. Il n'est PAS portable ( il utilise la commutation de tâches du 386 , etc.) et ne prendra probablement jamais en charge d'autres périphériques que les disques durs AT, car ce sont les seuls dont je dispose :-(.
Le 17 septembre 1991, Torvalds a préparé la version 0.01 de Linux et l'a mise en ligne sur le serveur FTP « ftp.funet.fi » du Réseau finlandais des universités et de la recherche ( FUNET ). Elle n'était même pas exécutable, car son code nécessitait encore Minix pour être compilé et testé.
Le 5 octobre 1991, Torvalds annonça la première version « officielle » de Linux, la version 0.02.
projet GNU avait achevé de nombreux composants de son système d'exploitation libre remplaçant UNIX, GNU , mais son noyau, GNU Hurd , était incomplet. Le projet a adopté le noyau Linux pour son système d'exploitation.Torvalds a attribué au noyau la version majeure 0 pour indiquer qu'il n'était pas encore destiné à un usage général. La version 0.11, publiée en décembre 1991, a été la première version auto-hébergée ; compilée sur un ordinateur exécutant le noyau Linux.
Lors de la publication de la version 0.12 en janvier 1992, Torvalds a adopté la licence publique générale GNU version 2 (GPLv2), remplaçant ainsi sa précédente licence, rédigée par ses soins, qui n'autorisait pas la redistribution commerciale. La GPL est entrée en vigueur le 1er février 1992. Contrairement à Unix , tous les fichiers sources de Linux sont librement disponibles, y compris les pilotes de périphériques .
Le succès initial de Linux a été porté par des programmeurs et des testeurs du monde entier. Grâce à l'implémentation d'une sémantique d'appels système similaire à celle d'Unix et à l'exposition des API POSIX standard via une implémentation de la bibliothèque standard C , Linux pouvait exécuter des logiciels et des applications initialement développés pour Unix.

Le 19 janvier 1992, le premier message a été publié sur le nouveau groupe de discussion alt.os.linux . Le 31 mars 1992, le groupe de discussion a été renommé comp.os.linux .
Le fait que Linux soit un noyau monolithique plutôt qu'un micro-noyau a fait l'objet d'un débat entre Andrew S. Tanenbaum , le créateur de MINIX, et Torvalds. Le débat Tanenbaum–Torvalds a débuté en 1992 sur le groupe Usenet comp.os.minix , dans le cadre d'une discussion générale sur les architectures de noyau.
La version 0.96, sortie en mai 1992, fut la première capable d'exécuter le système X Window . En mars 1994, Linux 1.0.0 fut publié avec 176 250 lignes de code. Comme l'indique son numéro de version, il s'agissait de la première version considérée comme adaptée à un environnement de production . En juin 1996, après la sortie de la version 1.3, Torvalds estima que Linux avait suffisamment évolué pour justifier un nouveau numéro de version majeure et nomma la version suivante 2.0.0. Parmi les fonctionnalités importantes de la version 2.0 figuraient le multiprocesseur symétrique (SMP), la prise en charge de davantage de types de processeurs, la possibilité de sélectionner des cibles matérielles spécifiques et d'activer des fonctionnalités et des optimisations propres à l'architecture. La famille de commandes `make *config` de `kbuild` permet d'activer et de configurer les options de compilation d'exécutables noyau ad hoc ( vmlinux ) et de modules chargeables.
La version 2.2, publiée le 20 janvier 1999 , a amélioré la granularité du verrouillage et la gestion SMP, et a ajouté la prise en charge des plateformes m68k , PowerPC , Sparc64 , Alpha et autres plateformes 64 bits . De plus, elle a intégré de nouveaux systèmes de fichiers, notamment la fonctionnalité de lecture seule NTFS de Microsoft . En 1999, IBM a publié ses correctifs pour le code Linux 2.2.13 afin d'assurer la prise en charge de l' architecture S/390
La version 2.4.0, sortie le 4 janvier 2001 , prenait en charge ISA Plug and Play , l'USB et les cartes PC . Linux 2.4 ajoutait la prise en charge des processeurs Pentium 4 et Itanium (ce dernier introduisant l' architecture ISA ia64 , développée conjointement par Intel et Hewlett-Packard pour remplacer l'ancienne architecture PA-RISC ), ainsi que du nouveau processeur MIPS 64 bits . Le développement des versions 2.4.x évoluait légèrement, avec l'ajout de nouvelles fonctionnalités, notamment la prise en charge du Bluetooth , du gestionnaire de volumes logiques (LVM) version 1, du RAID , d'InterMezzo et des systèmes de fichiers ext3 .
La version 2.6.0 a été publiée le 17 décembre 2003. Le développement de la version 2.6.x a évolué pour inclure de nouvelles fonctionnalités dans toute la série. Parmi les changements apportés à la série 2.6, on peut citer : l'intégration de μClinux dans les sources du noyau principal, la prise en charge de PAE , la prise en charge de plusieurs nouvelles gammes de processeurs , l'intégration de l'architecture sonore Linux avancée (ALSA) dans les sources du noyau principal, la prise en charge de jusqu'à 2 <sup>32</sup> utilisateurs (contre 2 <sup>16</sup> auparavant ), la prise en charge de jusqu'à 2 <sup>29</sup> identifiants de processus (64 bits uniquement, les architectures 32 bits étant toujours limitées à 2 <sup>15</sup> ), une augmentation substantielle du nombre de types de périphériques et du nombre de périphériques de chaque type, une prise en charge améliorée du 64 bits , la prise en charge des systèmes de fichiers prenant en charge des tailles de fichiers allant jusqu'à 16 téraoctets , la préemption dans le noyau , la prise en charge de la bibliothèque de threads POSIX native (NPTL), l'intégration de Linux en mode utilisateur dans les sources du noyau principal, l'intégration de SELinux dans les sources du noyau principal, la prise en charge d'InfiniBand , et bien plus encore.
À partir des versions 2.6.x, le noyau a pris en charge un grand nombre de systèmes de fichiers. Certains étaient conçus pour Linux, comme ext3 , ext4 , FUSE et Btrfs . D'autres étaient natifs d'autres systèmes d'exploitation comme JFS , XFS , Minix, Xenix , Irix , Solaris , System V , Windows et MS-DOS .
Bien que le développement n'ait jusqu'alors utilisé aucun système de contrôle de version , en 2002, les développeurs Linux ont adopté BitKeeper , mis à leur disposition gratuitement malgré son statut de logiciel non libre . En 2005, suite à des tentatives de rétro-ingénierie , l'entreprise propriétaire du logiciel a retiré son soutien à la communauté Linux. En réaction, Torvalds et d'autres ont développé Git . Ce nouveau système a été écrit en quelques semaines, et deux mois plus tard, le premier noyau officiel utilisant Git a été publié.
En 2005, l' équipe stable a été formée en réponse à l'absence d'un noyau partagé où travailler sur les corrections de bogues , et elle se chargerait de la mise à jour des versions stables . En février 2008, le noyau Linux Next a été créé pour centraliser les correctifs destinés à être intégrés lors du cycle de développement suivant. Plusieurs responsables de sous-systèmes ont également adopté le suffixe `-next` pour les noyaux contenant du code qu'ils prévoient de soumettre pour inclusion dans la prochaine version. i386 , et plus précisément en n'émulant plus l' instruction atomique CMPXCHG introduite avec l' i486 pour permettre des mutex fiables . La série de noyaux 3.7 est ainsi devenue la dernière à prendre en charge le processeur d'origine. Cette même série a unifié la prise en charge du processeur ARM .
Le changement de numérotation de 2.6.39 à 3.0, puis de 3.19 à 4.0, n'a entraîné aucune différenciation technique significative ; le numéro de version majeure a simplement été augmenté pour éviter des numéros de version mineure trop longs. Des noyaux 3.xy stables ont été publiés jusqu'à la version 3.19 en février 2015. La version 3.11, publiée le 2 septembre 2013, a ajouté de nombreuses nouvelles fonctionnalités telles que le nouvel indicateur O_TMPFILE
En avril 2015, Torvalds a publié la version 4.0 du noyau Linux. En février 2015, Linux avait reçu les contributions de près de 12 000 programmeurs issus de plus de 1 200 entreprises, dont certains des plus grands fournisseurs mondiaux de logiciels et de matériel. La version 4.1 de Linux, publiée en juin 2015, contient plus de 19,5 millions de lignes de code, fruit du travail de près de 14 000 programmeurs.
En mars 2019, Linus Torvalds annonça que la version 4.22 du noyau serait désormais numérotée 5.0, expliquant que « “5.0” ne signifie rien de plus que les numéros 4.x étaient devenus tellement longs que je n’avais plus de doigts ni d’orteils ». Cette version comprenait de nombreuses nouveautés importantes, telles que la prise en charge des écrans AMD Radeon FreeSync et NVIDIA Xavier, des correctifs pour F2FS , EXT4 et XFS , le rétablissement de la prise en charge des fichiers d’échange sur le système de fichiers Btrfs et la poursuite du développement des processeurs graphiques Intel Icelake Gen11 et des SoC NXP i.MX8 . Cette version était sensiblement plus volumineuse que les précédentes, Torvalds précisant que « les changements apportés par l’ensemble de la version 5.0 sont beaucoup plus importants ».
Au total, 1 991 développeurs, dont 334 étaient des collaborateurs pour la première fois, ont ajouté plus de 553 000 lignes de code à la version 5.8, battant le record précédemment détenu par la version 4.9.
Popularité
La plupart des sites web fonctionnent sur des systèmes d'exploitation basés sur Linux , et tous les 500 supercalculateurs les plus puissants du monde fonctionnent sous Linux.
Les distributions Linux regroupent le noyau avec les logiciels système (par exemple, la bibliothèque GNU C , systemd et d'autres utilitaires et démons Unix ) et une large sélection de logiciels d'application , mais leur part d'utilisation sur les ordinateurs de bureau est faible par rapport aux autres systèmes d'exploitation.
Android , qui fonctionne sur un noyau Linux modifié, représente la majorité des systèmes d'exploitation pour appareils mobiles, et est de plus en plus utilisé dans les appareils embarqués , ce qui en fait un moteur important de l'adoption de Linux.
Valeur

Le coût de redéveloppement de la version 2.6.0 du noyau Linux dans un contexte de développement propriétaire traditionnel a été estimé à 612 millions de dollars américains (467 millions d'euros, 394 millions de livres sterling) aux prix de 2004, selon le modèle d'estimation COCOMO par personne-mois. En 2006, une étude financée par l'Union européenne a évalué le coût de redéveloppement de la version 2.6.8 du noyau à 882 millions d'euros (1,14 milliard de dollars, 744 millions de livres sterling).
Ce sujet a été réexaminé en octobre 2008 par Amanda McPherson, Brian Proffitt et Ron Hale-Evans. En utilisant la méthodologie de David A. Wheeler, ils ont estimé que la refonte du noyau 2.6.25 coûte désormais 1,3 milliard de dollars (sur un total de 10,8 milliards de dollars pour la refonte de Fedora 9). Par ailleurs, Garcia-Garcia et Alonso de Magdaleno, de l'Université d'Oviedo (Espagne), estiment que la valeur ajoutée annuelle au noyau était d'environ 100 millions d'euros entre 2005 et 2007 et de 225 millions d'euros en 2008. Son développement au sein de l'Union européenne coûterait également plus d'un milliard d'euros (environ 1,4 milliard de dollars en février 2010).
En se basant sur le nombre de lignes de code ( LOC ) alors en vigueur pour un noyau Linux 2.6.x et sur les estimations salariales de David A. Wheeler, la refonte du noyau Linux, qui ne cesse de s'alourdir, coûterait environ 3 milliards de dollars (environ 2,2 milliards d'euros). Calcul actualisé distribution Linux . Certaines distributions intègrent le noyau stable. Plusieurs fournisseurs (comme Red Hat et Debian ) maintiennent une arborescence de sources personnalisée. Celle-ci est généralement mise à jour moins fréquemment que la branche stable et inclut généralement tous les correctifs de cette dernière. Cependant, elle peut également ajouter la prise en charge de pilotes ou de fonctionnalités qui n'étaient pas disponibles dans la version stable sur laquelle le fournisseur de la distribution s'est basé.
Développeurs
Communauté
Conflit
Conflits notables entre les développeurs du noyau Linux :
- En juillet 2007, Con Kolivas a annoncé qu'il cesserait de développer pour le noyau Linux.
- En juillet 2009, Alan Cox a quitté son rôle de responsable de la couche TTY après un désaccord avec Torvalds.
- En décembre 2010, une discussion a eu lieu entre James Bottomley, responsable de la maintenance SCSI sous Linux, et Vladislav Bolkhovitin, responsable de la maintenance SCST, au sujet de la pile cible SCSI à inclure dans le noyau Linux. Cette discussion a suscité le mécontentement de certains utilisateurs de Linux.
- En juin 2012, Torvalds a clairement indiqué qu'il n'était pas d'accord avec la décision de NVIDIA de publier ses pilotes comme étant fermés.
- En avril 2014, Torvalds a interdit à Kay Sievers de soumettre des correctifs au noyau Linux pour avoir omis de traiter des bogues qui provoquaient une interaction négative entre systemd et le noyau.
- En octobre 2014, Lennart Poettering a accusé Torvalds de tolérer le style de discussion brutal sur les listes de diffusion liées au noyau Linux et d'être un mauvais exemple.
- En mars 2015, Christoph Hellwig a intenté un procès contre VMware pour violation des droits d'auteur sur le noyau Linux. Linus Torvalds a clairement exprimé son désaccord avec cette initiative et d'autres similaires, qualifiant les avocats de maladie purulente.
- En avril 2021, une équipe de l' Université du Minnesota a été surprise en train de soumettre des correctifs de mauvaise foi au noyau dans le cadre de ses recherches. Tous les correctifs soumis par un membre de l'université ont été immédiatement annulés. De plus, un responsable de la maintenance a averti que tout futur correctif provenant de l'université serait rejeté d'emblée.
- En février 2025, Hector Martin a démissionné de son poste de responsable du projet Asahi Linux (qui ajoutait la prise en charge des systèmes Apple Silicon à Linux) et des sous-systèmes du noyau associés en raison de désaccords concernant l'utilisation du langage de programmation Rust dans le noyau.
- En juin 2025, le système de fichiers Bcachefs créait des tensions avec Torvalds et en septembre 2025, il a été retiré du noyau Linux à partir de la version 6.18.
Les principaux développeurs du noyau Linux sont conscients de l'importance d'éviter les conflits entre développeurs. Pendant longtemps, aucun code de conduite n'a été établi pour les développeurs du noyau en raison de l'opposition de Torvalds. Un Code de gestion des conflits du noyau Linux a été introduit le 8 mars 2015. Il a été remplacé le 16 septembre 2018 par un nouveau Code de conduite basé sur le Contributor Covenant . Ce changement a coïncidé avec des excuses publiques de Torvalds et une brève interruption du développement du noyau. Le 30 novembre 2018, conformément au Code de conduite , Jarkko Sakkinen d'Intel a publié des correctifs remplaçant les occurrences de « fuck » dans les commentaires du code source par des versions plus appropriées, notamment avec le mot « hug ».
Les développeurs qui s'estiment traités injustement peuvent le signaler au Conseil consultatif technique de la Linux Foundation . En juillet 2013, Sage Sharp , responsable du pilote USB 3.0, a demandé à Torvalds de s'attaquer aux propos injurieux tenus au sein de la communauté de développement du noyau. En 2014, Sharp s'est retiré du développement du noyau Linux, déclarant : « L'accent mis sur l'excellence technique, combiné à la surcharge de travail des responsables et à des différences culturelles et sociales, fait que les responsables du noyau Linux sont souvent directs, voire brusques, pour mener à bien leur travail. » Lors de la conférence linux.conf.au (LCA) de 2018, les développeurs ont estimé que la culture de la communauté s'était nettement améliorée ces dernières années. Daniel Vetter, responsable du pilote graphique Intel drm/i915, a commenté que le « langage et les discussions plutôt violents » au sein de la communauté du noyau avaient diminué, voire disparu.
Lors de la conférence Embedded Linux Europe 2017, Laurent Pinchart a sollicité l'avis des développeurs sur leur expérience avec la communauté du noyau. Les problèmes soulevés ont été discutés quelques jours plus tard lors du Maintainers Summit. Shuah Khan , responsable du framework d'autotest du noyau, a fait part de ses inquiétudes quant au manque d'homogénéité dans le traitement des correctifs par les responsables de la maintenance. Torvalds a soutenu qu'il serait impossible d'atteindre une uniformité totale dans la gestion des correctifs, car les différents sous-systèmes du noyau ont, au fil du temps, adopté des processus de développement distincts. Il a donc été convenu que chaque responsable de sous-système du noyau documenterait les règles d'acceptation des correctifs.
Développement
— Linus Torvalds, 2005
Base de code
Le code source du noyau, également appelé arbre source, est géré dans le système de contrôle de version Git liste de diffusion du noyau Linux (LKML) (et souvent aussi sur d'autres listes de diffusion dédiées à des sous-systèmes particuliers). Ces correctifs doivent respecter un ensemble de règles et un langage formel qui, entre autres, décrit les lignes de code à supprimer et celles à ajouter aux fichiers spécifiés. Ces correctifs peuvent être traités automatiquement afin que les administrateurs système puissent les appliquer pour apporter des modifications ponctuelles au code ou pour effectuer une mise à niveau progressive vers la version suivante. Linux est également distribué aux formats GNU zip (gzip) et bzip2 .
Un développeur souhaitant modifier le noyau Linux écrit et teste une modification de code. Selon l'importance de la modification et le nombre de sous-systèmes concernés, elle sera soumise soit sous forme de correctif unique, soit sous forme de plusieurs correctifs de code source . Dans le cas d'un sous-système unique maintenu par un seul responsable, ces correctifs sont envoyés par courriel à ce responsable, avec la liste de diffusion appropriée en copie. Le responsable et les abonnés de la liste de diffusion examineront les correctifs et donneront leur avis. Une fois l'examen terminé, le responsable du sous-système accepte les correctifs dans l' arborescence Git du noyau concerné. Si les modifications apportées au noyau Linux sont des corrections de bogues jugées suffisamment importantes, une demande de fusion (pull request) sera envoyée à Torvalds sous quelques jours. Sinon, elle lui sera envoyée lors de la prochaine fenêtre de fusion. Cette fenêtre dure généralement deux semaines et commence immédiatement après la publication de la version précédente du noyau. L'arborescence source du noyau Git nomme tous les développeurs qui ont contribué au noyau Linux dans le répertoire Credits et tous les responsables de sous-systèmes sont listés dans Maintainers .
Comme pour de nombreux projets de logiciels libres de grande envergure, les développeurs sont tenus de respecter le Pacte des contributeurs , un code de conduite visant à lutter contre le harcèlement des contributeurs issus de minorités. De plus, afin de prévenir toute offense, l'utilisation d'une terminologie inclusive dans le code source est obligatoire.
langage de programmation
En septembre 2021, la version requise de GCC pour la compilation et la construction du noyau Linux est passée de GCC 4.9 à 5.1, permettant ainsi au noyau de passer de l'utilisation de code C basé sur la norme C89 à l'utilisation de code écrit avec la norme C11 , la migration vers la norme ayant eu lieu en mars 2022, avec la sortie de Linux 5.18.
La prise en charge initiale du langage de programmation Rust a été ajoutée dans Linux 6.1, sorti en décembre 2022, et améliorée par les versions ultérieures du noyau, telles que Linux 6.2 et Linux 6.3.
Style de codage
Depuis 2002, le code doit respecter les 21 règles du style de codage du noyau Linux.
Versionnage
Comme pour la plupart des logiciels, le noyau est versionné sous forme d'une série de nombres séparés par des points.
Pour les premières versions, le numéro de version était composé de trois ou quatre nombres séparés par des points : version majeure , version mineure et révision. À cette époque, les versions mineures impaires étaient destinées au développement et aux tests, tandis que les versions mineures paires étaient destinées à la production. Le quatrième chiffre, optionnel, indiquait le niveau de correctif. Les versions de développement étaient indiquées par le suffixe « -rc » (version candidate ).
Les conventions de versionnage actuelles sont différentes. La distinction entre versions paires et impaires (développement/production) a été abandonnée ; une version majeure est désormais indiquée par ses deux premiers chiffres. Tant que le développement de la prochaine version majeure est possible, le suffixe -rcN permet d'identifier la n-ième version candidate (release candidate) de cette version. Par exemple, la version 4.16 a été précédée de sept versions 4.16-rcN (de -rc1 à -rc7). Une fois une version stable publiée, sa maintenance est confiée à l' équipe de maintenance . Les mises à jour d'une version stable sont identifiées par un système à trois chiffres (par exemple : 4.16.1, 4.16.2, etc.).
Chaîne d'outils
Le noyau est généralement construit avec la chaîne d'outils GNU . Le compilateur C GNU (GNU cc), qui fait partie de la collection de compilateurs GNU (GCC), est le compilateur par défaut pour le système Linux principal. L'enchaînement des opérations est géré par GNU make . L' assembleur GNU (souvent appelé GAS ou GNU as) génère les fichiers objets à partir du code assembleur produit par GCC . Enfin, l' éditeur de liens GNU (GNU ld) produit un fichier exécutable du noyau lié statiquement, appelé vmlinux . as et ld font tous deux partie des utilitaires binaires GNU (binutils).
Pendant longtemps, GNU cc a été le seul compilateur capable de compiler correctement Linux. En 2004, Intel a affirmé avoir modifié le noyau afin que son compilateur C puisse également le compiler. Un autre succès similaire a été rapporté en 2009, avec une version modifiée 2.6.22. Le support du compilateur Intel a été abandonné en 2023.
Depuis 2010, des efforts sont déployés pour compiler Linux avec Clang , un compilateur alternatif pour le langage C ; au 12 avril 2014, le noyau officiel pouvait presque être compilé avec Clang. Le projet dédié à cet effort est nommé LLVMLinux, d'après l' infrastructure de compilation LLVM sur laquelle Clang est construit. LLVMLinux ne vise pas à créer de fork de Linux ni de LLVM ; il s'agit donc d'un méta-projet composé de correctifs qui sont ensuite soumis aux projets amont. En permettant la compilation de Linux avec Clang, les développeurs peuvent bénéficier de temps de compilation plus courts.
En 2017, les développeurs ont finalisé l'intégration de correctifs au noyau Linux pour permettre sa compilation avec Clang dans la version 4.15, après avoir rétroporté la prise en charge des architectures x86-64 et AArch64 vers les branches 4.4, 4.9 et 4.14 de l'arbre de développement stable. Le Pixel 2 de Google a été livré avec le premier noyau Linux compilé avec Clang , bien que des correctifs existaient déjà pour le Pixel (première génération) . En 2018, ChromeOS a commencé à utiliser Clang pour la construction des noyaux par défaut, tandis qu'Android a rendu Clang et le linker LLD de LLVM obligatoires pour la construction des noyaux en 2019. Google a migré son noyau de production utilisé dans tous ses centres de données vers une construction avec Clang en 2020. Le groupe ClangBuiltLinux coordonne les correctifs pour Linux et LLVM afin d'assurer la compatibilité, les deux étant composés de membres de LLVMLinux et ayant des correctifs amont de LLVMLinux .
Débogage
Comme pour tout logiciel, les problèmes liés au noyau Linux peuvent être difficiles à résoudre . Les difficultés courantes concernent l'accès à l'espace utilisateur par rapport à l'espace noyau, la mauvaise utilisation des primitives de synchronisation et une gestion matérielle incorrecte.
Une erreur oops est une erreur non fatale du noyau. Après une telle erreur, les opérations se poursuivent avec une fiabilité incertaine.
Une panique (générée par panic() ) est une erreur fatale. Après une telle erreur, le noyau affiche un message et arrête l'ordinateur.
Le noyau permet le débogage par affichage via `printk ()` , qui stocke les messages dans un tampon circulaire (les entrées les plus anciennes étant écrasées par les plus récentes). L' appel système ` syslog(2)` permet de lire et d'effacer le tampon de messages et de définir le niveau de journalisation maximal des messages à envoyer à la console. Les messages du noyau sont également exportés vers l'espace utilisateur via l' interface `/dev/kmsg` . ftrace permet le débogage par traçage. Il est utilisé pour la surveillance et le débogage de Linux en cours d'exécution et peut analyser les latences de l'espace utilisateur dues à des dysfonctionnements du noyau. De plus, ftrace permet aux utilisateurs de tracer Linux au démarrage.
Les kprobes et les kretprobes peuvent s'insérer dans l'exécution du noyau (comme les débogueurs en espace utilisateur) et collecter des informations de manière non perturbatrice. Les kprobes peuvent être insérées dans le code à (presque) n'importe quelle adresse, tandis que les kretprobes fonctionnent au retour d'une fonction. Les uprobes ont des objectifs similaires, mais présentent également quelques différences d'utilisation et d'implémentation.
Avec KGDB, Linux peut être débogué de manière très similaire aux programmes en espace utilisateur. KGDB nécessite une machine supplémentaire exécutant GDB et connectée à la cible à déboguer via un câble série ou Ethernet .
Processus de changement
Le projet du noyau Linux intègre progressivement du nouveau code. La procédure standard exige que tout logiciel intégré au projet fonctionne et compile sans erreur.
Chaque sous-système du noyau se voit attribuer un responsable de maintenance chargé d'examiner les correctifs par rapport aux normes du code du noyau et de maintenir une file d'attente de correctifs pouvant être soumis à Torvalds dans un délai de fusion généralement de plusieurs semaines.
Les correctifs sont intégrés par Torvalds au code source de la version stable précédente du noyau Linux, créant ainsi la version candidate (-rc) pour la prochaine version stable. Une fois la période d'intégration terminée, seules les corrections apportées au nouveau code de la version de développement sont acceptées. La version de développement -rc du noyau est soumise à des tests de régression et, une fois qu'elle est jugée stable par Torvalds et les responsables des sous-systèmes, une nouvelle version est publiée et le processus de développement recommence.
Linux principal
kernel.org . Linux mainline ne prend en charge qu'un petit nombre de périphériques exécutant Linux. La prise en charge des périphériques non mainline est assurée par des projets indépendants, tels que Yocto ou Linaro , mais dans de nombreux cas, le noyau du fabricant du périphérique est nécessaire . L'utilisation d'un noyau fourni par le fabricant requiert généralement un paquet de support de carte (BSP) .
Maintenir une arborescence du noyau en dehors du noyau Linux principal s'est avéré difficile.
L'intégration au noyau principal (mainlining) désigne l'effort d'ajouter la prise en charge d'un périphérique au noyau principal , alors qu'auparavant cette prise en charge n'était assurée que par une branche dérivée ou qu'elle était totalement inexistante. Cela comprend généralement l'ajout de pilotes ou de fichiers d'arbre de périphériques . Une fois cette opération terminée, la fonctionnalité ou le correctif de sécurité est considéré comme intégré au noyau principal .
Noyau de type Linux
Le responsable de la branche stable, Greg Kroah-Hartman , a utilisé le terme « de type Linux » pour désigner les forks du noyau Linux créés par les fournisseurs et qui ajoutent des millions de lignes de code au noyau principal. En 2019, Google a déclaré vouloir utiliser le noyau Linux principal dans Android afin de réduire le nombre de forks. Le terme « de type Linux » a également été appliqué au sous-ensemble du noyau Linux embarqué (Embeddable Linux Kernel Subset ), qui n'inclut pas l'intégralité du noyau Linux principal, mais un petit sous-ensemble modifié du code.
forks de Linux

Certaines communautés développent des noyaux basés sur la distribution Linux officielle. Des portions de code intéressantes issues de ces forks , tels que Linux-libre , Compute Node Linux , INK , L4Linux , RTLinux et User-Mode Linux (UML), ont été intégrées au noyau principal. Certains systèmes d'exploitation développés pour téléphones mobiles utilisaient initialement des versions fortement modifiées de Linux, notamment Google Android , Firefox OS , HP webOS , Nokia Maemo et Jolla Sailfish OS . En 2010, la communauté Linux a critiqué Google pour avoir, de fait, créé son propre arbre de développement de noyaux :
Greg Kroah-Hartman , 2010

