====== La naissance de BSD, l'Unix de l'Université de Californie à Berkeley et son ascension ====== ===== Résumé Chronologique des BSD UNIX de Berkeley ===== ==== Arrivé de l'Unix des Bell Labs à l'UCB ==== À demande du professeur d'informatique **Bob Fabry**, l’**Université de Californie à Berkeley** (**//UCB//**) à acheter un **PDP-11/45** de l'entreprise **DEC** (**//Digital Equipment Corporation//**) et à acquis pour une somme modique une ''licence'' **Unix** (**Unix version 5**) en 1974. Grâce à l'argent du projet de **base de données Ingres**, un ans plus tard a été acheté un **PDP-11/70** de plus grande taille. En 1975, **Ken Thompson** a pris un congé sabbatique des **Bell Labs** et est venu à **Berkeley** en tant que ''professeur'' invité. Il a aidé à installer **Unix version 6** et a commencé à travailler sur une implémentation du **langage de programmation Pascal** pour le **système**. Les étudiants diplômés **Chuck Haley** et **Bill Joy** ont amélioré le **Pascal** de **Thompson** et ''implémenté'' un éditeur de texte amélioré, **ex**. D'autres ''universités'' ont eu un vif ''intérêt'' pour les **logiciels de Berkeley**. ==== 1BSD ==== **Bill Joy** a commencé à ''compiler'' la première **distribution BSD** (**//Berkeley Software Distribution//**) appelée **1BSD**, qui fut ''publiée'' le 9 mars 1978. **1BSD** n'était pas une **distribution Unix complète** mais simplement un **ensemble de logiciels** pour **Unix version 6** contenant un **compilateur de Pascal** ''amélioré'' et un éditeur de texte nommé **ex** (l'ancêtre de **vi**). ==== 2BSD ==== La **distribution 2BSD** a été ''publiée'' en mai 1979, elle comprenait des mises à jour des **logiciels de 1BSD** en particulier une amélioration du **compilateur de Pascal** et de ''nouveaux'' **logiciels**, en autres deux **logiciels** développer par **Joy**, l'éditeur de texte **vi** (une version ''visuelle'' de **ex**) et le **C shell** (**shell unix** utilisant une syntaxe plus proche du **langage C** et bénéficiant d'un ''historique'' de commandes), puis la bibliothèque et base de données **Termcap** (**//terminal capability//**). **2.xBSD** est la branche ''spécifique'' au **mini-ordinateur DEC PDP-11**, elle se termina par la version **2.11BSD** qui reçoit encore à l'heure ''actuelle'' des **correctifs** de ''sécurité''. Le dernier **correctif de sécurité** (**481**) est paru le 28 avril 2023. ==== 3BSD ==== En 1978, un **ordinateur DEC VAX** a été installé à **Berkeley** mais le seul **Unix** disponible pour cette ''architecture'' était **UNIX/32V** des **Bell Labs** qui ne supportait pas les ''fonctionnalités'' de **mémoire virtuelle** offerte par le **VAX**, c'est une des raisons pour laquelle l'**UCB** à développé **3BSD** en fin d'année 1979 et crée un ''nouveau'' **noyau** basé sur celui de **32V**, ''réécrit'' en grande partie par **Özalp Babaoğlu** (étudiant ''diplômé'' de **Berkeley**) qui inclue une implémentation de **mémoire virtuelle**, les utilitaires de **2BSD portés** sur le **VAX** et les **utilitaires standards** de **32V**. **3BSD** est la première version de **BSD** à être un **système d'exploitation complet** et non plus quelques **logiciels** pour agrémenter une version d'**Unix**. **3BSD** était également appelé **Virtual VAX/UNIX** ou **VMUNIX** (pour **//Virtual Memory Unix//**) et les ''images'' du **noyau BSD** ont été appelées **/vmunix** au lieu de **/unix** sur l'**Unix des Bell Labs**, se nom donné au **noyau** à ''perdurer'' jusqu'à la dernière version de **BSD** (**4.4BSD**). ==== 2.79BSD ==== En parallèle **2.79BSD** basé sur **Unix verion 7** et avec des ''utilitaires'' de **3BSD** est sorti en avril 1980. C'était une **distribution de logiciels** ''spécifique'' au **PDP-11**. ==== 4BSD ==== En 1979, la **DARPA** (**//Defense Advanced Research Projects Agency//**) souhaitait ''unifier'' les **systèmes d'exploitation** utilisés par les **centres américains de recherche en informatique** connectés au **DARPAnet**. C'est à ce moment que **Berkeley** proposa à la **DARPA** de ''développer'' une version ''améliorée'' de **3BSD** pour résoudre se problème. En conséquence, **4BSD** fut crée en novembre 1980, comprenant les ''utilitaires'' de **3BSD** et ''supportait'' les **VAX** les plus ''récents'', un ''nouveau'' **système de courrier électronique** (**Delivermail**), un **interpréteur de LISP**, le **contrôle des tâches du C shell** (**csh**), les **signaux fiables** et la **bibliothèque de programmation Curses**. La plupart des ''organisations'' achetaient une ''licence'' **32V** pour pouvoir ''commander'' **4BSD** sans même se ''soucier'' d'obtenir une bande **32V**. C'est également après l'''accord'' passé avec la **DARPA** que le ''professeur'' **Bob Fabry** créa le **Computer Systems Research Group** (**//CSRG//**). ==== 4.1BSD ==== **4BSD** est une version qui a été jugée trop ''lente'' par rapport à l'**OS VMS** (**//Virtual Memory System//**) de **DEC** et qui de se fait a été rapidement remplacée par **4.1BSD** paru en juin 1981, pour répondre au critique de **4BSD**. Le **noyau de 4.1BSD** a été systématiquement mis au point par **Bill Joy** jusqu'à ce qu'il puisse fonctionner aussi ''bien'' que **VMS** sur plusieurs **benchmarks**. À la base **4.1BSD** devait s'appeler **5BSD** mais suite aux objections de **AT&T** le nom a été ''modifié'' pour **4.1BSD** pour éviter toutes ''confusions'' avec l'**UNIX System V** de **AT&T**. ==== 2.8BSD ==== Coté **PDP-11**, **2.8BSD** paru en juillet 1981, toujours basé sur la **V7** avec des ''apports'' de **4.1BSD**. ==== Entre 4.1BSD et 4.2BSD ==== Entre **4.1BSD** et **4.2BSD** il y eu trois ''versions'' bêta intermédiaires: **4.1aBSD**, qui incorporait une ''version modifiée'' de l'''implémentation'' préliminaire de **TCP/IP** de **BBN** (**//Bolt, Beranek and Newman//**); puis **4.1bBSD** en juin 1982, qui incluait un ''nouveau'' **système de Fichiers** du nom de **Berkeley Fast File System**, ''implémenté'' par **Marshall Kirk McKusick**; et **4.1cBSD** en avril 1983 était une ''version'' intermédiaire au cours des derniers mois du développement de **4.2BSD**. À ''noter'' que **4.1cBSD** a été le **système de base** de **Unix version 8** des **Bell Labs**. ==== 2.9BSD ==== En 1983, avant la sorti de **4.2BSD** paru **2.9BSD** qui était un **portage logiciel** indirect de **4.1BSD**, le **noyau** utilise une série complexe d'**overlays** pour s'adapter au **PDP-11**. Contrairement aux ''versions'' précédentes de **BSD** pour le **PDP-11**, cest la première ''version'' de la branche **2.xBSD** à être un **système d'exploitation complet** qui ne repose pas sur une ''installation'' préalable de la **V6** ou **V7** des **Bell Labs**. ==== 4.2BSD ==== Pour guider la ''conception'' de **4.2BSD**, **Duane Adams** de **DARPA** a crée un ''comité'' composé de **Bob Fabry**, **Bill Joy** et **Sam Leffler** de l'**UCB**, **Alan Nemeth** et **Rob Gurwitz** de **BBN**, **Dennis Ritchie** de **Bell Labs**, **Keith Lantz** de **Stanford**, **Rick Rashid** de **Carnegie Mellon**, **Bert Halstead** du **MIT**, **Dan Lynch** de l'**ISI** et **Gerald J. Popek** de l'**UCLA**. Ce ''comité'' s'est réuni d'avril 1981 à juin 1983. À ''noter'' que **Bill Joy** à quitter le **CSRG** de l'**UCB** pour ''rejoindre'' l'entreprise **Sun Microsystems**. C'est en août 1983 que la ''version officielle'' de **4.2BSD** vu le ''jour'', elle incluait la **pile TCP/IP** de **Berkeley** ''conçu'' par **Bill Joy** et ''non pas'' celle de **BBN**, le ''nouveau'' **système de fichiers Berkeley Fast File System** (**FFS**); et incluait également plusieurs ''fonctionnalités'' de ''contributeurs'' externes, notamment les **quotas de disque** et le **contrôle des tâches**. Cette ''version'' de **BSD** intégrait tellement d'''améliorations'', de nouvelles ''fonctionnalités'',qu'elle devint ''extrêmement populaire'', de sorte que ''beaucoup'' d'utilisateurs de **UNIX System V** ''migrèrent'' vers **4.2BSD**, surtout pour la **pile TCP/IP** qui n'existait pas chez l'**Unix d'AT&T** dans l'attente que celle-ci y soit ''intégrée''. ==== 4.3BSD ==== **4.3BSD** a été ''publié'' en juin 1986, qui incluait une **pile TCP/IP** beaucoup plus ''mature'', le **système de fichiers FFS** fut encore ''amélioré'', et de nombreux **correctifs de performances** ont été ''intégrés''. **4.3BSD** est cité comme le ''meilleur'' **logiciel** jamais ''écrit'' et pour ''cause'' sa **pile TCP/IP** a été ''reprise'' par tous les **Unix** basé sur **System V**, les descendants de **BSD**, **GNU/Linux**, **Microsoft Windows**, et bien d'''autres''... L'**internet** tel qu'on le connait ''actuellement'' repose à l'''origine'' sur le **protocole** et la **pile TCP/IP** de **4.3BSD**. ==== 2.10BSD ==== En avril 1987 paru **2.10BSD**, ''version'' élaborée par un un consortium du **CSRG** et de l' ''association'' **USENIX** qui était basé sur **4.3BSD** adapté pour tous les modèles de **PDP-11** avec une ''gestion'' de la **mémoire**. **2.10BSD** implémentait les **appels système BSD**, **inode**, **mémoire principale** et **mise en cache d'échange**, la prise en charge de **QBUS 22 bits**, **disque RAM**, **pilote de périphérique MSCP** ( **UDA50**, **KLESI**, etc.), l'**espace utilisateur** de **4.3BSD** (**bibliothèques** et **applications**). La seule ombre au tableau est que **2.10BSD** ne supportait pas encore la **mise en réseau**. ==== 4.3BSD-Tahoe ==== **4.3BSD-Tahoe** fut publié en juin 1988, c'est une ''version'' par rapport à **4.3BSD** qui mettait l'accent sur la ''portabilité'' de son **code source**, ce qui conduit à une ''séparation'' du **code** ''dépendant de la machine'' et ''indépendant de la machine'' dans **BSD**, qui améliorait considérablement la ''portabilité'' du **système**. Ce qui a poussé le **CSRG** à creer **4.3BSD-Tahoe** est le fait que **BSD** voulait s'éloigner de la ''plateforme'' vieillissante **VAX** et utiliser à la place la ''plateforme'' **Power 6/32** (nom de code **« Tahoe »**) développée par **Computer Consoles Inc**. qui semblait ''prometteuse'' à l'époque, mais a été malheureusement ''abandonnée'' par ses **développeurs** peu de temps après. Mais au final le ''portage'' de **4.3BSD-Tahoe** a été très utile pour les ''versions'' ultérieures de **BSD**. ==== Networking Release 1 ==== Jusque-là, toutes les ''versions'' de **BSD** avaient du **code propriétaire AT&T Unix** en son ''sain'' et étaient donc soumises à une ''licence'' **logicielle AT&T**. Les **licences AT&T** étaient devenus très ''coûteuses'' et plusieurs parties extérieures à l'**UCB** avaient exprimé un vif ''intérêt'' pour une ''version'' distincte du **code réseau** qui avait été exclusivement ''développée'' par le **CSRG** et ne contenait donc ''aucun'' **code** provenant de **AT&T**. Ce qui a motivé le **CSRG** à publier **Networking Release 1** (**4.3BSD Net/1**) en juin 1989, qui a été mise à la ''disposition'' des ''non-titulaires'' de ''licence'' du **code AT&T** et était ''librement redistribuable'' selon les ''termes'' de la **licence BSD**. **Net/1** était la première **distribution BSD** totalement ''libre'' au niveau du **code source**. ==== 4.3BSD-Reno ==== **4.3BSD-Reno** est sorti en juin 1990, c'était une ''version intermédiaire'' (''déconseillée'' en production) au cours des premiers ''développements'' de **4.4BSD**. Le nom **Reno** fait référence au centre de jeu de **Reno** du **Nevada**. **4.3BSD-Reno** s'est explicitement orientée vers la ''conformité'' **POSIX**, parmi les nouvelles ''fonctionnalités'' figuraient une ''implémentation'' **NFS** (**//Network File System//**) de l'**Université de Guelph**, une touche d'état (**"Ctrl-T"**) et la ''prise en charge'' de la gamme d'**ordinateurs HP9000**, provenant du ''port'' **HPBSD** de l'**Université de l'Utah**. ==== Networking Release 2 ==== **Networking Release 2** (**4.3BSD Net/2**) a été publié en juin 1991, c'est le ''développeur'' **Keith Bostic** qui a proposé que davantage de **code** non **AT&T** du **système BSD** soit publié sous la même ''licence'' que **Net/1**, la **license BSD**. À cette fin tous les **utilitaires standards** d'**Unix** ont été ''réimplémentés'' (réécrit) en dix-huit mois sous **licence BSD**. Par exemple l'**éditeur de texte vi** qui était ''basé'' sur la version **Unix originale** de **ed**, a été ''réécrit'' en **nvi** (**//new vi//**). **nvi** est encore l'**éditeur de texte** par ''défaut'' de tous les ''descendants actuels'' de **BSD Unix**. Il a été déterminé qu'il y avait seulement ''six fichiers'' liés au **noyau AT&T** manquants, de se fait **Net/2** était un **système d'exploitation** ''presque complet'', ''librement distribuable'' étant sous **licence BSD**. ==== 2.11BSD ==== La dernière version pour **PDP-11** est **2.11BSD** et a été ''publié'' en février 1992, cette ''version'' ne fonctionne que sur les **PDP-11** avec le **mode Superviseur**. **2.11BSD** à la même base que **2.10BSD** avec toutefois quelques **mises à niveau**. Par rapport à **2.10BSD**, **2.11BSD** ''apporte'' une prise en charge ''complète'' de la **mise en réseau** provenant de **4.3BSD** en **mode Superviseur**, une prise en charge des **noms de fichiers longs** et les **applications** venant de **4.3BSD** qui étaient ''manquantes'' dans **2.10BSD**. **2.11BSD** continue de ''recevoir'' des **correctifs de sécurité**, le dernier **correctif** n° ''481'' a été ''publié'' le 28 avril 2023. Tous les **BSD UNIX** de **Berkeley** sont ''émulables'' avec l'**émulateur/simlateur SimH** de **Bob Supnik** qui se trouve [[https://simh.trailing-edge.com/|ici]], vous avez même la ''possibilité'' de ''connecter'' **4.2BSD**, **4.3BSD**, **4.3BSD-Tahoe** (via **4.3BSD Quasijarus**) et **4.3BSD-Reno** pour le **VAX** et **2.11BSD** pour le **PDP-11** à **Internet** en ''choisissant'' une version ''spécifique'' de **SimH** pour la **mise en réseau**. Il ''existe'' également une ''version'' de **SimH** ''nommé'' **Open-SimH** avec encore plus d'**ordinateurs** ''old school'', par contre, il faut **compiler** l'**émulateur**. ===== BSD Unix hors de l'UCB pour le Prcesseur Intel 80386 ===== ==== 386BSD ==== À partir de **Net/2**, le couple **Lynne et William Jolitz** tous deux d'''anciens élèves'' de **Berkeley** ont ''crées'' **386BSD** ''spécifique'' à l'**architecture Intel 80386** en ''créant'' en autres les ''six fichiers'' manquants au **noyau BSD** de **4.3BSD Net/2**, **386BSD** est ''sorti'' le 17 mars 1992. Plusieurs ''versions'' de **386BSD** se sont ''succédées''. **386BSD** ne ''fonctionnait'' pas comme certains ''utilisateurs'' de se **système** le voulait, c'est pourquoi ils ont proposés des ''correctifs'' et des ''améliorations'' sous forme de **patchkit** mais le **couple Jolitz** n'était pas ''enclin'' à les appliquer à leur **système**, c'est pourquoi deux ''organisations'' externe se sont ''crées'' pour creer leur propre **système d'exploitation** tous deux ''basés'' à la base sur **386BSD**. **NetBSD** a vu le jour en avril 1993 et **FreeBSD** en novembre 1993. ==== BSD/386 ==== En parallèle de **386BSD** est né **BSD/386** en avril 1992 (''renommé'' plus tard **BSD/OS**) de l'entreprise **Berkeley Software Design, Inc** (**//BSDi//**), c'était à la base un **OS** prévu pour ''fonctionner'' sur **Intel 80386** (comme **386BSD**). Derrière cette ''entreprise'' il y avait des membres très ''influents'' du **CSRG** et **William Jolitz** mais se dernier à vite ''déchanté'' quand il c'est rendu compte que le ''seul but'' de **BSDi** était de ''vendre'' son **système d'exploitation**, **système propriétaire** qui plus est. **BSDi** vendu son **OS BSD/386** au prix de ''995 $ US'' avec le **code source** soit beaucoup ''moins cher'' qu'une ''licence'' d'**UNIX System V** de **AT&T**. ===== Le Procès contre BSDi et l'UCB ===== En avril 1992, l'**entreprise BSDi** et Les **régents de l'Université de Californie** se sont rapidement retrouvé en ''procès juridique'' face à **Unix System Laboratories** (**//USL//**) pour la ''propriété intellectuelle'' liée au **système d'exploitation Unix** ce qui a provoqué une ''injonction'' sur la **distribution de Net/2** jusqu'à ce que la validité des revendications de ''droits d'auteur'' d'**USL** sur le **code source** puisse être ''déterminée''. Le ''procès'' dura ''deux ans'' ce qui ''freina'' considérablement le ''développement'' des **logiciels libres** descendants de **BSD**, affaire qui propulsa **GNU/Linux** qui était ''exempt'' de tous **code source AT&T**, les ''utilisateurs'' des **systèmes BSD libres** se sont tourné vers **GNU/Linux**, ''craignant'' d'avoir des ennuis à cause du ''procès''. **GNU/Linux** prit un ''avantage'' qu'il a ''conservé'' depuis. En juillet 1993, **Novell** acheta **USL** de **AT&T** ce qui conduit à un ''règlement à l'amiable'' en 1994 avec **BSDi** et les **régents de l'Université de Californie**. Au final, sur les ''18 000 fichiers'' de la **distribution Net/2**, ''seuls trois'' ont dû être ''supprimés'' et ''70 modifiés'' pour afficher les mentions de **droits d'auteur de l'USL**. Une autre ''condition'' du règlement était que l'**USL** n'intenterait pas de nouvelles ''poursuites'' contre les ''utilisateurs'' et les ''distributeurs'' de la prochaine version **4.4BSD-Lite**. Il faut ''préciser'' que se ''procès'', n'empêcha pas le **CSRG** de continuer son ''développement'' de **4.4BSD**. ===== Derniers BSD Unix de l'UCB dépourvus de tout Code Source de AT&T ==== ==== 4.4BSD-Alpha puis 4.4BSD et 4.4BSD-Encumbered ==== En août 1992, **4.4BSD-Alpha** est ''sorti'', puis le 1 juin 1993 c'est au tour de **4.4BSD** et **4.4BSD-Encumbered** de voir le jour. **4.4BSD-Encumbered** a été ''publié'' uniquement pour les ''titulaires'' de **licence USL** car elle contenait du **code source** de **AT&T**. ==== 4.4BSD-Lite Release 1 ==== **4.4BSD-Lite Release 1** a été ''publié'' le 1er mars 1994, cette version était ''dépourvu'' de **code AT&T**, ne nécessitant donc plus de **licence source USL** et elle contenait de nombreux autres ''changements'' par rapport à la ''version originale'' **4.4BSD-Encumbered**. C'est la première ''version'' totalement ''libre'' (**open source**) uniquement sous **licence BSD**. ==== 4.4BSD-Lite Release 2 ==== **4.4BSD-Lite Release 2** a été ''publié'' en juin 1995, c'est la ''dernière version'' développée par le **CSRG**, après quoi le **CSRG** à été ''dissous'' et le ''développement'' de **BSD** à **Berkeley** a cessé. Dès lors plusieurs ''variantes'' basées ''directement'' ou ''indirectement'' sur **4.4BSD-Lite** sont encore ''maintenues'', parmi les **systèmes** les plus ''courant'' on peut citer: **FreeBSD**, **NetBSD**, **OpenBSD** et **DragonFly BSD**. ===== Anicens OS basé sur BSD UNIX hors UCB ===== Quelques ''anciens'' **systèmes Unix** étant basés sur **BSD** (les plus ''populaires''): **SunOS** de **Sun**, **Dynix** de **Sequent**, **NeXTSTEP** (l'ancêtre de **macOS**) de **NeXT**, **Ultrix** de **DEC** et pour finir **BSD/386** devenu **BSD/OS** (avec comme nouvelle base **4.4BSD-Lite**) de **BSDi** puis de **Wind River** après le rachat de **BSDi**. ===== Résumé des BSD Libres Actuels basé sur 4.4BSD ===== Parmi les **systèmes d'exploitation BSD libres** (**open source**) en plein ''développement'', les ''principaux'' système sont: * **FreeBSD** lancé en 1993 (quelques mois après **NetBSD**) était au départ basé sur **386BSD** mais à partir de **FreeBSD 2.0** le **code de 386BSD** a été ''remplacé'' par **4.4BSD-Lite** puis **FreeBSD 3.0** a prit comme base **4.4BSD-Lite 2**. * **NetBSD**, premier ''dérivé'' de **BSD** lancé en 1993, était basé à l'origine sur **386BSD 0.1** et **4.3BSD Net/2**. À partir de **NetBSD 1.0** la ''base'' de **code Net/2** a été ''remplacé'' par **4.4BSD-Lite**, puis à la ''sortie'' de **NetBSD 1.4** le **système** à ''totalement migré'' vers la ''base'' de **code 4.4BSD-Lite 2**. * **OpenBSD** est un ''dérivé'' de **NetBSD 1.0** donc basé dès le départ sur **4.4BSD-Lite**. La première ''version officielle'' est **OpenBSD 2.0** ''publiée'' le 1er octobre 1996. * **DragonFly BSD** résulte d'un **fork** en 2003 de **FreeBSD 4.8** mené par **Matt Dillon**, jugeant le ''nouveau'' **système de threading** et **SMP** (**//Symmetric multiprocessing//**) de **FreeBSD 5** peu ''performant'' et ''difficile'' à maintenir. Ce ''projet'' est la continuation logique de **FreeBSD 4**. Le **système** à bien ''divergé'' de **FreeBSD**. * **RetroBSD**, un **fork** de **BSD 2.11** conçu pour ''fonctionner'' sur des **microcontrôleurs** tels que le **PIC32**. * **LiteBSD**, une variante de 4.4BSD Unix pour les microcontrôleurs PIC32MZ * **macOS** d'**Apple** (appelé initialement **Mac OS X**) s'est ''basé'' à l'origine sur **Rhapsody** qui était basé sur **4.4BSD**, **Rhapsody** est un ''descendant'' de **NeXTSTEP** de **NeXT** qui était basé sur **4.3BSD** (**4.3BSD-Tahoe** puis **4.3BSD-Reno**). Acuellement **macOS** utilise les **utilitaires standards** d'**Unix** provenant de **FreeBSD** et ''utilise'' un **noyau enrichi hybride** du nom de **XNU** (''basé'' sur le **noyau Mach 3** et ''utilisant'' le **noyau BSD** de **FreeBSD** en tant que **service du système d'exploitation**). **macOS** est ''partiellement libre'' (le **système de base Darwin**) mais tous les **logiciels** ''spécifiques'' à **Apple** (comme **iTunes**) ne le sont pas.