Dans ce chapitre, nous introduirons la notion de logiciel libre, nous aborderons ensuite le système Linux sous un angle historique, puis technique. A l'issue de ce chapitre, nous devrions avoir une vision globale de Linux nous permettant d'aborder la manipulation du système.
Linux est le noyau d'un système d'exploitation libre de type Unix, écrit initialement par Linus Torvalds en 1991 et auquel un grand nombre de programmeurs ont contribué par Internet depuis. [GIC02]
Les origines de tous les systèmes Unix remontent à la première version d'un système d'exploitation expérimental développé par Denis Ritchie et Ken Thompson dans les laboratoires AT&T's Bell Laboratories en 1969. Ce système a avant tout été développé par des programmeurs, pour des programmeurs, et reprenait un certain nombre de concepts qui avaient été développés auparavant pour le système d'exploitation Multics (abréviation de ``Multiplexed Information and Computing Service''), dont le rôle était de fournir des services informatiques centralisés à un grand nombre de personnes. Multics n'a jamais réellement vu le jour car il était trop ambitieux par rapport aux moyens de l'époque, en revanche, le système Unix initial a engendré un grand nombre d'autres systèmes plus ou moins compatibles, du fait notamment de son mode de distribution original.
Pour l'anecdote, la dénomination ``Unix'' provient de la contraction de ``Unics'' (abréviation de ``Uniplexed Information and Computing Service''), terme forgé ironiquement pour bien signaler qu'Unix était une version allégée de ce que Multics aurait dû être.
Unix a été développé en utilisant le langage de programmation C. Ce langage a la particularité d'être portable1.1sur un grand nombre d'architectures différentes, ce que ne permet pas l'utilisation d'un langage de programmation de bas niveau comme l'assembleur1.2, alors largement utilisé pour la réalisation de systèmes d'exploitation. La particularité d'Unix, comparé à d'autres systèmes comme Windows par exemple, tient du fait qu'il a été développé puis distribué sous la forme de code source et de spécifications1.3. A partir de ce code source, chaque éditeur pouvait mettre au point sa propre version d'Unix, afin de l'adapter à son besoin. Ce mode de distribution a permis une rapide expansion d'Unix, puisque chaque constructeur s'est empressé de porter Unix sur ses machines, ce que n'aurait pas pu faire AT&T1.4. Il n'existe donc pas une unique version d'Unix, mais toute une famille de systèmes Unix. L'utilisation du langage C donna à Unix une de ses caractéristiques les plus importantes : son universalité. Unix n'a, aujourd'hui encore, pas d'équivalent dans ce domaine et il y a fort peu de familles d'ordinateurs ne disposant pas d'au moins une version d'Unix1.5.
Il existe différentes versions commerciales d'Unix, il faut signaler que seules celles qui sont positionnées dans le haut de gammes survivent à la confrontation avec Linux :
L'inconvénient du mode de distribution d'Unix est la divergence des solutions proposées par les différents fournisseurs. Ainsi, même s'ils exploitent des racines communes, les différentes améliorations apportées par les distributeurs de systèmes Unix ont aboutis à des systèmes de moins en moins compatibles.
Pour éviter une trop grande divergence, les différents fournisseurs de systèmes Unix se sont récemment accordés pour définir l'ensemble des fonctionnalités que tous les systèmes Unix doivent supporter, et ce afin de résoudre les problèmes engendrés par les incompatibilités existantes entre ces différents systèmes. Unix est donc un terme générique pour représenter l'ensemble de tous ces systèmes, dont Linux fait partie.
Linux apparaît aujourd'hui comme un Unix universel que tout le monde appelait de ses voeux, par contre, il risque aussi de subir la même dérive que les systèmes Unix si l'on y prend pas garde.
Bien que compatible avec les dernières spécifications Unix, Linux ne contient pas une ligne du code source du système Unix original, ce qui en fait ce que l'on appelle un clone1.6. Cela dit, il s'agit réellement d'un système Unix à part entière. En tant que tel, il dispose des fonctionnalités fournies par les systèmes Unix : il est multitâche, multi-utilisateur et orienté réseau. Vous aurez donc, avec Linux, un système fiable, fonctionnel et performant.
Installé sur un poste de travail, Linux vous permettra de réaliser les opérations les plus classiques, comme effectuer un travail bureautique, naviguer sur Internet, réaliser l'acquisition, la capture et le retraitement d'images, réaliser des animations 3D ou encore programmer1.7. C'est toutefois installé sur un serveur que Linux révèle toute sa puissance : c'est un système fiable, qui peut fonctionner plusieurs mois en continu. En temps que système Unix, il s'intègre parfaitement dans un réseau et il permet de faire fonctionner un grand nombre d'outils très performants et disponibles gratuitement (base de données, serveur Web, serveur d'applications, serveur de messagerie, serveur d'authentification... ). Enfin, il s'intègre parfaitement dans un environnement Windows dans lequel il peut remplacer avantageusement un serveur Windows NT. De plus, contrairement à l'installation de Linux sur les postes clients, son installation sur un serveur n'est pas ressentie directement1.8 par les utilisateurs, ce qui permet une migration en douceur et évite de se confronter à un problème culturel (surtout lié à l'utilisation de la suite bureautique Office de Microsoft).
Pour comprendre le concept de logiciel libre, il faut d'abord comprendre ce qu'est un logiciel (ou encore un programme, ou une application).
Du point de vue de l'utilisateur, un logiciel est souvent vu comme une application qui répond à l'un de ses besoins (traitement de textes, programme de dessin, jeu, etc... ). Nous l'envisageons sous une perspective un peu plus large, prenant en compte le mode d'élaboration du logiciel, ce qui nous permet d'évaluer les libertés dont nous disposons par rapport à ce logiciel.
Pour créer un logiciel, un programmeur l'écrit donc dans un langage de programmation (C, Perl, Python, Java, ...) compréhensible par les programmeurs. Un outil appelé compilateur permet ensuite de convertir ce langage en un code binaire (dit langage machine) qui est le seul que puisse interpréter un ordinateur.
Le logiciel dans sa forme compréhensible par les programmeurs est appelé ``code source'', et dans sa version en langage machine ``binaire''.
Le code source est essentiel en matière de logiciel, car sa connaissance permet d'examiner le fonctionnement d'une application et éventuellement de l'améliorer ou d'en corriger les bogues. C'est aussi le garant de l'absence de porte dérobée compromettant la sécurité d'un système informatique ou de fonctionnalité malicieuse. [APR]
Un logiciel libre est un logiciel garantissant un certain nombre de libertés à ses utilisateurs.
Nous allons procéder par analogie en comparant le code source d'un logiciel à une recette de cuisine.
Imaginons que vous vous trouvez dans un restaurant et que vous mangez un excellent plat. Peut-être aurez vous l'envie de pouvoir le cuisiner chez vous pour vos amis ?
C'est impossible si vous n'avez pas la recette du plat. Vous pouvez toujours le manger dans le restaurant, mais même si vous connaissez le goût, vous ne savez comment le reproduire. La liberté d'échanger des recettes de cuisines est essentielle pour les cuisiniers comme pour les simples gourmets.
En informatique, il en va de même pour un un logiciel. Le code source est la recette, le binaire est le plat déjà cuisiné. La plupart des logiciels dits logiciels propriétaires sont distribués sans leur code source, et il est interdit d'essayer de comprendre leur fonctionnement. Il est interdit de les partager avec vos amis, et il est interdit d'essayer de les modifier pour les adapter à vos besoins.
A l'opposé un logiciel libre garantit aux utilisateurs quatre libertés :
Ce sont ces libertés fondamentales à l'utilisation de l'informatique, à la création et au partage des informations, que l'APRIL1.9 entend protéger et développer. Les logiciels libres sont avant tout porteurs de liberté de partage et d'accès à la connaissance.
Elles sont bien sûr essentielles aux informaticiens, mais aussi aux utilisateurs, pour lesquelles elles garantissent la capacité de maîtriser les outils et les informations sans risque de dépendance vis-à-vis d'un quelconque éditeur de logiciels.
Les logiciels libres ont connu un succès planétaire grâce à l'effort de développement entrepris voilà plus de 15 ans dans le cadre du projet GNU.
Richard STALLMAN, considéré par tous comme le père des logiciels libres a commencé à penser au logiciel libre lorsqu'il travaillait au laboratoire d'intelligence artificielle au MIT dans les années 1980.
En 1983, Richard M. STALLMAN initie le projet GNU (GNU est un jeu de mots récursif signifiant GNU's Not Unix). Ce projet vise à concevoir un système d'exploitation complet et entièrement libre. Ce système sera compatible avec UNIX, mais sera différent car il n'exploitera pas les sources originales d'AT&T. Pour soutenir le développement du projet GNU, la Free Software Foundation (http://www.fsf.org) est créée en 1985.
Il existe un projet GNU visant à réaliser un système complet architecturé autour du micro-noyau Mach1.10 : Ce projet très ambitieux s'appelle Heard et il commence seulement aujourd'hui à devenir exploitable. Le projet Heard a été rattrapé par le développement du noyau Linux qui, associé aux outils GNU, constitue le premier système d'exploitation entièrement libre. On parle donc couramment de système GNU/Linux.
Pour valider ce système, une base légale est nécessaire. Cette base légale, créée de toutes pièces, est la licence GNU GPL (pour GNU General Public License). La GNU GPL est la licence des logiciels libres par excellence. Elle détermine des conditions de distribution qui garantissent les libertés de l'utilisateur. Un programme protégé par la GPL est libre, mais la GPL impose aussi que tout travail dérivé de ce logiciel reste libre. On peut estimer à plus de 70% le nombre de logiciels libres qui son protégés par la GNU GPL. [APR]
Il faut distinguer les logiciels libres de logiciels du domaine public (freeware). En effet, les logiciels libres sont systématiquement livrés avec leur code source, qu'il est possible de modifier à condition de redistribuer les sources modifiées. Cette obligation n'existe pas pour les logiciels du domaine public, dont seule la version binaire est gratuite. L'utilisation stratégique de logiciels du domaine publique est risquée car il est impossible de s'assurer que les mises à jour ultérieures du logiciel resteront gratuites. On peut ainsi imaginer un éditeur distribuant gratuitement son logiciel pour faciliter sa diffusion et, une fois le marché acquit ferait payer les nouvelles versions1.11. Ce scénario n'est pas possible avec des logiciels libres exploitant la licence GPL car cette dernière oblige chaque contributeur à diffuser librement les sources de toute adaptation d'un logiciel libre.
Il existe d'autres licences qualifiées de libres, bien que protégeant plus les sources (la licence BSD, la licence Mozilla... ). Il faut toutefois souligner que la licence GPL, véritable clef de voûte d'un grand nombre de logiciels libres (dont Linux), n'a jamais été éprouvée devant la justice. La question de sa validité juridique reste donc levée.
Bien que cela puisse paraître contradictoire, il est tout à fait possible de commercialiser une solution exploitant la licence GPL, à condition de rendre disponibles les sources des programmes. Par exemple, si une société A développe une solution basée sur un logiciel libre adapté par ses soins, il peut la commercialiser et en tirer des bénéfices financiers. Par contre, elle est tenue de rendre les sources de ses adaptations disponibles. De ce fait, une société concurrente B peut reprendre ces sources, les modifier et les commercialiser à son tour. La société A peut alors se sentir lésée par cette divulgation de son travail, mais comme la société B est aussi tenue de publier les sources de ses modifications, elle peut à son tour profiter des améliorations apportées pour les intégrer à son offre. De plus, la société A n'est plus contrainte d'assurer seule la maintenance et l'évolution de sa solution, elle est désormais aidée par la société B.
Pour que ce modèle soit rentable, il faut bien entendu que la société A garde une plus value par rapport à la société B, autre que le code source de sa solution. Ce fonctionnement nous oblige à revoir notre façon d'envisager l'approche commerciale de l'industrie informatique. La plus value d'une entreprise choisissant de commercialiser du logiciel libre ne réside plus dans la rétention du code source de ses programmes, jusqu'alors considéré comme le patrimoine le plus précieux de l'éditeur. L'enjeu se situe sur le service rendu à ses clients afin de proposer les solutions les plus adaptées en se basant sur un ensemble de briques de bases puisées parmi les logiciels libres.
Cette approche permet d'optimiser le travail des différents acteurs qui, au lieu de redévelopper maintes fois le même code source, peuvent s'appuyer sur un travail existant en l'améliorant si besoin, pour le plus grand bien de la communauté. A titre d'exemple, essayez d'imaginer les ressources financières et humaines qui ont été gaspillées à développer les fonctionnalités communes des différents traitements de texte que nous avons connu jusqu'à présent. N'aurait-il pas été plus fructueux de capitaliser ce travail dans le développement d'une solution libre ?
Bien évidement, cette réflexion ne convient pas du tout à des acteurs ayant réussi à verrouiller un marché autour d'une situation de monopole comme l'a fait Microsoft dans le domaine de la bureautique. Le logiciel libre est aussi une solution permettant d'éviter ce genre de situation. Il constitue en ce sens un garde-fou précieux pour le futur.
Linus Torvalds, étudiant à l'université d'Helsinki (Finlande) installe le système Minix1.12 sur son i386. Le système s'avérant trop limité pour lui, il décide d'aller plus loin sur la base de ce qui existe. Linux (Linus' Unix, l'Unix de Linus) 0.0.1 est né au mois d'août 1991. Afin de poursuivre les développements, Linus lance un appel à contribution sur le forum de discussion comp.os.minix en ces termes :
[root@pc1 linux]# lilo Added Linux * Added VieuxLinux Added Windows
Dépendant au départ du système Minix, Linux devient autonome le 5 octobre 1991, lors de la sortie officielle de la version 0.0.2. Cette version permet de faire tourner quelques applications GNU (logiciels libres) essentielles comme le compilateur gcc1.13 ou le shell bash. Linus prend la décision de mettre le code source sous licence GPL : tout le monde peut alors participer au développement de Linux. C'est certainement une des principales clefs du succès de Linux...
Une maîtrise originale de l'ensemble du développement en permet l'accès au plus grand nombre, sans aucune restriction de contenu. Ainsi, nul cahier des charges, nulle équipe isolée (et restreinte) de développeurs : ce sont les échanges d'idées et de bouts de codes qui vont améliorer le système. Afin de garder l'homogénéité globale du système, Linus se charge de valider les apports réalisés par les contributeurs du projet. C'est donc lui qui valide la sortie de chaque nouvelle version du noyau1.14.
C'est de là qu'est né le succès actuel de Linux. En effet, l'apport constant des développeurs toujours plus nombreux, avec leurs améliorations ou leurs idées nouvelles, permet à Linux d'être toujours plus proche des besoins de ses utilisateurs. [2LI]
Le développement anarchique de Linux ne lui permet pas, au départ, de devenir un système compétitif face aux autres systèmes du marché. Son principal point faible réside dans son système de fichiers hérité de Minix. Seule l'intégration à Linux du Second Extended Filesystem (ext2fs), conçu par Rémi CARD à partir du système de fichiers du système Unix BSD, permet d'en faire un système fiable. Ext2fs offre enfin les performances et les services de systèmes de fichiers professionnels. Il devient naturellement un standard. La présence dans le processus de développement de développeurs venant de nombreux horizons permet à Linux d'exister sur de nombreuses plates-formes (Mac, Atari, Amiga, Alpha) autres que sa plate-forme d'origine (Intel). Petit à petit, Linux devient un système Unix complet compatible avec les autres systèmes Unix, offrant toujours plus de services de qualité professionnelle au plus grand nombre. [2LI]
L'explosion d'Internet donne un second souffle au développement de Linux : non seulement pour permettre à la communauté des développeurs de Linux de continuer à s'étendre, mais aussi et surtout pour donner à Linux une existence réelle sur le marché des systèmes d'exploitation. Ainsi, ses qualités d'OS libre (et gratuit), robuste et performant font qu'il est choisi par de plus en plus de fournisseurs d'accès à Internet. Il est ainsi devenu aujourd'hui le leader sur le marché de l'hébergement de sites Web.
Parallèlement, l'apparition et le développement de sociétés privées telles que RedHat, Caldera ou VA Linux donne une envergure jusqu'alors inconnue à Linux : les distributions deviennent de plus en plus conviviales et simples à installer, et des services professionnels sont mis en place pour faciliter l'implantation de Linux dans les entreprises. [2LI]
Le système GNU/Linux est aujourd'hui réputé pour sa fiabilité et sa robustesse. Ceci est dû en partie à la liberté des logiciels qui le composent : l'accès aux sources permettant de corriger très facilement et rapidement une erreur de programmation.
GNU/Linux est aujourd'hui utilisé aussi bien par les entreprises que par les utilisateurs finaux (on estime actuellement le nombre d'utilisateurs à plusieurs dizaines de millions).
Les plus grandes sociétés informatiques (IBM, Sun, HP, ...) conscientes des qualités des logiciels libres existants, rejoignent le nombre des partisans de ce système, et contribuent à son développement. [APR]
Initialement, l'installation de Linux était une opération fastidieuse et relativement compliquée (comparée à celle d'un système Windows, par exemple) et l'usage d'un système Unix ``brut'' n'est pas à la portée de tout le monde. Traditionnellement, pour installer un système Linux, il fallait récupérer sur internet les codes sources, les compiler sur sa machine et assembler le tout manuellement. La complexité de ces opérations est telle qu'elle réservait l'installation de Linux à des experts.
Linux doit en grande partie sa réputation de système complexe à installer à cette époque que certains qualifient avec nostalgie ``d'héroïque''. Heureusement, les choses se sont grandement simplifiées depuis.
Pour faciliter l'installation et l'utilisation de systèmes Linux, on a vu apparaître des ``distributions'', intégrant dans un environnement homogène l'ensemble des outils nécessaires à une utilisation courante et automatisant au maximum l'installation et le paramétrage du système. Ces distributions facilitent grandement l'installation de Linux et leur qualité s'est grandement accrue ces derniers temps, au point que n'importe qui peut aujourd'hui installer un système Linux viable sans trop de problème.
La plupart des distributions de linux sont l'oeuvre de sociétés commerciales, ce qui peut sembler en contradiction avec la notion de logiciel libre. Il faut souligner que la licence GPL n'interdit pas la vente de logiciels libres, par contre elle oblige de rendre publiques et librement utilisables le code source de tout logiciel basé sur un logiciel libre. Voici les principales distributions qu'il est possible de rencontrer :
Les distributions actuelles éprouvent encore quelques difficultés pour optimiser les périphériques exotiques, et souvent seules les fonctionnalités de base sont correctement configurées après une installation classique. Les outils de configuration des distributions vous permettront sans doute de configurer votre système de base simplement, mais pour aller au-delà, il faudra sans doute intervenir manuellement.
Néanmoins, il faut reconnaître que celui qui installe Linux à partir d'une distribution récente sur un ordinateur assez vieux (c'est-à-dire un ordinateur qui ne dispose pas des derniers périphériques et cartes graphiques à la mode), ou dont les constituants sont de marque courante, obtient rapidement un système fonctionnel et capable de réaliser la plupart des opérations qu'il désire. En particulier, celui qui utilise son ordinateur dans un cadre professionnel (pour écrire des lettres, les imprimer, naviguer sur Internet pour récupérer des informations, programmer... ) peut parfaitement se contenter de l'installation par défaut. Ce problème de configuration apparaît principalement pour les particuliers, qui souvent disposent de machines hétéroclites et absolument non standards (carte son, cartes vidéo... ).