Leçon 2 sur 7 · Histoire
La famille UNIX — BSD, System V et la norme POSIX
Objectif
Comprendre comment UNIX s'est divisé en plusieurs branches rivales, pourquoi une norme commune (POSIX) a été nécessaire, et pourquoi ce que vous apprenez sur Linux marche en grande partie sur macOS ou FreeBSD.
L'essentiel
- À l'université de Berkeley, UNIX devient BSD : c'est là qu'arrivent le réseau TCP/IP, l'éditeur
viet le shellcsh. - Après le démantèlement d'AT&T (1984), l'entreprise vend sa version officielle : System V.
- Chaque constructeur crée son UNIX payant (Solaris, AIX, HP-UX…), incompatible avec les autres : ce sont les « guerres UNIX ».
- La norme POSIX (1988) fixe ce qu'un système « de type UNIX » doit offrir ; Linux la suit de près.
- Un procès (1992-1994) bloque BSD au moment même où Linux naît, ce qui pousse beaucoup de développeurs vers Linux.
1. Berkeley reçoit UNIX (1974-1977)
Comme vous l'avez vu dans la leçon 0.1, AT&T distribue UNIX aux universités avec son code source. L'université de Californie à Berkeley l'installe en 1974. Ken Thompson y passe même une année sabbatique (1975-1976) comme professeur invité.
Un étudiant, Bill Joy, se met à améliorer le système. En 1978, il diffuse une première collection de programmes : la Berkeley Software Distribution, ou BSD. Au départ, c'est un simple ajout à l'UNIX d'AT&T ; peu à peu, cela devient un système complet.
Ce que BSD a apporté, et que vous utiliserez sur Linux :
| Apport de Berkeley | Ce que vous en ferez sur Linux |
|---|---|
L'éditeur vi (Bill Joy, 1976) |
vi et son successeur vim sont présents sur presque tous les serveurs |
Le shell csh |
Moins utilisé aujourd'hui, mais l'historique des commandes et le contrôle des tâches (jobs, fg, bg) viennent de cette époque |
| La pile réseau TCP/IP et les sockets (4.2BSD, 1983) | Tout le réseau moderne : ssh, serveurs web, Internet entier |
| Le système de fichiers rapide (FFS) | L'idée des blocs et inodes reprise par ext2, ext3, ext4 |
L'arrivée de TCP/IP est un tournant : l'agence militaire américaine DARPA, qui finance le futur Internet, choisit BSD comme système de référence au début des années 1980. UNIX et Internet grandissent ensemble.
2. AT&T entre dans le commerce : System V (1983)
En 1982, un accord avec la justice américaine prévoit le démantèlement d'AT&T, effectif au 1er janvier 1984. En échange, l'entreprise a enfin le droit de vendre de l'informatique.
AT&T commercialise alors sa version officielle d'UNIX : System III (1982), puis System V (1983), avec ses « versions » successives (Release 2, 3, 4). La version SVR4 (System V Release 4, fin des années 1980), développée avec Sun, réunit une grande partie des idées de BSD et de System V.
Plusieurs habitudes de Linux viennent de System V :
ls /etc/init.d/ # les scripts de démarrage « à la System V » (RHEL 6, vieux Debian)
ps -ef # la syntaxe System V de ps (avec un tiret)
ps aux # la syntaxe BSD de ps (sans tiret) — Linux accepte les deux !
Le fait que ps accepte deux styles d'options est un souvenir vivant de cette double origine.
3. Les UNIX commerciaux (années 1980-1990)
Chaque grand constructeur prend une licence UNIX et crée sa propre version, adaptée à ses machines (et vendue avec elles) :
| Système | Éditeur | Base | Encore utilisé ? |
|---|---|---|---|
| SunOS puis Solaris | Sun Microsystems (racheté par Oracle en 2010) | BSD, puis System V R4 (Solaris, 1992) | Dans quelques grandes entreprises |
| AIX | IBM (à partir de 1986) | System V | Oui, sur les serveurs IBM Power (banques, assurances) |
| HP-UX | Hewlett-Packard | System V | En fin de vie |
| IRIX | Silicon Graphics | System V | Abandonné (années 2000) |
| Xenix | Microsoft, puis SCO | System V | Abandonné |
| Ultrix, Tru64 | DEC | BSD, puis OSF/1 | Abandonnés |
Le cas de Sun est intéressant : l'entreprise est cofondée en 1982 par… Bill Joy, l'auteur de BSD. Les stations Sun étaient les machines de référence des universités et d'Internet dans les années 1980-1990.
4. Les « guerres UNIX » (1988-1993)
Chacun de ces UNIX ajoute ses propres commandes, options et outils. Un programme écrit pour AIX doit être modifié pour tourner sur HP-UX. Un administrateur formé sur Solaris est perdu sur IRIX.
À la fin des années 1980, deux camps s'affrontent :
AT&T + Sun IBM, DEC, HP et d'autres
(System V Release 4, 1988-1989) (Open Software Foundation, 1988)
« UNIX International » « OSF/1 »
\ /
\___ incompatibilités, procès, ___/
clients perdus
Pendant que les constructeurs se disputent, un concurrent avance tranquillement sur les PC : Microsoft Windows NT (1993). Et, sans que personne ne s'en doute encore, un étudiant finlandais commence en 1991 à écrire un noyau sur son PC…
5. POSIX : la règle commune (1988)
Pour sortir du chaos, l'organisme de normalisation IEEE publie en 1988 la norme POSIX (IEEE 1003.1). Le nom, suggéré par Richard Stallman (que vous retrouverez à la leçon 0.3), signifie à peu près Portable Operating System Interface, avec un « X » pour UNIX.
POSIX décrit ce que doit offrir un système de type UNIX, sans dire comment le programmer :
| POSIX définit… | Exemples |
|---|---|
| Les appels système que les programmes peuvent utiliser | ouvrir un fichier, créer un processus |
| Le langage du shell | if, for, case, les redirections > et ` |
| Les commandes de base et leurs options | ls, cp, grep, sed, awk, find |
| Les droits et les signaux | chmod 755, kill -9 |
Plus tard, l'organisme The Open Group (propriétaire de la marque « UNIX » depuis les années 1990) publie la Single UNIX Specification. Seuls les systèmes certifiés et payant la licence ont le droit de s'appeler officiellement « UNIX ». C'est le cas de macOS (certifié depuis la version 10.5, en 2007), d'AIX ou de Solaris.
Linux n'est pas certifié UNIX (la certification coûte cher et n'apporte rien à un projet libre), mais il suit POSIX de très près. C'est pourquoi on dit que Linux est un système « de type UNIX » (Unix-like).
getconf _POSIX_VERSION # quelle version de POSIX ? ex. 200809 = édition de 2008
Conseil pratique pour toute votre carrière : quand vous écrivez un script qui doit tourner partout, écrivez-le en sh POSIX plutôt qu'avec des astuces propres à bash. Sur Debian et Ubuntu, /bin/sh est d'ailleurs dash, un shell POSIX minimal : un script « bash » lancé avec sh peut y échouer.
6. Le procès qui a freiné BSD (1992-1994)
À la fin des années 1980, les développeurs de Berkeley entreprennent de remplacer tout le code d'origine AT&T dans BSD, pour pouvoir le diffuser librement. En 1991 sort Net/2, presque entièrement libre. Des projets en dérivent : 386BSD (1992), pour les PC, et la société BSDi, qui vend une version commerciale.
En 1992, USL (Unix System Laboratories, la filiale UNIX d'AT&T) attaque BSDi, puis l'université de Californie, en justice : BSD contiendrait encore du code et des secrets d'AT&T. Pendant deux ans, personne ne sait si BSD pourra continuer à être distribué. Les entreprises hésitent à l'utiliser.
En 1993, Novell rachète USL. Le procès se termine par un accord début 1994 : quelques fichiers sont retirés ou modifiés, et Berkeley publie 4.4BSD-Lite (1994), libre de tout code AT&T.
Mais pendant ces deux années d'incertitude, un autre système, libre et sans aucun risque juridique, a avancé très vite : Linux. Linus Torvalds l'a dit lui-même : si un BSD libre pour PC avait été disponible à ce moment-là, il n'aurait peut-être jamais écrit son noyau.
7. Les descendants de BSD aujourd'hui
Net/2 (1991) et 386BSD (1992), puis 4.4BSD-Lite (1994)
├── FreeBSD (1993) ── serveurs, Netflix (diffusion vidéo), base du système des PlayStation récentes
├── NetBSD (1993) ── « tourne sur tout », très portable
│ └── OpenBSD (1995) ── sécurité avant tout ; a créé OpenSSH (1999)
└── NeXTSTEP / Darwin ── base de macOS et iOS (avec le micro-noyau Mach)
FreeBSD et NetBSD sont nés en 1993 de 386BSD ; après l'accord de 1994, ils ont été reconstruits sur 4.4BSD-Lite.
Vous utilisez donc peut-être déjà BSD sans le savoir : macOS et iOS en descendent, et OpenSSH, que vous emploierez sur chaque serveur Linux, est développé par l'équipe d'OpenBSD.
8. La frise de la leçon
1974 Berkeley reçoit UNIX
1978 Première distribution BSD (Bill Joy)
1982 Fondation de Sun ; accord de démantèlement d'AT&T ; System III
1983 System V (AT&T) ; 4.2BSD apporte TCP/IP
1984 AT&T démantelé : UNIX devient un produit commercial
1986 AIX (IBM)
1988 POSIX (IEEE 1003.1) ; création de l'OSF ; début des « guerres UNIX »
1991 Net/2 ; Linus Torvalds commence Linux
1992 Procès USL contre BSDi ; Solaris 2 (base System V R4)
1993 FreeBSD, NetBSD ; Novell rachète USL
1994 Accord : 4.4BSD-Lite, libre de code AT&T
Pièges fréquents
- Croire qu'une commande vue sur macOS marchera pareil sur Linux. Les deux suivent POSIX, mais les options diffèrent souvent :
sed -is'écritsed -i ''sur macOS (outils BSD),sed -isur Linux (outils GNU). - Confondre « UNIX » et « de type UNIX ». « UNIX » est une marque réservée aux systèmes certifiés. Linux et FreeBSD sont « de type UNIX ».
- Écrire
#!/bin/shen tête d'un script plein de syntaxe bash. Sur Debian et Ubuntu,shestdash: les tableaux ou[[ … ]]y échouent. Écrivez#!/bin/bashsi vous utilisez bash. - Penser que les scripts
/etc/init.d/sont toujours utilisés. Ils viennent de System V ; depuis RHEL 7 et Debian 8, c'est systemd qui démarre les services.
Lab
Cette fois, vous êtes sur Debian 12. Vous allez vérifier par vous-même l'héritage POSIX du système :
getconf _POSIX_VERSION # la version de POSIX suivie
ls -l /bin/sh # vers quel shell pointe /bin/sh ?
ps -ef | head -n 3 # syntaxe System V
ps aux | head -n 3 # syntaxe BSD : même résultat ou presque
Les tâches : enregistrer la version POSIX, découvrir quel shell se cache derrière /bin/sh, et noter les deux grandes branches d'UNIX. Puis cliquez sur Vérifier.
Quiz
- Quelles sont les deux grandes branches d'UNIX, et qui a créé chacune d'elles ?
- Citez deux apports majeurs de BSD que vous utiliserez sur Linux.
- Qu'est-ce que POSIX, et pourquoi est-ce utile à un administrateur ?
- Linux a-t-il le droit de s'appeler officiellement « UNIX » ? Pourquoi ?
- Pourquoi le procès USL contre BSDi (1992-1994) a-t-il profité à Linux ?
Réponses
- BSD, créée à l'université de Berkeley (Bill Joy et ses collègues), et System V, la version commerciale d'AT&T.
- Au choix : la pile réseau TCP/IP et les sockets, l'éditeur
vi, le shellcsh(historique, contrôle des tâches), le système de fichiers rapide, et plus récemment OpenSSH (OpenBSD). - Une norme (IEEE, 1988) qui définit les commandes, le shell et les appels système d'un système de type UNIX. Un script ou un savoir-faire conforme à POSIX fonctionne sur Linux, BSD, macOS…
- Non : « UNIX » est une marque réservée aux systèmes certifiés par The Open Group. Linux suit POSIX mais n'est pas certifié : c'est un système « de type UNIX ».
- Pendant deux ans, l'avenir juridique de BSD était incertain ; développeurs et entreprises se sont tournés vers Linux, libre et sans risque juridique.
Sources de référence : M. K. McKusick (Open Sources, 1999), documents de normalisation POSIX et The Open Group, Debian Reference (licence libre). Texte original MasterLinux.