D'UNIX à Linux : l'histoire qui explique tout
Quitter

Leçon 1 sur 7 · Histoire

De Multics à UNIX (1964-1973)

30 min Rocky Linux 9

Objectif

Comprendre comment est né UNIX, l'ancêtre de Linux, et pourquoi les idées de ses créateurs, vieilles de plus de cinquante ans, expliquent encore la façon dont vous travaillerez sur un serveur Linux aujourd'hui.

L'essentiel

  • Multics (lancé en 1964) était un projet de système très ambitieux ; les Bell Labs d'AT&T s'en retirent en 1969.
  • La même année, Ken Thompson écrit un petit système sur un ordinateur PDP-7 : c'est le début d'UNIX.
  • Dennis Ritchie crée le langage C ; en 1973, le cœur d'UNIX est réécrit en C, ce qui le rend portable d'une machine à l'autre.
  • Les tubes (|) arrivent en 1973 : on assemble de petits programmes pour faire de grandes choses.
  • La philosophie UNIX — « un programme fait une chose et la fait bien », « tout est fichier », « le texte comme langage commun » — est toujours au cœur de Linux.

1. Le contexte : des ordinateurs grands comme une pièce

Au début des années 1960, un ordinateur occupe une salle entière, coûte des millions et ne sert qu'à une seule personne à la fois. On prépare son programme sur des cartes perforées, on les dépose au guichet, et on revient chercher le résultat… le lendemain. Une virgule oubliée, et la journée est perdue.

L'idée qui passionne alors les chercheurs s'appelle le temps partagé (time-sharing) : l'ordinateur passe très vite d'un utilisateur à l'autre, si vite que chacun a l'impression d'avoir la machine pour lui seul, devant son propre terminal.

C'est exactement ce que fait encore un serveur Linux : des dizaines de personnes et des centaines de programmes l'utilisent « en même temps ». Quand vous taperez who ou ps dans ce cours, vous verrez l'héritage direct de cette idée.

2. Multics : le grand projet qui déçoit (1964-1969)

En 1964, trois partenaires lancent Multics (Multiplexed Information and Computing Service) :

Partenaire Rôle
MIT (projet MAC) La recherche universitaire
General Electric Le matériel (l'ordinateur GE-645)
Bell Labs Le laboratoire de recherche d'AT&T, l'opérateur téléphonique américain

Multics veut tout faire : servir des centaines d'utilisateurs, protéger chaque fichier, fonctionner sans jamais s'arrêter, comme le réseau électrique. Plusieurs de ses idées sont excellentes : une arborescence de dossiers, des droits d'accès sur les fichiers, un interpréteur de commandes qui est un programme comme les autres.

Mais le projet prend du retard, devient lourd et coûteux. En 1969, les Bell Labs décident de s'en retirer. Multics continuera ailleurs (le dernier système Multics en service a été arrêté en 2000), mais les chercheurs des Bell Labs se retrouvent sans projet… et avec de bonnes idées plein la tête.

3. 1969 : Ken Thompson et le PDP-7

Ken Thompson veut continuer à travailler sur un système à lui. Il récupère un PDP-7 de la société DEC, un mini-ordinateur déjà démodé à l'époque, qui traînait dans un coin du laboratoire.

On raconte souvent que Thompson voulait aussi y faire tourner un jeu qu'il avait écrit, Space Travel, une simulation du système solaire. Pour cela, il lui fallait un système de fichiers, de quoi lancer des programmes, un éditeur, un interpréteur de commandes. À l'été 1969, il écrit tout cela en quelques semaines, en langage assembleur.

Il est rapidement rejoint par Dennis Ritchie, puis par d'autres collègues : Doug McIlroy, Joe Ossanna, Brian Kernighan…

D'où vient le nom ? Un collègue (on l'attribue généralement à Brian Kernighan) propose « Unics », un clin d'œil à Multics : là où Multics voulait tout faire en « multi », ce petit système fait les choses simplement. L'orthographe devient UNIX.

Un détail qui vous servira : les systèmes UNIX et Linux comptent le temps en secondes depuis le 1er janvier 1970 à 0 h (UTC), une date choisie à cette époque. On l'appelle l'« époque UNIX ». Essayez date +%s : le grand nombre affiché, c'est le nombre de secondes écoulées depuis ce jour-là.

4. Du PDP-7 au PDP-11 : UNIX trouve sa place (1970-1972)

Pour obtenir un ordinateur plus puissant, l'équipe fait une promesse à la direction : écrire un système de traitement de texte pour le service des brevets d'AT&T. En 1970-1971, UNIX passe sur un PDP-11, un ordinateur bien plus courant. Le service des brevets devient le premier « client » d'UNIX.

En novembre 1971 paraît le premier manuel d'UNIX (la First Edition). Les éditions suivantes se succèdent au rythme de quelques mois. Le format de ce manuel — une page par commande, avec NOM, SYNOPSIS, DESCRIPTION — est celui des pages man que vous lirez sur Linux.

5. Le langage C : la décision qui change tout (1972-1973)

À l'époque, un système d'exploitation s'écrit en assembleur, le langage propre à chaque modèle de processeur. Conséquence : un système écrit pour le PDP-7 ne marche que sur le PDP-7. Changer d'ordinateur, c'est tout réécrire.

La filiation du langage C ressemble à un arbre généalogique :

BCPL (Martin Richards, Cambridge, 1966-1967)
  └── B (Ken Thompson, 1969-1970) — version simplifiée de BCPL
        └── C (Dennis Ritchie, 1971-1973) — B enrichi de types de données

Ritchie crée le C au début des années 1970. Il est assez proche de la machine pour écrire un système, mais assez général pour être compilé sur d'autres processeurs.

En 1973, l'équipe réécrit le noyau d'UNIX en C (la Fourth Edition, novembre 1973). C'est une première à cette échelle : seul un petit morceau reste en assembleur. Désormais, porter UNIX sur un nouvel ordinateur, c'est surtout écrire un compilateur C pour cette machine.

Cette décision explique pourquoi Linux tourne aujourd'hui aussi bien sur un serveur Intel, un téléphone ARM qu'un supercalculateur : son noyau est, lui aussi, écrit essentiellement en C.

En 1978, Kernighan et Ritchie publient The C Programming Language, le livre de référence que les programmeurs appellent encore « le K&R ».

6. Les tubes : l'idée de Doug McIlroy (1973)

Doug McIlroy, chef de l'équipe, réclamait depuis des années un moyen de brancher les programmes les uns sur les autres, comme des tuyaux d'arrosage. Thompson l'implémente en une nuit, en 1973 (Third Edition) : c'est le tube, noté |.

Exemple : vous voulez savoir combien d'utilisateurs de votre serveur utilisent le shell bash.

# Sans tube, il faudrait un programme spécial pour cette question précise.
# Avec un tube, on assemble trois petits outils :
cat /etc/passwd | grep bash | wc -l
#   cat  : lit le fichier des comptes
#   grep : garde les lignes qui contiennent « bash »
#   wc -l: compte les lignes restantes

Aucun de ces trois programmes n'a été écrit pour répondre à cette question. Ensemble, ils y répondent. C'est toute la force d'UNIX.

7. La philosophie UNIX, en quatre règles

Ces principes ont été résumés plus tard par McIlroy et d'autres ; ils restent la meilleure boussole pour comprendre Linux.

Principe Ce que cela veut dire Exemple sur Linux
Un programme fait une chose, et la fait bien Des outils petits et spécialisés plutôt qu'un logiciel géant ls liste, sort trie, grep cherche
Les programmes travaillent ensemble La sortie de l'un devient l'entrée de l'autre ps aux | grep httpd
Le texte est le langage commun Configuration et échanges en texte lisible /etc/passwd, /etc/hosts, fichiers de logs
Tout est fichier Disques, terminaux, informations du noyau : on les lit et écrit comme des fichiers /dev/sda, /proc/version, /proc/cpuinfo
cat /proc/cpuinfo     # le processeur, présenté comme un simple fichier texte
cat /proc/version     # la version du noyau, idem
ls -l /dev/null       # un « fichier » spécial qui avale tout ce qu'on lui envoie

Pour l'administrateur, la conséquence est très concrète : presque tout se règle en modifiant des fichiers texte, et presque tout se diagnostique en lisant des fichiers texte. Pas besoin d'outils graphiques.

8. 1973-1974 : UNIX sort du laboratoire

En octobre 1973, Ritchie et Thompson présentent UNIX lors d'une conférence universitaire sur les systèmes d'exploitation (SOSP). L'article est publié en juillet 1974 dans la revue Communications of the ACM. Les universités découvrent ce système élégant et demandent à l'essayer.

Or AT&T, à cause d'un accord antitrust signé en 1956 avec le gouvernement américain, n'a pas le droit de faire commerce de l'informatique. Il distribue donc UNIX aux universités pour un prix symbolique, avec le code source. Des milliers d'étudiants vont l'étudier, le modifier, l'améliorer. C'est le point de départ de la leçon suivante : la grande famille UNIX.

En 1983, Thompson et Ritchie reçoivent le prix Turing, l'équivalent du prix Nobel en informatique, pour UNIX. Dennis Ritchie est mort en octobre 2011 ; Ken Thompson a ensuite participé, chez Google, à la création du langage Go.

9. La frise de la leçon

1964  Lancement de Multics (MIT, General Electric, Bell Labs)
1969  Les Bell Labs quittent Multics — Thompson écrit UNIX sur un PDP-7
1970  Passage sur PDP-11 — le nom « UNIX » s'impose
1971  Premier manuel d'UNIX (First Edition, novembre)
1972  Naissance du langage C (Dennis Ritchie)
1973  Les tubes « | » — le noyau réécrit en C (Fourth Edition)
1974  Article dans Communications of the ACM : UNIX se fait connaître
1983  Prix Turing pour Thompson et Ritchie

Idées reçues

  • « UNIX a été conçu par une grande entreprise pour être vendu. » Non : c'est un projet de deux chercheurs, presque clandestin au départ, sur une machine de récupération. AT&T ne pouvait même pas le vendre.
  • « Linux est une version d'UNIX. » Pas exactement. Linux ressemble à UNIX et en respecte les règles, mais il ne contient aucune ligne de code d'UNIX : il a été réécrit à partir de zéro (leçon 0.4).
  • « Tout est fichier » veut dire que tout est stocké sur le disque. Non : /proc/version n'existe pas sur le disque. Le noyau le fabrique à la volée quand vous le lisez. C'est la façon d'y accéder qui est celle d'un fichier.
  • « Le C est un vieux langage abandonné. » Le noyau Linux, la plupart des outils de base, les bases de données comme PostgreSQL sont écrits en C. Il reste l'un des langages les plus utilisés au monde.

Lab

Votre première machine vous attend dans le terminal, sous Rocky Linux 9. Vous allez la faire parler, avec les réflexes hérités d'UNIX :

uname -s                  # le nom du système
cat /proc/version         # « tout est fichier » : le noyau se décrit dans un fichier
cat /etc/os-release       # la fiche d'identité de la distribution
cat /etc/os-release | wc -l   # un tube : lire, puis compter

Réalisez les tâches : enregistrer le nom du système, copier la description du noyau, compter des lignes avec un tube, et retrouver l'année de naissance d'UNIX. Cliquez ensuite sur Vérifier : le site contrôle votre travail automatiquement.


Quiz

  1. Quelles étaient les trois organisations à l'origine de Multics ?
  2. Sur quel ordinateur Ken Thompson a-t-il écrit la première version d'UNIX, et en quelle année ?
  3. Pourquoi la réécriture du noyau d'UNIX en C (1973) a-t-elle été décisive ?
  4. Que fait la commande cat /etc/passwd | grep bash | wc -l, et quel principe UNIX illustre-t-elle ?
  5. Pourquoi AT&T distribuait-il UNIX aux universités au lieu de le vendre ?
Réponses
  1. Le MIT, General Electric et les Bell Labs (AT&T).
  2. Sur un PDP-7 de DEC, en 1969.
  3. Écrit en C, UNIX devient portable : pour le faire tourner sur une autre machine, il suffit pour l'essentiel d'un compilateur C, au lieu de tout réécrire en assembleur.
  4. Elle compte les comptes du système dont la ligne contient « bash ». Elle illustre l'assemblage de petits programmes spécialisés reliés par des tubes.
  5. Un accord antitrust de 1956 interdisait à AT&T de faire commerce de l'informatique ; il le diffusait donc à prix symbolique, avec son code source.

Sources de référence : articles de D. M. Ritchie et K. Thompson cités en en-tête, Debian Reference (licence libre). Texte original MasterLinux.

Exercices pratiques

À réaliser sur Rocky Linux 9

Le terminal en ligne ouvre bientôt. En attendant, réalisez ces tâches sur votre machine Linux, une machine virtuelle ou WSL.

  1. Demandez au système son nom avec uname -s et enregistrez la réponse dans /root/systeme.txt
    Afficher un indiceLe signe > envoie l'affichage d'une commande dans un fichier : uname -s > /root/systeme.txt
    Voir la solution
    uname -s > /root/systeme.txt

    Vérification : grep -qx Linux /root/systeme.txt

  2. « Tout est fichier » : le noyau se décrit dans le fichier /proc/version. Copiez son contenu dans /root/noyau.txt
    Afficher un indicecat lit un fichier ; ajoutez > /root/noyau.txt pour enregistrer ce qu'il affiche.
    Voir la solution
    cat /proc/version > /root/noyau.txt

    Vérification : grep -q '^Linux version' /root/noyau.txt

  3. Assemblez deux petits outils avec un tube : comptez les lignes de /etc/os-release (cat … | wc -l) et enregistrez le nombre dans /root/lignes.txt
    Afficher un indicecat /etc/os-release | wc -l > /root/lignes.txt — cat lit, wc -l compte, le tube | relie les deux.
    Voir la solution
    cat /etc/os-release | wc -l > /root/lignes.txt

    Vérification : grep -qx "$(wc -l < /etc/os-release)" /root/lignes.txt

  4. Écrivez dans /root/annee-unix.txt l'année où Ken Thompson a écrit la première version d'UNIX (un seul nombre).
    Afficher un indiceC'est l'année où les Bell Labs quittent Multics. Exemple de syntaxe : echo 2000 > /root/annee-unix.txt
    Voir la solution
    echo 1969 > /root/annee-unix.txt

    Vérification : grep -qx 1969 /root/annee-unix.txt

Références officielles consultées : D. M. Ritchie, « The Evolution of the Unix Time-sharing System » (1979, publié en 1984) ; D. M. Ritchie et K. Thompson, « The UNIX Time-Sharing System », Communications of the ACM (1974) ; Debian Reference — chapitre 1, tutoriels GNU/Linux. Texte original MasterLinux.