====== La naissance de BSD, l'Unix de l'Université de Californie à Berkeley et son ascension ======
**Logo** de **BSD UNIX** du **CSRG** : {{ :wiki:histoire_informatique:240px-bsd4_3.gif?250 |}}
===== 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, l'UCB 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** (**V6**) contenant un compilateur **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 Pascal et de nouveaux logiciels, en autres deux logiciels ''développés'' 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é (''482'') est paru le 27 septembre 2024.
==== 3BSD ====
En 1978, un ordinateur **DEC VAX** a été installé à Berkeley mais le seul Unix disponible pour cette architecture était **UNIX/32V** (**32V**) des Bell Labs qui ne supportait pas les fonctionnalités de **mémoire virtuelle paginée** offerte par le **VAX-11**, c'est une des raisons pour laquelle l'UCB à développé **3BSD** en fin d'année 1979 et créé 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, ce 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** (**V7**) 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 ce 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//**) en 1980.
==== 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 ce 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** (**FFS**), 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, c'est 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 ====
Logo de **4.2BSD** : {{ :wiki:histoire_informatique:telechargement_2_.jpeg?180 |}}
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é c'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''. Les commandes Unix en rapport à la nouvelle pile TCP/IP de Berkeley, incluait en autres, **ifconfig** pour la gestion des cartes réseaux, **route** pour voir et modifier la table de routage, **netstat** qui permet de lister les ports de différent **protocole réseau**, client et serveur **FTP** (commande **ftp** et **ftpd**), client et serveur **TFTP** (commande **tftp** et **tftpd**), client et serveur **Telnet** (commande **telnet** et **telnetd**), client et serveur **Rlogin** (commande **rlogin** et **rlogind**), client et serveur **RSH** (commande **rsh** et **rshd**), client **Mail** (commande **mail**) et tous les services en rapport à la pile TCP/IP hormis **inetd** qui a été seulement intégré à partir de **4.3BSD**.
4.2BSD est la première version de BSD UNIX a intégré tous les composants nécessaires pour gérer une pile TCP/IP ! 4.2BSD est le tout premier système d'exploitation à avoir une pile TCP/IP ''complète'' et ''opérationnelle'' (tous OS confondus et pas seulement les système UNIX) ! En gros tous les OS de nos jours ont une pile TCP/IP qui c'est originellement basée sur celle de BSD du CSRG, c'est pour ainsi dire les fondements de l'**internet** tel q'on le connaît à l'heure actuelle !
==== 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 à créer 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'' en son sein 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 ce 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 [[wiki:virtualisation_et_emulation:simh|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 Processeur 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** basé sur **4.3BSD Net/2** 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 externes se sont formés pour créer leur propre système d'exploitation, tous deux basés sur **386BSD 0.1**. **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 vendait 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**. Pour un Unix aussi ancien, il y avait la possibilité d'installer de nombreux logiciels ''tiers'', en autres un nombre conséquent d'utilitaires du **projet GNU**. Cet OS fût relativement ''populaire'' sur les **serveurs**, avant que les BSD ''libres'' soient aussi maturent que ce système. À noter que BSDi a largement participé à l'évolution des BSD ''libres''.
===== 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 le 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. Il y a eu également une entreprise produisant des BSD UNIX ''commerciaux'' du nom de **mt Xinu, Inc**.
===== 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:
* [[wiki:systemes_d_exploitation:bsd_unix:freebsd|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**.
* [[wiki:systemes_d_exploitation:bsd_unix:netbsd|NetBSD]], premier dérivé de BSD lancé en 1993, était basé à l'origine basé 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.1** 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 **2.11BSD** conçu pour fonctionner sur des microcontrôleurs tels que le **PIC32**.
* **LiteBSD**, une variante de **4.4BSD** Unix pour les microcontrôleurs **PIC32MZ**
* [[wiki:systemes_d_exploitation:macos|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**).
[[wiki:systemes_d_exploitation:macos|macOS]] est partiellement ''libre'' (le système de base **Darwin**) mais tous les logiciels spécifiques à Apple (comme **iTunes**) ne le sont pas.