BSD

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Berkeley Software Distribution
開発元企業 / 開発者 CSRG, UCB
プログラミング言語 C
OSの系統 UNIX
開発状況 休止(派生版は継続)
ソースモデル 歴史的にはクローズドソースで、徐々にオープンソースに移行
初リリース 1977年
最新安定版リリース 4.4-Lite2 / 1995年
使用できる言語 英語
対応プラットフォーム PDP-11VAXIntel 80386
カーネル種別 モノリシックカーネル
ユーザランド BSD
既定のUI キャラクタユーザインタフェース
ライセンス BSDライセンス
ウェブサイト N/A

BSD(ビーエスディー)は、Berkeley Software Distribution の略語で、1977年から1995年までカリフォルニア大学バークレー校 (University of California, Berkeley, UCB) の Computer Systems Research Group (CSRG) が開発・配布したソフトウェア群、およびUNIXオペレーティングシステム (OS)。なお、今日「BSD」という名称は同OSを元に開発されたBSDの子孫の総称として使われることもあるが、この項では主に前述のUCBによるソフトウェア群およびOSについて述べる。

元となったコードベースと設計はAT&TのUNIXと共通であるため、歴史的にはBSDはUNIXの支流 "BSD UNIX" とみなされてきた。1980年代、ワークステーションクラスのシステムベンダーがプロプライエタリなUNIXとしてBSDを広く採用していた。例えば、DECUltrixサン・マイクロシステムズSunOSなどである。これは、ライセンス条件の容易だったためと、当時の多くの技術系企業の創業者がBSDを熟知していたためである。

それらプロプライエタリなBSD派生OSは、1990年代にはUNIX System V Release 4OSF/1に取って代わられ(どちらもBSDのコードを取り入れており、他の現代のUnixシステムの基盤となった)、後期のBSDリリースはいくつかのオープンソース開発プロジェクトの基盤となった。例えば、FreeBSDNetBSDOpenBSDDragonFly BSDなどが今も開発中である。さらにそれら(の全部あるいは一部)が最近のプロプライエタリなOSにも採用されている。例えば、WindowsTCP/IPコード(IPv4のみ)やアップルMac OS Xである。

歴史[編集]

UNIX系統図

PDP-11版[編集]

ベル研究所は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]

VAX版[編集]

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でのジョブコントロール英語版delivermailsendmailの前身)、高信頼のシグナルcursesライブラリなどがある。

4.1BSD(1981年6月)は、VAXの主要OSであるVMSに比べてBSDの性能が悪いという批判に応えたものだった。ビル・ジョイは4.1BSDカーネルがVMSといくつかのベンチマークで互角になるまで体系的に性能強化を施した。当初 5BSD と呼ぶ予定だったが、AT&TUNIX System V との混同を恐れて異議を唱えたため、4.1BSD となった[4]

4.2BSDはいくつかの大きな改修を行い、リリースまで2年以上かかった。4.2BSDがリリースされるまでに中間バージョンが3度リリースされている。4.1aBBNの予備的な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[編集]

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/2 と訴訟問題[編集]

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自体は短命に終わったが、間もなくそれをベースとしてNetBSDFreeBSDのプロジェクトが始まった。

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]

4.4BSD と派生[編集]

訴訟の過程では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(FreeBSDNetBSDOpenBSDDragonFly BSD など)が開発・保守されている。

さらに、BSDライセンス許容型の性質により、フリーなものもプロプライエタリなものも含めて様々なOSでBSDのコードが利用されている。例えば、WindowsはBSD由来のコードをTCP/IP実装に使用し、BSDのコマンドラインのネットワークツールをリコンパイルしたものを Windows 2000で導入した[9]。アップルのMac OS Xの基盤となった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はIEEEANSIISOPOSIXなどの標準に準拠しつつ、BSDの伝統的振る舞いを維持している。AT&TのもともとのUNIXと同様モノリシックカーネルであり、デバイスドライバ特権モードでカーネルと共に動作する。

BSDの主な子孫[編集]

BSD系OSの利用状況の調査結果を示した棒グラフ(2005年)[10]。複数回答がありうるので、合計は100%を超えている。

BSDは様々なオペレーティングシステムの基盤となった。最もよく知られているのはオープンソースの FreeBSD、NetBSD、OpenBSD であり、それらはいずれも386BSDと 4.4BSD-Lite を起源としている。NetBSDとFreeBSDは1993年にプロジェクトを開始しており、当初は386BSDをベースとしていたが、1994年に 4.4BSD-Lite のコードベースに移行した。OpenBSDは1995年にNetBSDからフォークした。この3つのBSDの子孫からさらに様々な子孫が分岐しており、DragonFly BSDFreeSBIEMirOS BSD英語版DesktopBSDPC-BSDなどがある。これらはそれぞれターゲットとするシステムが異なり、政府機関、大学、企業などで普通に使われている。BSDまたはその子孫を起源とする商用OSもいくつかあり、サンSunOSアップルMac OS Xなどが挙げられる。

最近のBSD系OSの多くは Mac OS Xを除けばオープンソースであり、BSDライセンスで利用できる。Mac OS XとDragonfly BSDはモノリシックとマイクロカーネルの中間であるハイブリッドカーネルだが、多くのBSD系OSはモノリシックカーネルである。オープンソースのBSDプロジェクトでは、カーネルとユーザーランドのプログラムやライブラリを一緒に開発していることが多く、ソースのリポジトリはそれらを共通して管理している。

BSDはかつてプロプライエタリなUNIXの基盤としても使われていた。例えば、サンSunOSシークエントの Dynix、NeXTNeXTSTEPDECUltrixと OSF/1 AXP(後の Tru64 UNIX)がある。例に挙げたうち、今も本来の形態でサポートされているのは最後の1つ (Tru64 UNIX) だけである。NeXT のソフトウェアの一部はMac OS Xの基盤の一部となった。商業的に最も成功したBSDの子孫はMac OS Xといえる。

以下にBSDの子孫であるUnix系OSの例を挙げる。

脚注[編集]

  1. ^ Peter H. Salus, A Quarter Century of UNIX (Addison Wesley, June 1, 1994; ISBN 978-0-201-54777-1), p. 142
  2. ^ Toomey, Warren. “Details of the PUPS archives”. tuhs.org. The Unix Heritage Society. 2010年10月6日閲覧。
  3. ^ Mueller, Walter (2009年1月4日). “2.11BSD Patch 446+447; fixes for ulrem,umount,tar,tcsh,ps,vmstat,apropos,pstat,rk”. www.classiccmp.org. 2009年1月20日閲覧。
  4. ^ M.K. McKusick in Open Sources, O'Reilly.
  5. ^ a b M.K. McKusick, M.J. Karels, Keith Sklower, Kevin Fall, Marc Teitelbaum and Keith Bostic (1989). Current Research by The Computer Systems Research Group of Berkeley. Proc. European Unix Users Group.
  6. ^ Babcock, Charles (2006年8月14日). “What's The Greatest Software Ever Written?”. InformationWeek. 2009年1月20日閲覧。
  7. ^ Linksvayer, Mike (1993年). “The Choice of a GNU Generation - An Interview With Linus Torvalds”. Meta magazine. 2009年1月20日閲覧。
  8. ^ L. Torvalds (1992年1月29日). “Re: LINUX is obsolete”. comp.os.minix. (ウェブリンク). 2006年5月11日閲覧。 
  9. ^ BSD Code in Windows”. everything2.com (2001年3月20日). 2009年1月20日閲覧。
  10. ^ BSD Usage Survey”. BSD Certification Group (2005年10月31日). 2009年1月20日閲覧。

参考文献[編集]

関連項目[編集]

外部リンク[編集]