色づかないWorld Wide Webの昨日から Ep.003「1983/08 4.2BSDリリース」

## 祝！4.2BSDリリース40周年


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

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

あの夏、日本では、「ジェダイの復讐」を見て「やっぱりEpisode.4だけでいいよな...」と思ったり、「南極物語」(BGMはヴァンゲリス)でタロとジロに涙してみたり、はたまた角川映画(「時をかける少女」「探偵物語」)が流行していたり、当時の人も、いろいろ[TARI TARI](http://taritari.jp/)していたに違いありません



## 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）](https://www.tuhs.org/)を掘り返します。

まず、リリースに際して最終確認するであろう、いかにもそれっぽい名前のディレクトリをみていきます。トップディレクトリをはじめ、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