祝!4.2BSDリリース40周年

4.2BSDリリース40周年です!

覚えていますか♪ あの(たぶん)暑かった夏を(?)

あの夏、 日本では、 「ジェダイの復讐」を見て「やっぱりEpisode.4だけでいいよな…」と思ったり、 「南極物語」(BGMはヴァンゲリス)でタロとジロに涙してみたり、 はたまた角川映画(「時をかける少女」「探偵物語」)が流行していたり、 ドキュメントダグラム(総集編)のあとにチョロQダグラム見てズッコケてみたり、 当時の人も、いろいろTARI TARIしていたに違いありません

4.2BSDとは?

AT&Tライセンスが必要なオリジナルUNIXの系統で、もっとも産業界にインパクトを与えた記念すべきバージョン

という紹介文は、いかがでしょうか?

ここで「産業界」は、 商用UNIXだけではなく「商用インターネットに必要なエコシステム」を含めているつもりです。

1980年代には、 ネットワーク機器ベンダーが登場してきます。 ベンダーが欲しかったものはUNIXではなくネットワークのコードです。 TCPを一から開発する必要がないのは大きいですよね。 そういうわけで、 (4.2の後)バークレイで開発した(つまりAT&Tライセンスに抵触しない)部分は、 バークレイからNR1(Network Release 1)といった形で提供されていきました。

4.2BSDの技術的特徴

出来事史の詳細は 「UNIXの1/4世紀」[Salus 1994] と 「Unix考古学」[藤田 2016] を参照してください。 技術詳細は、 (4.2BSDの改良版にあたる) 4.3BSDの解説書 「4.3BSDの設計と実装」(絶版)[Leffler.et.al. 1989] とソースコードそのものが良いでしょう。

とにかく、 二つの大きなウリが TCP/IPFFSです。 非公式には、 もっと前のマイナーバージョンから入っていますが、 利用者が限定されていたため、 4.2BSDをもって、これらが公式デビューしたことになります。

4.2BSDとは?その立ち位置

Arapnet接続ユーザの機材更新にあたり、 DEC社VAX11購入者むけARPA推奨OSが4.2BSDという説明が良いようです。

この時点で、TCP/IP自体は、すでに10年近く研究開発してきたものでした。 そして、Arpanetも10年以上運用されてきていました。 そのあいだに、 ミニコンが普及し、 16ビットから32ビット世代ハードウエアへの移行を考える時期になっていました。

購入できる(開発させる?)お金があるサイトはメインフレームでもいいわけですが、 この頃の、 お求めやすい価格の32ビットハードウエアというとDECのミニコンだったでしょう。 ただし、ミニコン全盛期はそろそろ終わりです。

BSDの開発を主導してきた大学院生Bill Joyは4.2BSDリリースの半年ほど前にバークレイを去り (博士課程は中途退学)、 SUN(サンマイクロシステムズ社)のco-founderとなっています。 4.2BSDリリースの直後、1983年11月にはBSDベースのSUN-2も発売され、 本格的にUnixワークステーションの時代が始まっていきます。

TCP/IP

バークレイにARPAから提供されたBBN社のリファレンス実装がありました。 リファレンス実装は「/dev/tcpを開いて、あれこれする」というUNIX風のコードです。 のちのPlan 9やGo言語風と言ってもよいでしょう (注:Plan9もGo言語も主要メンバにRob PikeとKen Thompsonがいます)。 今の人には、Go言語のTCP/IP生コードに近い感じという説明が伝わると思います。

このTCP/IPリファレンス実装をBSD UNIXにマージしてリリースすれば、 ARPAとの契約としては十分だったはずですが、 そういうことにならなかったのでした。 Bill Joyが改造しまくった結果、 われわれが今知っているC言語のソケットプログラミングとなりましたとさ。

FFS (Berkeley Fast File System)

AT&TオリジナルUNIXのファイルシステムは、 素直というか単純で、耐障害性も低いものでした。 ただ、そもそもHDDの速度も遅く容量も小さかった時代の産物なので、 当初は、 そんなに頑張らなくても大丈夫だった or (よくはないですが)その辺の改良は後回しだったでしょうか。

しかしながら、 10年もたつと、ずいぶんハードウエアも進化します。 高性能で大容量なものになったはずです。 UNIXも普及してきて、ファイルシステムの不満も溜まっていたでしょう。

FFSでは、 パフォーマンス改善のためにHDDの構造を考慮した書きこみ場所の決定や、 重要情報の冗長化をしています。 SSDが主流の今では、ピンと来てもらえない話ですが。。。

4.2BSDのリリース日はいつなのか?

素朴な疑問です。 ざっくり1983年8月(たまに9月説もある?(出典不明))とされていますが、 8月N日といった公式リリース日は未定なのでしょうか?

ちなみに、 そもそもARPAとの契約終了日が9月30日なので[Fabry and Sequin 1983]、 どんなに遅くとも、 8月の終わりには、各サイトにテープを発送するくらいのダンドリのはずです。 よって、8月リリースという伝承は妥当なところです。 もっとも、 たとえ実作業が遅れていても、 書類上リリースしたと主張するとは思いますけれど(w)。

さて、それはともかく、リリース日の疑問に戻りましょう。 こういうときは UNIX遺産(The Unix Heritage Society略してTUHS) を掘り返します。

まず、 リリースに際して最終確認するであろう、 いかにもそれっぽい名前のディレクトリをみていきます。 トップディレクトリをはじめ、doc news dist(distributionの略)などですね。 そこにあるREADMEの日付は次のようになっています。

Aug 11 1983 ./README
Aug 12 1983 ./news/README
Aug 14 1983 ./dist/README

ただ、ファイルの中を見てもリリース日が明言されていたりはしないのですね。 でも、8月なかばに、これらのファイルを準備していることが分りました。

TUHSでは、当時のバイナリも入手可能なことが多いので、そこも見てみましょう。 もちろん4.2BSDでも入手可能です。 と言うより、 当時のCSRGの開発機のバックアップそのものを掘り返してきて、 それをそのまま寄贈してくれたものに見えますね。

GENERICカーネルをcompileするディレクトリ (現在の/usr/src/sys/arch/vax/compile/GENERICに相当する場所) を見ると、 headerファイルとparams.cの日付もAug 14になっています。

ちなみに、カーネルの修正とrebuildは続いているらしく、 11/3まで数度に渡りrecompileした様子が見てとれます。

そういうわけで、 確信は得られませんが、 8月なかばにリリースし、 随時発送していきました。 ただし、トラブル対応は11月くらいまで続いたようです。 そんなところでしょうか。。。

参考文献

  • 4.2BSD
  • [Fabry and Sequin 1983] R.S.Fabry and C.Sequin, TECHNICAL REPORT
  • [Salus 1994] Peter Salus, “A Quarter Century of UNIX”, (Addison-Wesley Publishing Company, 1994); QUIPU LLC 訳:UNIXの1/4世紀,株式会社アスキー(2000)
  • [藤田 2016] 藤田昭人, “Unix考古学 Truth of the Legend” (KADOKAWA, 2016)
  • [Leffler.et.al. 1989] Samual J. Leffler et.al. “The Design and Implementation of the 4.3Bsd Unix Operating System” (Addison-Wesley Publishing Company, 1989)

あとがき

本当は8月分 (こればっかり;-)