L'histoire de Linux

Unix est un des systèmes d'exploitation les plus appréciés, notamment en raison du grand nombre d'architectures prises en charge. Tout d'abord développé en tant que système d'exploitation multitâche pour mini-ordinateurs et gros systèmes au début des années soixante-dix, il est aujourd'hui omniprésent, en dépit d'une interface parfois déroutante et d'un manque de réelle standardisation.

Unix est populaire au point que nombre de programmeurs le considèrent comme le seul système d'exploitation viable et lui vouent un culte quasi réligieux. Il existe des versions d'Unix pour une vaste gamme de machines, depuis l'ordinateur personnel jusqu'au super-calculateur. Néanmoins, la plupart de ses implémentations pour PC restèrent longtemps onéreuses.

On comprend alors que certains aient mis la main à la pâte afin de réaliser une version d'Unix librement diffusable. Ainsi, un dénommé Linus Torvalds, alors étudiant à l'université d'Helsinki (Finlande), en développa la première version. De nombreux programmeurs et spécialistes d'Unix participent aujourd'hui activement à l'optimisation du noyau grâce au réseau mondial Internet. En outre, toute personne compétente désireuse de contribuer à l'évolution du système est invitée à participer. Le noyau de Linux n'utilise aucun code issu d'une version commerciale d'Unix ou de quelque autre source propriétaire et la plupart des programmes disponibles pour Linux sont conçus dans le cadre du "projet GNU", qui vise à constituer un système complet librement diffusable.

Linus Torvalds s'est inspiré de Minix, modeste système Unix développé par Andy Tanenbaum. En conséquence, c'est le forum Usenet comp.os.minix qui accueillit les premières discussions ayant trait à Linux, qui portaient alors principalement sur le développement d'un petit système Unix à l'usage des universitaires et autres utilisateurs de Minix frustrés.

Linux Torvalds se proposait avant tout de maîtriser la commutation de tâches en mode protégé sur le processeur 80386. Tout fut réalisé en langage d'assemblage. Dixit Linus :

Ceci fait, tout coulait de source : encore de la programmation touffue, mais je disposais de quelques ressources et le débogage était moins pénible. J'ai alors commencé à utiliser le langage C, ce qui a indubitablement accéléré le développement. C'est aussi à cette époque que j'ai décidé de concrétiser ce rêve délirant : réaliser un Minix meilleur que Minix ... J'espérais être un jour en mesure de recompiler gcc sous Linux ... Deux mois pour le code de base, puis quelques efforts pour disposer d'un pilote de disque dur (sérieusement bogué, mais qui, par chance, fonctionnait sur ma machine) et d'un système de fichiers rudimentaire. S'ensuivit la diffusion de la version 0.01 [fin août 1991], peu élégante et peu puissante, dénuée de pilote de disquette. Il m'étonnerait que quelqu'un ait un jour compilé cette version ... Mais, pris au jeu, j'étais déterminé à surpasser Minix coûte que coûte.

L'avènement de la version 0.01 ne fit l'objet d'aucune notification préalable. Elle n'était pas même exécutable et l'archive, qui ne contenait que le squelette des sources du noyau, imposait l'accès à un système Minix pour compiler et découvrir Linux.

Le 5 octobre 1991, Linus délivra la toute première version "officielle" de Linux (0.02). A défaut d'autre chose, le système était à présent capable d'exécuter bash (le Bourne Again Shell de GNU) et gcc. Les premières moutures de Linux, en effet, étaient surtout destinées aux hackers et se focalisaient sur le développement du noyau, ce qui explique l'absence de service d'assistance technique, de documentation, etc. Dans une moindre mesure, la communauté Linux considère encore aujourd'hui ces aspects comme très secondaires en regard de la "vraie programmation" : le développement du noyau.

Voici l'appel que lança Linus à l'époque dans comp.os.minix :

Vous regrettez les beaux jours de Minix-1.1, époque bénie où les hommes étaient dignes de ce nom et écrivaient leurs propres pilotes de périphériques ? Vous cherchez à vous investir dans un projet original et vous vous languissez d'un système modifiable à votre convenance ? Vous êtres frustré que tout fonctionne sous Minix ? Vous regrettez les nuits blanches passées à tenter d'implanter un programme récalcitrant ? Si tel est le cas, lisez ce qui suit : Comme signalé il y a un mois, je travaille actuellement sur une version libre d'un système analogue à Minix pour ordinateur AT-386. Ce système est à présent utilisable (mais peut-être ne vous conviendra-t-il pas, tout dépend de ce que vous recherchez) et je compte en diffuser les sources. Il s'agit pour l'instant de la version 0.02, capable néanmoins d'exécuter bash, gcc, gnu-make, gnu-sed, compress, etc.

Une fois diffusée la version 0.03, Linus passa directement à la version 0.10, au vu du développement rapide. Puis, après plusieurs autres révisions, Linus, qui pressentait que Linux serait bientôt prêt pour une version "officielle", gonfla à nouveau le numéro, qui passa alors à 0.95 (par convention, le numéro de version 1.0 n'est attribué qu'après l'obtention d'un programme théoriquement complet et dénué de bogue).

Dix-huit mois plus tard (fin 1993) Linus apportait la touche finale à la version 0.99.pl14 du noyau, s'approchant de 1.0 de manière apparamment asymptotique. Certains ne croyaient plus que la version 1.0 verrait jamais le jour. Elle existe pourtant, et à tant et si bien évolué que la version actuelle (janvier 1999) mènera sous peu à la 2.2 stable.

Linux n'aurait pu naître sans l'apport des outils GNU créés par la Free Software Foundation. Leur compilateur gcc, dont nous traiterons ultérieurement, insuffla la vie au code de Linus Torvalds. Depuis l'origine, en effet, les programmes GNU et le développement de Linux sont intimement liés.

La version d'Unix issue de Berkeley (dite "BSD") a elle aussi joué un rôle important, quoique davantage à travers la mise à disposition de ses fameux outils que lors de la création de Linux. Beaucoup d'utilitaires fournis avec les distributions du système proviennent de portages de programmes BSD. Ainsi, les démons et commandes réseau jouent un rôle crucial. A vrai dire, la partie réseau du code de Linux a été développée en totalité (deux ou trois fois, en fait), mais ces démons et commandes émanent en droite ligne de BSD.

A ce jour, Linux est un système Unix complet capable de prendre en charge X Window, TCP/IP, Emacs, UUCP, le courrier électronique, les forums Usenet et bien d'autres utilitaires et fonctions. Rares sont les logiciels libres célèbres qui n'ont pas encore été portés sous Linux et on se réjouit de voir de grands éditeurs proposer des applications commerciales. Linux reconnaît aujourd'hui maints périphériques, ce qui n'était pas le cas dans ses premières versions. A de multiples occasions, les machines dotées de Linux ont affiché des performances comparables aux stations de travail de milieu de gamme de Sun Microsystems et Digital Equipment Corporation. Qui aurait pu imaginer que cet Unix rachitique gagnerait un jour une telle ampleur et un tel rayonnement ?

Linux a été reconnu conforme au standard POSIX (.1 et .2) grâce aux efforts de la société Lasermoon. Au-delà de sa valeur symbolique, une telle reconnaissance accélère la propagation de Linux au sein des sociétés commerciales mais aussi de l'administration, qui exige la conformité POSIX de la plupart des systèmes qu'elle utilise (MS-Windows compris, comme en témoignent les aménagements apportés à la version NT par Microsoft).

Le système Linux - O' Reilly

Linux, le système alternatif !