-*- mode: text; mode: auto-fill; fill-column: 54; -*- NetBSD の歴史 締切 1/9 2-3ページ (2コラム * 27文字 * 41行): 164-246行 (+10) part1 History of BSD part2 History of NetBSD part3 How to Install NetBSD/i386,hp300,sparc NetBSD の始まりから4.4BSD Lite ベースに移行するまでの歴史とコンセプト BEGIN NetBSD の歴史 ・NetBSD誕生以前 (386BSD 0.1 +patch 時代) William Jolitz氏によって開発されたフリーのBSD系のOS 386BSD 0.1が配布され、多くの人が使うようになってきてい たが、386BSD 0.1のままでは、かなりのバグ、不具合が残っ ていた。そのためネットワークではさまざまなパッチが乱 立していたが、そのうちこれらのパッチをとりまとめた patchkit が作られるようになった。patchkit は 0.1 に始 まり 0.2, 0.2.1, 0.2.2 と作られてきて、この間にかなり のバグがフィックスされ、また新しい SCSI subsystem など もとりいれられたりしてきた。しかし、皆が待ち望んでいた 386BSD 0.2はなかなか出てこなかった。 ・NetBSDの誕生 (NetBSD 0.8) そんな中、1993年4月、patchkit を作っていたグループの 中で、Chris G. Demetriou氏が中心となって386BSD 0.1に patchkit 0.2.2相当のパッチを当てた状態で配布するように した。それが NetBSD 0.8である。NetBSD 0.8は単に 386BSD 0.1+patchkit ではなく、より安定し、よりよい機能を追加 されたりしていた。 NetBSD では、当初から POSIXに対応することにしていたよ うである。また 386BSD 0.2や4.4BSDが出てきたら、それら の優れた機能はNetBSDに取り込んでいくと宣言していた。ま た移植性も考えており、マルチプラットフォームをサポート できるようにするため、386BSDでは i386依存のcodeが kernelのいろんなところにちっていたのを、機種依存のコー ドと非依存のコードは分離していこうとしていた。 NetBSD 0.8ではNet/2にはあったのに386BSD 0.1ではなくな っていたコマンドなどを復活させ、様々なコマンドなどを最 新バージョンに更新していた。 インストール方法も、386BSD 0.1に比べるとよく作られて おり、かなり簡単にインストールできるようになった。 NetBSD 0.8はpatchkitを追いかけるのにつかれていた人々 にはありがたいものだった。しかし、NetBSD 0.8はそれほど インパクトがあるものでもなく、「386BSD 0.2がそろそろで て来るのではないか?」という雰囲気も残っていたのでまだ 、386BSD 0.1+patchkitのままの人もかなり残っていた。 ・NetBSD 0.9の登場 NetBSD 0.8登場後も、patchkitのほうは、patchkit 0.2.3, 0.2.4と配布されてきた(patchkit 0.2.3の一部はNetBSD 0.8 に既にあてられていた)。386BSD 0.2がなかなか出てこない 中、1993年8月、NetBSDの新しいバージョン、NetBSD 0.9が リリースされた。NetBSD 0.8が、ほとんど 386BSD 0.1+patchkit程度の単に「安定した386BSD」だったのに比べ 、NetBSD 0.9ではNetBSD 0.8のバグをとっただけではなく、 かなり386BSDとは違うものになってきていた。 - kernel の名前が /386bsd から /netbsd になった。 これは既に「386BSDではない」「i386だけのBSDではない」 ということのあらわれであろう。 - 実行形式がかわった。 a.outのマジックナンバーの部分がマルチアーキテクチャサ ポートのためネットワークバイトオーダで表現されるように なった。そして BSDI社のBSD/386のQMAGICバイナリが実行可 能になった。もちろんバックワードコンパチビリティとして 386BSD 0.1のバイナリも実行可能であった。しかし、NetBSD 0.9で作ったバイナリは既に386BSD 0.1では実行できなくな ってしまった。また、dumpするようなプログラム(Emacsとか) のコンパイルの際に386BSDとは異なる対処をしなければなら なくなった。 - kernel内部の変化 loadable kernel moduleがサポートされた。これにより 実行時に動的にkernelのmoduleを追加したりできるようにな った。 filesystemはfast symlinkを使うようになり、pcfsは msdosfsと呼ばれるようになった。またCD-ROMのためのisofs がRockRidge形式もサポートされるようになった。 またマルチプラットフォームをサポートするためにi386依 存のコードは /sys/arch/i386 以下にまとめられるようにな った。また Net/2から hp300(HP9000/300)のコードなども /sys/arch/hp300にとりこまれるようになった。amigaに関し ても作業がはじめられており、またNetBSDをベースに作られ たMacBSDなども作られるようになった。 i386に関しては割り込みまわりやNPXまわりなどが改善され た。またbootも新たにBIOSに使ってbootするプログラムにな った。 - NIS(YP)のサポート NISのサポートがクライアントだけ、しかもpasswdとgroup の一部だけだが行なわれるようになった。これにより既に NISで管理していたsiteなどは管理が楽になったといえるだ ろう。NetBSD 0.9のNISには少しバグがありpatchをあてない と駄目だったが、これはNetBSD-currentですぐ修正されてい た。 - 様々なコマンドが最新バージョンに更新された。 - gcc が 2.4.5 になった。 従来は gcc 1.39 だったが、gcc 2.4.5がついてきただけ でなく全てのプログラムがgcc 2.4.5でコンパイルされてい た。このためパフォーマンスがかなり向上した。 - データベースが db にかわった。 - crypt(3)が libc から libcrypt に分離された。 これは crypt(3)を含まないシステムを作るのを簡単にする ためであった。 ・NetBSD 0.9が出た頃 NetBSD 0.9が出た頃とほぼ同じくらいの時期にpatchkitを 出してきたグループがpatchkit-0.2.5を出すかわりに、 NetBSDと同じように、既にパッチのあたったsystem、 FreeBSD 1.0をリリースした。FreeBSDは最初は本当に386BSD 0.1 + patchkitであったが、その分いろいろ新しいことに手 を出していたNetBSD 0.9よりも安心できるものであった。 FreeBSDは当初は、「そのうちNetBSD 1.0としてNetBSDと FreeBSDを統合する」予定であったようだ。が、いろいろと 改善されているが current としてしか手に入れることので きないNetBSDを横目にFreeBSDはi386に関することに集中し てdevice driverなどのサポートを充実したり、shared libraryをサポートしたバージョンをリリースしたりした。 ・NetBSD-currentの長い時代 (NetBSD 0.9[ABC]〜NetBSD 1.0_BETA) NetBSDは0.9が正式にリリースされた後も、毎晩の開発中の 最新のソースがネットワーク経由でいつでも手に入れられる ようになっていた。SUPを使えばこの更新された最新のソー スを簡単に手に入れることができた。また一週間くらいの間 隔で、tar.gzにまとめられたりもしていたので、それを anonymous ftpでとってくることもできた。これを NetBSD-currentという。 NetBSD-currentの中にもいくつかバージョンがあり、0.9B とか1.0_BETAなどと呼ばれていた。0.9Bと呼ばれる頃にはす でにshared librariesがサポートされるようになっていたり 0.8と0.9の違いより大きいといえるかもしれない。この頃に はすでに386BSDではなくなっていた(#ifdef も__386BSD__で はなく__NetBSD__になった)。そして0.9Bくらいから 1.0_BETAにかけてPPPやmulticastのサポートを始めとするネ ットワーキングの拡張、execve moduleの変更、ttyでclist からring bufferへの変更、SystemVのセマフォやメッセージ キュー、シェアードメモリなどのサポート、POSIX1003.4a Draft7のスレッドのサポート、vnode device(vnconfig)、 lfs(log-structured filesystem), procfs, union fsなどの サポートなどかなりの拡張がなされていた。ufsなども64bit のfilesystemになっていた(このため、lseek(2)などを使う 時はoffsetは必ずoff_tにしておかないといけない)。こうし た拡張とともに4.4BSDに関連する部分に関してはCSRG(BSD開 発グループ)にパッチを送ったりもしていた。さらに i386,hp300,amiga, mac68kだけでなくsun3,sparc,pc532など もソースツリーに入るようになってきた。そして`options COMPAT_SUNOS'や`options COMPAT_SVR4'などによるSunOSや SVR4などのバイナリを実行できるようになってきた。i386に 関してはWINE(Windows Emulator)をサポートするために `options USER_LDT'の追加などが行なわれた。しかし、i386 だけをサポートしていたFreeBSDとは違い、NetBSD/i386では 相変わらずISAbusで16MB以上を扱う場合に必要なbounce bufferのサポートはなされていないし、device driverのサ ポートもFreeBSDやLinuxと比べるとよくないといえる。 NetBSDではそういったサポートよりもバグフィックスおよび 他のプラットフォームのサポートに力を入れているようであ る。 ・USL vs UCBの和解、そして4.4BSD-Liteの登場 さて、NetBSD-currentが開発されている間、USL(Unix SYstem Laboratories, UNIXのライセンス元)とBSDの開発元 であるUCB(University of California, Berkeley)で UNIXの ライセンス問題について訴訟が行なわれていた。結局、これ は次のような合意によって和解にいたった。 ・Net/2および4.4BSDにはUSLのコードが含まれている(ライ センスが必要) ・4.4BSDからUSLのコードを除いて作られた4.4BSD Liteは USLのライセンスを全く必要としない。したがって 4.4BSD Liteは自由に配布してもかまわない (4.4BSD Liteだけでは必要なコードがないためそのままで は動作しない) この結果、以前からNet/2をベースにしていた(386BSDをベー スにして作られた)NetBSDやFreeBSDはNet/2からとってきた コードを使わずに4.4BSD Liteをコードのベースにしていく こととなる。以前から4.4BSDが出ればそれをとりこんでいく と明言していたNetBSDは4.4BSD Liteのコードを使ってNet/2 のコードを消していった。こうしてライセンス的に問題ない ようになったのがNetBSD 1.0である。NetBSD 1.0は最初は 1994年7月くらいにリリースする(リリースしたい)といわれ ていたが、実際にNetBSD 1.0がでるまでは結構時間がかかっ た。NetBSD 1.0が出るまでにNetBSD-currentとしてNetBSD 1.0_BETAというバージョンがあり、NetBSD 1.0のβテストと して使われていた。NetBSD 1.0_BETAからNetBSD 1.0までは ほとんどバグフィックスで目立った拡張は特になかった。 ・そして NetBSD 1.0のリリース 1994年10月、ようやくNetBSD 1.0がリリースされた。 NetBSDもここに至って本当にマルチプラットフォームをサポ ートしたというべきか、i386やamigaなどのバイナリを同時 にリリースしている。i386のインストレーションフロッピィ もcrunchコマンドやvnconfigなどを使うことで/usr/src/ distrib/i386/floppiesでmakeすればできるようになってい る。 ・NetBSDはこれからどうなるのか? NetBSDは元々 Net/2をベースに作られたWilliam Jolitzの 386bsdをベースにたくさんのバグフィックスおよびかなりの 拡張をしていって作られたフリーのBSDオペレーティングシ ステムである。NetBSDをリリースする目的は専門家や趣味で 遊んでいる人が望む時に使うことができるフリーなシステム をソースと共に提供することである。NetBSDの開発の主な作 業は安定性、移植性を高めるためのものである。実際多くの プラットフォームをサポートしようとしており、今のところ NetBSDのプラットフォームとしてはi386(PC/AT互換機), hp300(HP9000/300), amiga(Amiga 68020+MMUか 68030),pmax(DECstation3100,5000 ),mac68k(Macintosh 68020+MMU,68030 MacIIなど), sparc(sun4c, sun4mなど), sun3,vax などがある。この中には単に4.4BSD-Liteからソー スをもってきただけのものもあるようだが。移植性のほかに 他のシステムとのコンパチビリティも重視しているようであ る。例えばBSDI,SunOS,Ultrix, SVR4,HP-UXなどとバイナリ コンパチビリティを持つようになっている(どれとバイナリ コンパチにできるかはプラットフォームによる)。また 4.4BSDとはソースコードレベルでほとんど同じコードを利用 できるようになっている。またPOSIXにもかなり準拠してい るようである(POSIX.1(kernel)には95%程,POSIX.2(user land)には70%程準拠しているらしい。なお、POSIXに準拠し ていないうち最も大きな部分は国際化対応の部分のようだ)。 こういったコンパチビリティによりソフトウェアをNetBSDに 移植するのはかなり容易になるので、今後もこういったコン パチビリティは重視されるであろう。 長い間、言われつづけてきた4.4BSD Liteへの移行も終った 今、これからNetBSDはどうなっていくのかは興味のあるとこ ろだが、とりあえず今後もより多くのプラットフォームをサ ポートしていくつもりのようである(例えばPowerPCやDEC Alphaなど)。そしてシステムの安定性向上、性能向上が行な われるだろう。また、FreeBSDやLinuxに対してかなり遅れを とったi386のサポートもしっかり行なわれることを期待した い。なお、NetBSDの開発はすべてボランティアで行なわれて いる。そのためユーザの協力が不可欠である。バグなどを見 つけたら是非send-prを使ってバグレポートを送るなどの貢 献をしよう。 NetBSDに関しての話題はニュースよりもメイリングリスト で行なわれていることが多い(ただし英語だが)。ソースの更 新情報もメイリングリストで行なわれている。興味のある人 は参加するといいだろう。 END [EOF]