Berkeley Software Distributionは、1977年から1995年までカリフォルニア大学バークレー校 (University of California, Berkeley, UCB) の Computer Systems Research Group (CSRG) が開発・配布したソフトウェア群、およびUNIXオペレーティングシステム (OS) を言う。略称はBSD(ビーエスディー)。なお、今日「BSD」という名称は同OSを元に開発されたBSDの子孫の総称として使われることもあるが、この項では主に前述のUCBによるソフトウェア群およびOSについて述べる。
元となったコードベースと設計はAT&TのUNIXと共通であるため、歴史的にはBSDはUNIXの支流 "BSD UNIX" とみなされてきた。1980年代、ワークステーションクラスのシステムベンダーがプロプライエタリなUNIXとしてBSDを広く採用していた。例えば、DECのUltrix、サン・マイクロシステムズのSunOSなどである。これは、ライセンス条件の容易だったためと、当時の多くの技術系企業の創業者がBSDを熟知していたためである。
それらプロプライエタリ (proprietary:非公開 ) なBSD派生OSは、1990年代にはUNIX System V Release 4とOSF/1に取って代わられ(どちらもBSDのコードを取り入れており、他の現代のUnixシステムの基盤となった)、後期のBSDリリースはいくつかのオープンソース開発プロジェクトの基盤となった。例えば、FreeBSD、NetBSD、OpenBSD、DragonFly BSDなどが今も開発中である。さらにそれら(の全部あるいは一部)が最近のプロプライエタリなOSにも採用されている。例えば、WindowsのTCP/IPコード(IPv4のみ)やAppleのmacOSである。
ベル研究所は1970年代に初期のUnixをソースコードも含めて配布し、大学の研究者らがUnixを修正・拡張できるようにした。バークレーでの最初のUnixシステムはPDP-11を使ったもので、1974年にインストールされ、計算機科学科が様々な研究に使用した。
他の大学はバークレーで改良されたソフトウェアに関心を寄せるようになり、当時バークレーの大学院生だったビル・ジョイが1977年、それらを first Berkeley Software Distribution (1BSD) としてまとめ始め、1978年3月9日にリリースした[1]。1BSDは独立した完全なOSというよりも Sixth Edition Unix へのアドオンであり、その主なコンポーネントはPascalコンパイラとジョイが開発したラインエディタ ex(英語版) だった。
1979年5月にリリースとなった Second Berkeley Software Distribution (2BSD)[2]は、1BSDのソフトウェアの更新版だけでなくジョイが新たに開発した vi エディタ(exのスクリーンエディタ版)と C Shell も含まれていた。
2BSDの後のリリースでは、PDP-11アーキテクチャからVAXベースへとプラットフォームが変化している。1983年の2.9BSDには4.1cBSDからのコードを含んでおり、それまでアプリケーションとパッチの集まりだったものが初めて完全なOS(Version 7 Unix の修正版)のリリースとなった。2BSDの最終版は1992年にリリースされた 2.11BSD である。2008年現在、2BSD用のパッチ447が2008年12月31日にリリースされており、ボランティアによる保守が続いている[3]。
1978年、UnixをVAXアーキテクチャに移植した UNIX/32V がバークレーのVAXにインストールされたが、これはVAXの仮想記憶機能を生かしたものではなかった。32Vのカーネルをバークレーの学生達が大幅に書きかえて仮想記憶を実装し、2BSDのユーティリティ群をVAXに移植したものと32V由来のユーティリティ群をまとめて完全なOSとしたものが 3BSD として1979年末にリリースされた。3BSDは、Virtual VAX/UNIX または VMUNIX (Virtual Memory Unix) とも呼ばれ、BSDのカーネルイメージは4.4BSDまで /vmunix と呼ばれるようになった。
3BSDに注目した国防高等研究計画局 (DARPA) は、バークレーの Computer Systems Research Group (CSRG) に資金提供することを決め、CSRGにDARPAの研究プロジェクトである VLSI Project のための標準Unixプラットフォームを開発させることにした。1980年、CSRGは3BSDに様々な改良を加えた 4BSD をリリースした。
4BSD(1980年11月)が3BSDに加えた改良としては、既にリリース済みだったcshでのジョブコントロール(英語版)、delivermail(sendmailの前身)、高信頼のシグナル、cursesライブラリなどがある。
4.1BSD(1981年6月)は、VAXの主要OSであるVMSに比べてBSDの性能が悪いという批判に応えたものだった。ビル・ジョイは4.1BSDカーネルがVMSといくつかのベンチマークで互角になるまで体系的に性能強化を施した。当初 5BSD と呼ぶ予定だったが、AT&Tが UNIX System V との混同を恐れて異議を唱えたため、4.1BSD となった[4]。
4.2BSDはいくつかの大きな改修を行い、リリースまで2年以上かかった。4.2BSDがリリースされるまでに中間バージョンが3度リリースされている。4.1a はBBNの予備的なTCP/IP実装を導入している。4.1b はマーシャル・カーク・マキュージックが実装した Berkeley Fast File System を導入した。4.1c は4.2BSDの数カ月前にリリースされた中間バージョンである。
4.2BSDの設計方針を決定するため、DARPA は運営委員会を立ち上げた。委員にはUCBからボブ・ファブリー、ビル・ジョイ、サム・レフラー、BBNからアラン・ネメス、ロブ・ガーウィッツ、ベル研究所からデニス・リッチー、スタンフォード大学からキース・ランツ、カーネギーメロン大学からリチャード・ラシッド、MITからバート・ハルステッド、ISIからダン・リンチ、UCLAからジェラルド・J・ポペックが参加した。この委員会は1981年4月から1983年6月まで会合を開いていた。
4.2BSDは1983年8月に正式リリースされた。実は、リリース前の1982年にはビル・ジョイが大学を離れてサン・マイクロシステムズを共同創業している。その後はマイク・カレルズ(英語版)とマーシャル・カーク・マキュージックがプロジェクトリーダー的役割を果たした。また、4.2BSDのリリースと同時にジョン・ラセターの描いたBSDデーモンというマスコットもデビューした。最初の登場はUSENIXで配布されたマニュアルの表紙である。
4.3BSD は1986年6月にリリースされた。主な改良点は性能であり、4.2BSDは4.1BSDほど性能をチューニングできていなかった。そのリリース前に、BSDでのTCP/IPの実装はBBNの公式実装から大幅に変更されていた。DARPAは数カ月かけてそれを試験し、BBN版より4.2BSD版が優れていると結論付け、それがそのまま4.3BSDで採用された。
4.3BSDリリース後、BSDのプラットフォームを古くなったVAXから新たなプラットフォームへ移行することが決まった。当初 Computer Consoles Inc. の68kベースの Power 6/32(コード名 "Tahoe")が候補となったが、間もなく開発者らがそれをやめた。それでも 4.3BSD-Tahoe という移植版(1988年6月)は貴重であり、BSDにおける機種依存コードと機種共通コードの分離をもたらし、将来の移植性向上に寄与した。
移植性以外にも、CSRGはOSIネットワークプロトコルスタックの実装、カーネルの仮想記憶システムの改良、インターネットの成長に対応した(LBLのバン・ジェイコブソンによる)TCP/IPアルゴリズムの改良といった改良も行っている[5]。
それまでBSDの全バージョンでAT&TのプロプライエタリなUnixのコードが含まれており、AT&Tのソフトウェアライセンスを必要としていた。ソースコードライセンスは非常に高価で、第三者からはAT&Tとは無関係に開発されたネットワーク関連コードだけをリリースして欲しいと要望されることもあった。そこで生まれたのが Networking Release 1 (Net/1) で、AT&Tのライセンスが不要なコードのみで構成されており、BSDライセンスで自由ソフトウェアとして自由に再配布可能とされた。これが1989年6月にリリースされている。
4.3BSD-Renoは1990年初めにリリースされた。4.4BSDとして開発中のバージョンの中間リリース的性格のリリースであり、その使用は一種のギャンブルだという意味でギャンブルの街リノの名を冠している。このリリースは明確にPOSIX準拠を目指しており[5]、ある面ではBSDの精神からかけ離れているとされることもある(というのも、POSIXは System V ベースとなっている部分が多く、Reno はそれまでのリリースに比べるとかなり肥大化している)。ゲルフ大学(英語版)が移植したNFSも新機能として含まれていた。
2006年8月、Information Week 誌は4.3BSDを「これまでに書かれた最も偉大なソフトウェア」と評した[6]。コメントには「BSD 4.3 はインターネットの単独で最大の理論的下支えを代表している」とある。
Net/1リリース後、BSD開発者キース・ボスティック(英語版)は、BSDのAT&Tとは無関係な部分をさらにNet/1と同じライセンスでリリースしようと提案した。そして彼はUnixの標準ユーティリティをAT&Tのコードを使わずに再実装するプロジェクトを開始。例えば、viはAT&T由来のedをベースにしていたので、全く新たにnvi (new vi) を書いた。18カ月でAT&T由来のユーティリティを全て再実装して置換し、カーネルにもAT&T由来のファイルは数えるほどしかない状態となった。それらのファイルを削除し、1991年6月、自由に再配布可能なほぼ完全なOSである Networking Release 2 (Net/2) をリリースした。
Net/2は Intel 80386 アーキテクチャへの2つの独立したBSD移植プロジェクトの基盤となった。1つはウィリアム・ジョリッツらによるフリーな386BSDで、もう1つは Berkeley Software Design(英語版) (BSDi) のプロプライエタリなBSD/386(後にBSD/OSに改称)である。386BSD自体は短命に終わったが、間もなくそれをベースとしてNetBSDとFreeBSDのプロジェクトが始まった。
BSDiは System V の著作権と UNIX の商標を所有する AT&T の UNIX Systems Laboratories (USL) との間で訴訟に見舞われることになった。USLとBSDiの訴訟 (en) は1992年に始まり、この訴訟が解決するまで、Net/2の配布は差し止められることになった。
この訴訟問題で約2年間、BSD系のPC-Unix開発にはブレーキがかかり、Linuxの急激な支持の原因を作った。リリースされたのは1992年だが、386BSDはLinuxより前から開発されていた。リーナス・トーバルズは、386BSDか GNU Hurd が当時利用可能だったら、自分でLinuxカーネルをつくろうとはしなかっただろうと述べている[7][8]。
訴訟の過程ではAT&T由来のコードがNet/2にまだ含まれていることが明らかとなったが、同時にAT&Tが販売しているUNIX System VにもBSD由来のコードがライセンスに違反して使用されていたことから、ノベルがUSLを買い取った後の1994年に関係者は和解。1994年1月、訴訟は主としてバークレー側に有利な形で決着した。バークレーの配布物である18,000個のファイルのうち、3個のファイルの削除が命じられ、70個のファイルにUSLの著作権表示を加えることが命じられた。さらに和解条件として、近々リリースされる4.4BSDでのバークレーの所有するコードのユーザーやディストリビュータに対してUSLが訴訟を起こさないと約束している。
1994年6月、4.4BSDは2つの形でリリースされた。AT&Tのライセンスに抵触しない4.4BSD-Liteと従来通りのライセンスを要する4.4BSD-Encumberedである。
バークレーからの最後のリリースは1995年の4.4BSD-Lite Release 2で、その後CSRGは解散となり、バークレーでのBSD開発は終了した。それ以降、4.4BSD-Liteを直接あるいは間接的にベースとしている派生OS(FreeBSD、NetBSD、OpenBSD、DragonFly BSDなど)が開発・保守されている。
さらに、BSDライセンスの許容型の性質により、フリーなものもプロプライエタリなものも含めて様々なOSでBSDのコードが利用されている。例えば、WindowsはBSD由来のコードをTCP/IP実装に使用し、BSDのコマンドラインのネットワークツールをリコンパイルしたものをWindows 2000で導入した[9]。アップルのmacOSの基盤となったDarwinも4.4BSD-Lite2とFreeBSDから派生したものである。Solarisなどの商用UNIXもBSDコードを含んでいる。
BSDはUNIXとして初めて TCP/IPスタック(Berkeleyソケット)を搭載した。ソケットをUnixのファイル記述子と統合したことで、ネットワーク経由のデータの読み書きをディスクアクセスのように容易に行えるようになった。それに対してAT&Tは STREAMS をリリース。機能的には同等でアーキテクチャはSTREAMSの方が優れていたが、ソケットの方が先に普及しており、意図的に使用するシステムコールを別の名前にしたためBSD系ではそれらシステムコールがサポートされず、結果的にAPIとして普及しなかった。BerkeleyソケットをTurbo Pascalで書き直したものがのちにWindows 95に取り込まれ、現在のWinsock2の元となった。
今でもBSDは大学などで技術的叩き台として使われている。商用製品やフリーな製品でもよく使われており、組み込みシステムでの採用もある。ソースコードの品質が一般に高く、文書(特にmanページと言われるオンラインマニュアル)も揃っているため、様々な用途に利用可能である。
BSD系OSは、バイナリ互換レイヤーを使って同一アーキテクチャの異なるOSのソフトウェアを動作させることができる。これはエミュレータよりも高速で単純であり、例えばLinux向けのアプリケーションをほぼ性能低下なく動作させることができる。
最近のBSD系OSはIEEE、ANSI、ISO、POSIXなどの標準に準拠しつつ、BSDの伝統的振る舞いを維持している。AT&TのもともとのUNIXと同様モノリシックカーネルであり、デバイスドライバは特権モードでカーネルと共に動作する。
BSDは様々なオペレーティングシステムの基盤となった。最もよく知られているのはオープンソースのFreeBSD、NetBSD、OpenBSDであり、それらはいずれも386BSDと4.4BSD-Liteを起源としている。NetBSDとFreeBSDは1993年にプロジェクトを開始しており、当初は386BSDをベースとしていたが、1994年に4.4BSD-Liteのコードベースに移行した。OpenBSDは1995年にNetBSDからフォークした。この3つのBSDの子孫からさらに様々な子孫が分岐しており、DragonFly BSD、FreeSBIE、MirOS BSD(英語版)、DesktopBSD、TrueOSなどがある。これらはそれぞれターゲットとするシステムが異なり、政府機関、大学、企業などで普通に使われている。BSDまたはその子孫を起源とする商用OSもいくつかあり、サンのSunOS、AppleのmacOSなどが挙げられる。
最近のBSD系OSの多くはmacOSを除けばオープンソースであり、BSDライセンスで利用できる。macOSとDragonfly BSDはモノリシックとマイクロカーネルの中間であるハイブリッドカーネルだが、多くのBSD系OSはモノリシックカーネルである。オープンソースのBSDプロジェクトでは、カーネルとユーザーランドのプログラムやライブラリを一緒に開発していることが多く、ソースのリポジトリはそれらを共通して管理している。
BSDはかつてプロプライエタリなUNIXの基盤としても使われていた。例えば、サンのSunOS、シークエントのDynix、NeXTのNeXTSTEP、DECのUltrixと OSF/1 AXP(後のTru64 UNIX)がある。例に挙げたうち、今も本来の形態でサポートされているのは最後の1つ (Tru64 UNIX) だけである。NeXTのソフトウェアの一部はmacOSの基盤の一部となった。商業的に最も成功したBSDの子孫はmacOSといえる。
以下にBSDの子孫であるUnix系OSの例を挙げる。