祝!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/IPとFFSです。 非公式には、 もっと前のマイナーバージョンから入っていますが、 利用者が限定されていたため、 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
- https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.2BSD
- UNIX-HeritageのDistributions/UCB/4.2BSD/以下にバイナリもあります
- [Fabry and Sequin 1983] R.S.Fabry and C.Sequin, TECHNICAL REPORT
- 契約番号 N00039-82-C-0235
- 契約期間 1981/11/15 - 1983/09/30
- https://apps.dtic.mil/sti/pdfs/ADA142177.pdf
- [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月分 (こればっかり;-)