Linux W est le nom courant donné à une grande famille de systèmes d'exploitation de machines informatiques. Ces systèmes ont la particularité d'être tous basés sur le noyau Linux W dont le développement a été initié en 1991 par Linus Torvalds W (en photo ci‑contre).
Linux souffre encore d'une réputation de marginalité car le segment des ordinateurs personnels (fixes et portables) reste dominé par Microsoft Windows. Et pourtant, les systèmes Linux sont largement majoritaires dans toutes les autres catégories de machines, notamment :
- les terminaux mobiles (smartphones, tablettes) avec Android ;
- les systèmes embarqués grands publics (télévisions, enceintes connectées, consoles de jeu…)
- les équipements de réseaux, notamment les serveurs web et les routeurs (dont les box d'abonné) ;
- les supercalculateurs.
Ce succès ne doit rien au hasard et s'explique essentiellement par deux aspects caractéristiques de Linux :
- l'excellence des choix de conception en tant que système multi‑tâche et multi‑utilisateurs, dans la lignée de ceux des systèmes Unix ;
- l'existence de nombreuses distributions gratuites et à sources ouvertes, ouvrant dès le départ la porte au travail communautaire d'amélioration et de perpétuel enrichissement par de nouvelles fonctionnalités.
Pour toutes ces raisons, il ne fait aucun doute qu'une bonne connaissance de Linux est indispensable à tout technicien en informatique. Dans cette perspective, le présent chapitre se donne les objectifs suivants :
- brosser un rapide historique, afin de mieux comprendre la diversité de ses distributions actuelles ;
- donner un synoptique de son architecture logicielle, en identifiant dès à présent les composantes clefs (les applications, le shell, le noyau) ;
- dresser un panorama des principales distributions, en distinguant leurs différences en termes de gratuité ou non, de support, de composants logiciels.
Bref historique de Linux
Des origines multiples
Aucune invention moderne ne se produit ex‑nihilo et Linux ne fait pas exception à la règle. Ses origines sont particulièrement complexes, elles s'enchevêtrent dans le fil de trois histoires « parallèles » :
- celle du système d'exploitationUnix ;
- celle du logiciel libre et plus particulièrement du projet GNU ;
- celle des normes POSIX qui tâchent de spécifier les exigences d'un système d'exploitation bien conçu.
Dans cet enchevêtrement, il n'est pas toujours facile d'identifier les causes et les conséquences de telle ou telle évolution contribuant à l'avènement de Linux.
Le système Unix – un ancêtre révolutionnaire
Unix W est à l'origine le nom donné à un système d'exploitation multi‑tâches et multi‑utilisateurs pour gros et mini‑ordinateurs, développé dès 1970 au sein laboratoires Bell du géant américain des télécommunications AT&T W, avec pour principaux concepteurs et codeurs Ken Thompson W et Dennis Ritchie W.
Mais aujourd'hui :
- le nom Unix désigne toute une famille de systèmes d'exploitation à licence propriétaire (Solaris, AIX, etc.) ou libre (famille BSD).
- Écrit en majuscules UNIX détenue par l'OpenGroup, c'est une marque déposée qui ne peut être exploitée qu'à condition de respecter un cahier des charges précis, la single UNIX specification W.
L'histoire d'Unix est une véritable saga qui a connu de nombreux rebondissement qu'il est fastidieux de raconter en détail, mais dont on peut retenir quelques étapes clefs :
- Dès les premières années de mise au point (1970 – 1973), Unix apporte déjà des avancées majeures par rapport à son prédécesseur Multics .
- Mais depuis 1956, un décret antitrust du gouvernement américain empêche AT&T de commercialiser des produits en dehors de son champ d'activité principal, les télécommunications (dont l'informatique ne fait pas encore partie). Aussi, en 1974, AT&T décide la diffusion d' Unix aux organismes de recherche et d'enseignement ainsi qu'à des entreprises, via une licence quasi‑gratuite.
- En 1978, c'est un coup de théâtre ! AT&T est autorisée à commercialiser des licences d'Unix. Or les universités n'ont pas les moyens de financer l'achat de ces licences au regard du grand nombre de leurs utilisateurs. De plus, cela va à l'encontre de leur philosophie de développement basé sur la gratuité et la coopération. L'Université de Californie de Berkeley W entreprend alors, à partir de ses propres travaux, de diffuser un système concurrent appelé BSD W (Berkeley software distribution), dont le développement avait commencé dès 1975.
- Les années qui suivent ne vont faire qu'accentuer cette dispersion, au point qu'on parle de guerre des Unix W pour décrire une période d'une décennie entre les années 1980 et 1990. Le schéma ci‑contre donne une représentation simplifiée de la chronologie des différentes distributions d'Unix.
GNU – un projet inachevé
Les normes POSIX – un standard ouvert
L'avènement de Linux
Architecture logicielle générale d'un système Linux
Vue d'ensemble
Le noyau
Le shell
Les applications
Le bureau graphique
Le démarrage
Chargeur d'amorçage W (bootloader)
Le GRUB
Outil GNU W
Le système de fichiers
Pour un système d'exploitation, ce qu'on appelle le système de fichiers W – en anglais, file system – est l'agencement des fichiers propres au système lui‑même, aux applications et aux utilisateurs, tel qu'il est présenté dans l'interface utilisateur.
Tout système de fichiers de système d'exploitation repose sur les concepts fondamentaux de partition et de répertoire :
- une partition W formant une division d'un périphérique de stockage de masse (disque dur, etc.) pouvant adopter une implémentation particulière pour le stockage des fichiers (FAT, NTFS, EXT4, XSF, etc.) ;
- un répertoire étant un groupe nommé de fichiers et pouvant contenir lui‑même des répertoires.
Il existe des différences significatives entre le système de fichiers sous Windows et sous Unix & Linux.
Quelle que soit la distribution, le système de fichiers de Linux est sensiblement le même et constitue un héritage de celui adopté historiquement par les systèmes Unix. Il est caractérisé par :
- une devise – En Linux, tout est fichier !
- une arborescence standard des répertoires et sous‑répertoires, appelée filesystem hierarchy standard (FHS) W.
Tout est fichier
La devise « Tout est Fichier ! » exprime le fait qu'au delà des données usuelles (textes, images, code exécutable, etc.), toutes les entités avec lesquelles l'utilisateur est amené à interagir sont présentées par Linux sous forme de fichiers, notamment :
- les répertoires (ce sont des fichiers spéciaux qui listent l'identifiant des fichiers qu'ils contiennent) ;
- les périphériques (disques, clavier, carte‑son, etc.) – et même les partitions sur les disques ;
- les processus en cours d'exécution, les sockets réseau W…
Le filesystem hierarchy standard
Le filesystem hierarchy standard (FHS) W – qu'on appelle couramment arborescence des fichiers Unix/Linux – est une organisation des fichiers commune à toutes les distributions, à quelques détails près. La figure ci‑dessous en donne une représentation forcément partielle.
Cette arborescence présente les particularités suivantes :
- Elle admet une racine unique, désignée
/, quel que soit le partitionnement des disques durs de la machine – on peut donc parler d'arbre des fichiers. - Les répertoires du système portent des noms abrégés, afin de minimiser autant que possible l'expression des chemins ; il n'est pas bien difficile de mémoriser à quoi ils font référence (
binpour binary,tmppour temporary,devpour device, etc.). - Certains répertoires ne sont aujourd'hui plus que des liens symboliques d'autres répertoires (représentés par les flèches bleues sur la figure ci‑dessus). Ils sont maintenu dans l'arborescence par souci de compatibilité avec d'anciennes version du FHS.
Cette standardisation facilite grandement le travail des administrateurs. Néanmoins, des variantes existent selon les distributions et aussi au gré de l'évolution des versions.
On peut dores et déjà donner une brève description du contenu des différents répertoires de cet arbre.
On trouve d'abord (en première ligne sur la figure) tous les répertoires contenant principalement les exécutables fondamentaux de la machine.
-
binetsbincontiennent les fichiers binaires – (system) binaries – des commandes Linux (sauf les primitives qui sont intégrées au shell) et de ses principaux composants logiciels : -
binregroupe les commandes générales que l'on peut être amené à employer en tant que simple utilisateur (ls,cp,mv, etc.) ; -
sbinregroupe des commandes plus spécifiques l'on peut être amené à employer en tant qu'administrateur système (mount,fdisk,ip,route, etc.). -
lib,lib32,lib64contiennent les fichiers binaires de bibliothèques partagées de fonctions qui sont exploitées lors de l'exécution des logiciels sur la machine (processus de démarrage, bureau graphique, suite bureautique, navigateur web, etc.).
Dans un but de rationalisation, tous ces répertoires ne sont en fait que des liens symboliques menant respectivement vers un répertoire homonyme dans usr (ainsi, bin est un lien vers /usr/bin, etc.)
Ensuite (toujours sur la première ligne de la figure), on trouve d'autres répertoires plus spécifiques.
-
bootcontient tous les fichiers exécutables nécessaires au processus de démarrage du système, notamment le noyau Linux, le GRUB (cf. supra ), la partition de l'EFI… -
opt, initialement vide, est prévu pour stocker les fichiers des applications dites « optionnelles » qui ne suivent pas le schéma usuel d'installation sur la machine (par exemple, Arduino, Cisco Packet Tracer…). L'usage veut que chaque application y soit alors rangée dans un sous‑répertoire à son nom. -
etcne contient pas d'exécutables, mais de nombreux fichiers de configuration générale du système et des applications, valables pour tous les utilisateurs. Le nom de ce répertoire est parfois être interprété par le sigle editable text configurations mais sa signification originale est bien la locution latine et cetera W au sens oùetcpeut être vu comme un dossier fourre‑tout.
Puis on trouve une série de répertoires donnant accès à l'arborescence des fichiers stockés sur les périphériques de stockage de masse de la machine.
-
homeregroupe les dossiers nominatifs respectifs de chaque utilisateur enregistré sur le système, appelés usuellement « maison » (ainsi,/home/bobest la maison de l'utilisateurbob, etc.). Chaque utilisateur possède les droits de lecture et d'écriture sur son répertoire maison, mais pas celui des autres. Il peut donc y stocker tous ses fichiers. On y trouve aussi les fichiers de configuration et des exécutables qui lui sont propres, notamment dans les sous‑répertoires cachés.configet.local. -
rootest le répertoire maison du super‑utilisateurroot. -
mnt,mediaetcdromsont les trois répertoires qui regroupent les points de montage W des périphériques de stockage de masse, donnant ainsi accès aux sous‑arbres respectifs des partitions (et donc des fichiers) qui y sont stockées. Plus précisément : -
mntdonne accès aux disques durs internes de la machine, et plus généralement à tous les supports de stockage qui sont montés via une commande « manuelle » (ou codée dans un script exécuté au démarrage de la machine) ; -
mediadonne accès aux mémoires flash des périphériques USB branchés sur la machine (clef, smartphone, appareil photo…), qui sont montés et démontés automatiquement lors du branchement ; -
cdromdonne accès aux CD ou DVD placés dans les lecteurs de la machine, qui sont aussi montés et démontés automatiquement. -
varest un répertoire destiné à stocker tous les fichiers de taille variable (significativement) au cours du fonctionnement du système. On y trouve notamment les sous‑répertoires : -
logoù sont consignés les journaux du système et des applications ; -
spooldédié aux files d'attente des travaux d'impression, des courriels, etc. -
cacheoù sont placés les données fréquemment utilisées par le système et les applications, afin d'optimiser leur vitesse d'exécution. -
wwwdédié aux fichiers de sites web hébergé sur la machine, lorsqu'elle agit en qualité de serveur (typiquement, par le biais d'une pile AMP – cf. chap. R2‑IV R). -
tmpest quant à lui dévolu aux fichiers temporaires créés par le système et les applications en cours d'exécution. Typiquement, lorsqu'on ouvre un fichier avec une application, ce dernier est temporaire, jusqu'à sa première sauvegarde. Autre exemple, lorsqu'on compile un programme, les fichiers intermédiaires sont créés danstmpet, sauf option particulière, ils sont automatiquement supprimés lorsque la commande se termine (cf. chap. C4‑IV C).
Enfin, on trouve une série de répertoires contenant des fichiers virtuels. Ils procurent aux administrateurs une interface pour consulter ou contrôler divers aspects du système en fonctionnement.
-
devcontient les fichiers qui représentent respectivement les différents pilotes des composants matériels périphériques (devices) de la machine (disque, clavier, souris, imprimante, ports USB, etc.). Les partitions des disques sont également représentées, qu'elles soient montées ou non. -
syscontient les fichiers qui représentent le noyau du systèmes. Ils permettent aussi de consulter l'état de la machine et ses caractéristiques (température du processeur, occupation de la RAM, etc.). -
proccontient les fichiers qui représentent tous les processus référencés par le système, quel que soit leur état (en cours, suspendu, etc.). -
runcontient les fichiers qui représentent divers aspects de l'exécution (runtime), notamment les utilisateurs connectés, les services en cours, les daemons W qui s'exécutent en tâche de fond.