Ses caractéristiques principales sont d'êtremultitâche etmulti-utilisateur. Il respecte les normesPOSIX ce qui en fait un digne héritier des systèmesUNIX. Au départ, le noyau a été conçu pour être monolithique. Ce choix technique fut l'occasion dedébats enflammés entreAndrew S. Tanenbaum, professeur à l'université libre d'Amsterdam qui avait développéMinix, etLinus Torvalds. Andrew Tanenbaum arguant que les noyaux modernes se devaient d'être desmicro-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).
Linus Torvalds fait son apprentissage avec le système d’exploitationMinix. 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 unmodem auserveur informatique de son université. Après l’ajout de diverses fonctionnalités dont unsystème de fichiers compatible avec celui de Minix, Linus oriente son projet vers quelque chose de plus ambitieux : un noyau aux normesPOSIX. À ce noyau, il adapte de nombreux composants disponibles du système d’exploitationGNU pour obtenir un système d’exploitation plus complet.
Le, il annonce[5] sur leforumUsenetnews: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[6]. Enfin en, la version 0.12 est diffusée sous laLicence publique générale GNU (GNU GPL) à la place de la licencead hoc qui interdisait jusque-là la redistribution commerciale[7].
La version Linux 1.0.0 a été lancée le[8] avec 176 250 lignes de code[9].
Initialement appeléFreax par son créateur, le projet trouve son nom définitif grâce àAri Lemmke[10], administrateur du serveurFTPftp.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 unemarque déposée au nom de Linus Torvalds[11]. Le manchotTux, dessiné parLarry 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 collectifsopen source[12]. 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'essaiLa Cathédrale et le Bazar (2001) le modèle de développement du noyau Linux et d’une partie deslogiciels libres[13].
Dans lessystèmes embarqués, Linux est fréquemment utilisé avec les outilsuClibc etBusyBox 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.
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, commeRed Hat,Novell,IBM ouIntel[14].
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.
Lalicence du noyau Linux est lalicence 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 dunoyau.
Entre mars et, le nombre de lignes decode 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[15] dans 28 000 fichiers[14], alors que 2,8 millions de lignes ont été ajoutées entre Noël 2008 et[16].
Entre 2005 et mi-2009, 5 000 développeurs et500 entreprises ont participé à l'écriture du noyau. Le nombre de patchs proposé est en augmentation, notamment depuis la version 2.6.25[14].
Linus Torvalds, créateur du noyau Linux, est le mainteneur officiel depuis le début en1991. 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 noyauxvanilla 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.
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.
Leprocessus 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.
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[17].
Depuis (date de publication du noyau 2.6.11),Greg Kroah-Hartman et Chris Wright tentent de maintenir une branche stabilisée du noyauvanilla 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.
Il existe une multitude depatches 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 distributionUbuntu 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 sonthroughput. 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.
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[18].
Les patches d'Ingo Molnársuffixés -rt sont utilisés par les distributions Linuxmultimédia commeDeMuDi ; 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 noyaukgdb.
Nouveau mainteneur pour leslinux root diskette :Jim Winstead.
0.96 - 0.99 patch level 15Z
2 ans de développement, pour l'ajout de fonctionnalités et de corrections, les forums comp.os.linux.* sont les plus fréquentés de Usenet et sont réorganisés trois fois, signe que la communauté grandit et est très active.
1.0
Le noyau Linux est stable pour la production et fournit les services d'unUNIX classique (176 000 lignes de codes).
1.2
Beaucoup plus d'architectures processeur, modules chargeables… (311 000 lignes de codes)
2.0
PowerPC,Multiprocesseur, plus de matériels supportés, gestion du réseau plus complète, apparition de la mascotteTux.
ALSA, noyau préemptible,ACL,NFS 4… (5,93 millions de lignes de codes)
2.6.16 LTS
Première version avec un support étendu, support du OCFS2, support desprocesseurs Cell, ajout de 13 nouveaux appels système pour les plateformes x86 et x86_64, support de cpufreq pour lesPower Mac G5, amélioration de la gestion de l'énergie pour certains périphériques, supportIPv6 pour le protocoleDCCP, gestion des ACL pour le système de fichiersCIFS, gestion du système de fichiersHFSX, support de l'exécution d'exécutables à partir de système de fichiers plan9…[20].
2.6.17
Support des CPU multicoeurs Niagara de Sun, support du chipset wifi Broadcom 43xx, optimisation de l'image du noyau au démarrage sur les x86, nouvel ordonnanceur optimisé pour les processeurs multicoeurs…[21].
2.6.18
Outil Lockdep, Priority inheritance, gestion des priorités avec SMPnice, ordonnanceur CFQ…[22].
2.6.19
Système de fichiers GFS2, chiffrement eCryptfs, sous-système libata, etc.[23].
2.6.20
Virtualisation KVM, Support UDP-Lite, scan asynchrone SCSI…[24].
2.6.21
Interface deparavirtualisation VMI (Virtual Machine Interface), Dynticks et Clockevents…[25].
2.6.22
Toute nouvelle couche wifi, allocateur de mémoire SLUB,ordonnanceur d'E/SCFQ, nouveaux pilotes…[26] (8,499 millions de lignes de codes).
2.6.23
Nouvelordonnanceur de tâchesCFS, environnement de support des pilotes en espace utilisateur UIO intégré au noyau, SLUB allocateur de mémoire par défaut…[27].
2.6.24
Unification des architecturesi386 et x86-64,E/S vectorielles, authentification des périphériques USB, ordonnancement de groupe avecCFS…[28].
2.6.25
SMACK (alternative àSELinux), gestion du busCAN, refonte detimerfd, amélioration de la gestion dutemps réel…[29].
Gestionnaire de mémoire pour cartes graphiques GEM (Graphics Execution Manager), système de fichiersext4, meilleure montée en charge de la gestion mémoire, gestion des réseauxUWB…[32].
Intégration deNILFS, d'un cache local pour lessystèmes de fichiers distants, du module de sécurité TOMOYO, du support des équipements de stockageobjet[34] (11,561 millions de lignes de codes).
2.6.31
Prise en charge d'USB 3.0, apparition de l'APIfsnotify pour la notification des évènements relatifs au système de fichiers, défragmentation à chaud d'ext4, moniteur de performancesperfcounters[35].
2.6.32 LTS
Écriture des données par BDI, Changements dans l'ordonnanceur CFS, Gestion dynamique de l'énergie, Gestion d'intégritéTXT,devtmpfs pour le listage des périphériques, techniqueKSM pour la réduction de l'empreinte mémoire de systèmes virtualisés avecKVM[36], prise en charge de la fonctionTRIM parBtrfs.
2.6.33 LTS
Système de fichierDRBD, piloteNouveau, transaction TCP par cookie, contrôleur IO-Block[37], prise en charge de la fonctionTRIM parext4.
2.6.34 LTS
Systèmes de fichiers Ceph et LogFS, mise en veille asynchrone des périphériques, mécanisme de sécurité GTSM, Lockdep-RCU, VGA-Switcheroo[38].
2.6.35 LTS
Fonction cpu_stop, gestion de l'énergie, Compactage mémoire, performances réseau avec RPS et RFS, Qualité de service avec pm_qos, Gestion des interruptions[39].
2.6.36
AppArmor, réécriture de la fonctionOOM Killer, outilfanotify, optimisationsVFS[40].
2.6.37
Amélioration des performances d'ext4 et des mécanismes detraçage (jump label), prise en charge de FITRIM (unTRIM différé) pourext4, introduction de l'allocateur mémoirememblock en remplacement deearly_res, pilePPTP, premier pilote wifiBroadcom (tous les principaux constructeurs wifi ont maintenant un pilote libre)[41].
Approche par thread pour le branchement despériphériques, intégration officielle de ipsets[43], prise en charge de FITRIM (unTRIM différé) parBtrfs, fin du verrou global (Big Kernel Lock).
3.0 LTS
Nouvelle mise en cache des pages mémoire, améliorations deBtrfs, nouvelle interface d'accès à l'alarme duBIOS, suppression de prefetch, compilateur à la volée pour les instructions de comparaison de la pile réseau[44].
3.1
ArchitectureOpenRISC, gestion de la consommation par cpupower, ajouts de fonctionnalités pourKVM, amélioration de la gestion mémoire deXen, de la gestion des débits des disques, duVirtual File System, du protocoleBATMAN, ajout de pilotesNFC[45]
3.2 LTS
Amélioration deCFS,ext4,Btrfs,MPI et des pilotes graphiques, algorithmesExtended Verification Module pour la vérification cryptographique etProportional rate reduction pour la pileTCP, gestion desgénérateurs de nombres aléatoires numériques et des architectures Hexagon etsecAMD Bulldozer, gestion dynamique duwriteback, implémentation en assembleur deSHA-1,Blowfish etTwofish, RAID-5 pourEXOFS(en), APIDynamic Voltage and Frequency Scaling, lecture asynchrone pourSMB[46]. La version 3.2.5 règle un bogue existant depuis la version 2.6.38 dans gestion de l’ASPM (Active State Power Management) qui provoquait une surconsommation d’énergie.
3.3
Intégration des pilotesAndroid, delibgcrypt, d'Open vSwitch, d'un pilote réseau « team », de l'architecture C6X, ajout d'uncgroup pour les ressources réseau, « naturalisation » de memcg, nouvelle infrastructure de « byte queue limits », bufferDMA,PAE pour les processeursARM, support de LLCP etNVM Express, nouveau gestionnaire de batterie, amélioration deext4 etBtrfs, reconstruction « à chaud » pour le RAID, sortie audio via HDMI[47]
Algorithme CoDel pour la pile TCP, refonte de la table des exceptions x86, meilleure gestion deEDAC,NUMA, des espaces de noms des utilisateurs et des journaux du noyau, amélioration deBtrfs,ext4,perf et des pilotes graphiquesAMD etintel, méthodeautosleep, filtrage des appels systèmes par Seccomp, sondes uprobes, moderepair pour les connexions TCP[49]
3.6
Veille et hibernation combinées, économie d'énergie pour ATA et PCIe, améliorations deTCP, deBtrfs etext4, de la génération d'entropie et des pilotes graphiques, suppression du cache de routage IPv4, swap sur NFS, meilleure gestion des SSD en RAID[50]
3.7
Compilation multiplateforme, version 64 bits et virtualisation pour l'architecture ARM,Supervisor Mode Access Prevention, gestion de la signature des modules par MODSIGN, de laWii Balance Board, du processeurSPARC T4(en), réécriture deKMS et de Nouveau, amélioration du pilote Radeon, deTCP, deperf, des systèmes de fichiersBtrfs etext4,NATIPv6, VXLAN, nettoyage des en-têtes[51]
3.8
Fin du support dei386, ajout du support dePOWER8, amélioration de l'ordonnanceurNUMA, amélioration des pilotes graphiquesTegra,Intel,Nouveau etRadeon, nouveau système de fichiersF2FS et amélioration deBtrfs etext4, amélioration deNetlink, optimisation des algorithmes de chiffrement, gestion du Wi-Fi 802.11ac et 802.11ad, espaces de nom réseau pour les utilisateurs, implémentation de la RFC5961[52]. Ajout des conteneursLXC.
3.9
Nouveau mode de mise en veille, regroupement des architectures ARM, amélioration des pilotes graphiquesIntel,Nouveau etRadeon, RAID 5 et 6 pourBtrfs, améliorations d'IPv6, nouveau filtre dansNetfilter, verrouillage des filtres sur lessocket,device-mapper-cache pour utiliser un périphérique comme cache d'un autre, amélioration de l'algorithmeLZO[53]
3.10 LTS
Ajout du support pourUnified Video Decoder(en), intégration du bcacheSSD/HDD, amélioration significative du support des processeursIntelHaswell, meilleure prise en charge de processeurs ARM 64 bits, amélioration des fonctions de virtualisation et ajout de pilotes audios. Comme à chaque nouvelle version, des mises à jour sont fournies pour les systèmes de fichiersext4 etbtrfs[54]
3.11
Compression des pages de swap, compression du noyau en LZ4 pour l'architecture ARM, optimisation de la création de fichiers temporaires, améliorations pour les architectures ARM et Aarch64, des pilotes graphiques intel, nVidia et ATI/AMD, réduction de la consommation des cartes graphiques parDynamic Power Management etActive State Power Management, améliorations d'ext4, Btrfs, XFS,F2FS et Lustre[55]
3.12 LTS
Amélioration des performances decpufreq,render nodes pourDRM, gestion des droits pour les tampons graphiques, infoframes HDMI et ultra HD, endormissement profond pour les processeurs graphiques Haswell, extinction automatique et décodage matériel VP3-VP4 pour les cartes nVidia, meilleure gestion de l'énergie pour les cartes ATI/AMD, prise en charge des cœurs graphiques Adreno, amélioration des performances deext4 etF2FS[56]
3.13
MécanismeUEFI Common Platform Error Record, earlyprintk pourUEFI, seqcount/seqlocks dans lockdep, équilibrage NUMA automatique, limitation de consommation des processeurs intel, amélioration du pilote pour les GPU ARM Adreno et les cartes nVidia, son sur HDMI et gestion de l'énergie pour les GPU AMD/ATI, gestion des processeursBroadwell (microarchitecture)(en) et duDisplay Serial Interface, remplacement de iptables parnftables, file d'attente multiple pour l'écriture de fichiers par les systèmes multi-cœurs, meilleure gestion duloginuid, amélioration de/dev/urandom[57]
3.14 LTS
Support descoprocesseurs cryptographiquesAMD[58], du chipset Intel Merrifield et de nouveaux processeurs ARM et MIPS, amélioration des pilotes graphiques AMD et intel, accélération pour les GPU nVidia GK110/GK208, adresses IPv6 temporaires en espace utilisateur, bouchon automatique sur TCP, débogueur pourBerkeley Packet Filter, amélioration deBtrfs etF2FS, amélioration de la virtualisation parXen[59].
3.15
Prise en charge du mode mixteEFI, prise en charge du jeu d'instructionAVX-512, amélioration de l'ordonnanceur, abandon d'anciennes plateformes x86, amélioration de la gestion des touches de luminosité, amélioration des pilotes graphiques libres, amélioration de la protection contre lesattaques par déni de service, prise en charge du niveau de sécurité 4 en Bluetooth, stabilisation des systèmes de fichier ext3/4, et amélioration de XFS, Btrfs, F2FS[60]
3.16 LTS
Amélioration des pilotes graphiques libres, TCP Fast Open disponible pour IPv6, corrections de vulnérabilités, améliorations des systèmes de fichiers XFS, Btrfs, F2FS, Reiser4 et NFS[61]
3.17
Prise en charge du mode inactif par la générationBroadwell (microarchitecture)(en), support de nouvelles puces ARM, fin de la prise en charge des architectures IBMPOWER3 etIBM RS64, amélioration des pilotes graphiques libres, corrections de vulnérabilités, améliorations des systèmes de fichiers F2FS, NFS, XFS et Btrfs[62]
3.18 LTS
Accélération de la mise en veille, amélioration du support deCLANG, améliorations des pilotes graphiques libres, corrections de vulnérabilités, améliorations des systèmes devirtualisationXen etKVM, améliorations des systèmes de fichiers F2FS, NFS,OverlayFS,Ceph[63]
3.19
Support de nouvelles pucesARM, prise en charge de la technologieIntel MPX(en), amélioration de la gestion dubug de l'an 2038, amélioration des pilotes graphiques libres, corrections de vulnérabilités, améliorations des systèmes de fichiers F2FS, NFS, OverlayFS, Ceph, Btrfs etSquashFS, améliorations des systèmes de virtualisationXen[64]
4.0
Mise à jour du noyau à la volée, support des pucesTrusted Platform Module 2.0, amélioration des pilotes graphiques libres, corrections de vulnérabilités, améliorations des systèmes de fichiers F2FS, OverlayFS, Ceph et Btrfs, améliorations des systèmes de virtualisation KVM etVirtio[65]
4.1 LTS
Support de nouvelles puces (ARM,Xilinx,Qualcomm), amélioration de la gestion de l’énergie, importante mise à jour de l'architecturex86, correction de vulnérabilités, amélioration des pilotes graphique libres, des systèmes de fichiers et des systèmes de virtualisation[66]
4.2
Support de nouvelles puces (ARM,Hitachi H8), amélioration desverrous, amélioration des performances réseaux, amélioration des modules de sécurité, correction de vulnérabilités, amélioration des pilotes graphique libres, des systèmes de fichiers Btrfs, Ext4, FUSE, F2FS et des systèmes de virtualisation KVM et Xen[67]
4.3
Intel Skylake Graphics activé par défaut, support de l'AMD Radeon R9 Fury, support OpenGL pour VMware, réécriture du pilote NVIDIA/Nouveau, disparition du pilote EXT3 (pris en charge par le pilote EXT4), nombreuses améliorations pour XFS, EXT4, F2FS, Btrfs, RAID5/6 et TRIM.
4.4 LTS
Support pour l'accélération graphique en machine virtuelle, amélioration des I/O (directes et asynchrones), support pour les SSD Open-channel, journalisation duRAID5 dans la couche MD (RAID/LVM), les programmeseBPF peuvent être utilisés par des utilisateurs non privilégiés, nouveau pilotes[68].
4.5
Améliore la gestion de la consommation d'énergie. Support préliminaire pourAMD PowerPlay(en). Retravail massif des architectures ARM v6 et ARM v7[69].
4.6
Ajout du système de fichiersOrangeFS(en), ajout de la gestion de l’USB 3.1, gère la version 5 du protocoleB.A.T.M.A.N.[70].
4.7
Gestion des manettes de la Xbox One de Microsoft, duThunderbolt (interface) d’Apple/Intel, et de l'USB/IP[71].
Améliorations concernant la résistance aux failles de sécurité dans les CPU. Ajout de la seconde partie du code concernant AMDSecure Encrypted Virtualization(en)[80].
Amélioration du pilote libre pour les AMD Radeon VII, portant le rendu à un niveau jamais atteint par aucun pilote libre de GPU et venant concurrencer frontalement le pilote propriétaire pour Nvidia[85].
5.1
Améliorations concernant VFS avec l'ajout de fsopen, améliorations des io asynchrones avec l'intégration de io_uring[86].
Le noyau a longtemps été maintenu sans système degestion de versions, avant tout parce que Linus Torvalds n'aimait pas les systèmes de gestion de version centralisés[108].
En2002, le noyau est passé àBitkeeper, un système de gestion de versionspropriétaire qui correspondait aux exigences techniques de Linus Torvalds. L'utilisation de ce logiciel étaitofferte gratuitement aux développeurs du noyau. Cependant, ne s'agissant pas d'unlogiciel libre, le choix de ce produit a suscité des controverses dans la communauté[109]. Le système n'était, par exemple, pas interopérable avec des systèmes de gestion de versions libres tels queCVS etSVN.
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[110]. 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.
Le noyau Linux est principalement écrit enlangage C, et prévu pour êtrecompilé avec les outils de développement GNU, dont le compilateurGCC.
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.
Lecode source du noyau Linux est disponible sur le sitekernel.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 commandes pour régler la configuration :
make config : programme en mode texte qui énumère toutes les options et demande d'entrer son choix
make menuconfig : utilitaire en mode texte écrit avecncurses, il permet une navigation plus aisée dans la configuration
make 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 commandemake. L'installation est automatisée, les commandesmake install etmake 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 lechargeur de démarrage (LILO,GRUB) pour qu'il exécute l'image du noyau au démarrage. Avec (GRUB,GRUB2) la commandeupdate-grub automatise la configuration.
Bien que le but initial du projet était seulement de fournir un noyau de type UNIX sur les architecturesx86, la disponibilité des sources a permis à des contributeurs de l'adapter à untrè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[111].
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 denavigation par satelliteTomTom ou les téléphones équipés de ladistribution LinuxAndroid.
Alors que la plupart des applications sont développées pour travailler avec descodages 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 desfichiers 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 dushebang, 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 enUnicode.Malgré tout, du texte Unicode peut transiter dans le noyau, notamment lors de l'accès aux systèmes de fichiersNTFS ouCIFS/Samba.
Simple hobby d'un étudiant au départ, le noyau Linux a permis l'émergence desystè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 : en1995, alors que Linux avait déjà acquis une certaine notoriété, un particulier eut l'idée de déposer la marqueLinux, ce que personne n'avait fait. La réaction fut vive dans toute la communauté, le litige se régla à l'amiable etLinus devint propriétaire du nom Linux (et donc libre de le refuser ou non à une distribution jugée par trop commerciale)[112].
Sur les droits d'auteur : en 2003 un procès opposaSCO àIBM au sujet du noyau Linux : voir à ce sujetSCO contre Linux.
Sur les brevets logiciels : incompatibles avec l’idée d’interopérabilité indispensable au succès des logiciels libres, lesbrevets logiciels constituent pour Linux une menace. De tels brevets sont délivrés aux États-Unis, mais ont étérejetés par leParlement européen[113].
Historique des versions et des nouvelles fonctionnalités introduites, avec des dépêches dédiées à chaque version, sur le wiki d'un site communautaire dédié.