祝!4.2BSDリリース40周年
4.2BSDリリース40周年です!
覚えていますか♪あの(たぶん)暑かった夏を(?)
あの夏、日本では、「ジェダイの復讐」を見て「やっぱりEpisode.4だけでいいよな...」と思ったり、「南極物語」(BGMはヴァンゲリス)でタロとジロに涙してみたり、はたまた角川映画(「時をかける少女」「探偵物語」)が流行していたり、当時の人も、いろいろ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月分 (こればっかり;-)
original site: https://technotes.fml.org/tech/history/worlds-in-mono/
(qiita版も致命的な間違いやTYPOは修正しますがupdatesはoriginalのほうだけです)
Copyright (C) 2023 Ken’ichi Fukamachi, CC BY-NC-SA 4.0