4.3BSD Reno 4.4BSD 1992 Sep. 1993 Apr. Aug. 1993 Dec. 4.4BSD-Lite 1994 JuI. Aug. N 0 0e0. 1995 No 1996 00 気 1998 a 1999 May 1999 Aug. Net/2 FreeBSD 1 .0 NetBSD 0.8 NetBSD 0.9 FreeBSD 1.1.5.1 NetBSD 1 .0 FreeBSD 2.0 386BSD 0.1 386BSD 1 .0 OpenBSD 2.0 図 2 NetBSD 1.1 NetBSD 1 .2 NetBSD 1 .3 NetBSD 1.4 NetBSD 1.4.1 et 日 SD の系統樹 によるリソース管理、 PCMCIA および ISA PnP バス、 Manuel Bouyer 氏によ る SCSI と統合された ATAPI 、 APM 、 fdformat プログラム、 FAT32 サポート、 Linux/FreeBSD の OSS audio 互換機 能のサポート、メニューベースのイン ストーラの導入などが行われた。 また、主に Matthew Green 氏に よって、全コマンドライプラリに対す るセキュリティ問題の抽出と修正が行 われた。 なお 1.3 は、リリースの 4 か月前に事 故で亡くなった、 NetBSD への con- tributer 今田宏司氏に捧げられている。 1.3 に対しては、 1998 年 3 月 9 日の 1.3.1 、 1998 年 5 月 29 日の 1.3.2 、 1998 年 12 月 23 日の 1.3.3 と、合計 3 回の patch リリースが行われた。特に 1.3.2 では、 8G バイト以上の IDE ディスク対応に関 する問題などが修正されている。 NetBSD れ 4 ( 1999 年 5 月 12 日リリース ) 1.4 では、 Chuck Cranor 氏によって 新しい仮想記憶システム UV が実装 された。 UVM では、 SunOS4/SVR4 のアイデアを借りて Mach VM の問題 点を解決し、 zero c 叩 y データ移動を 効率よく実現するため、データ構造を 変更している。また特にページアウト 時のクラスタリングによって、メモリ 不足時の実行速度を大幅に改善してい る。このほかにも、 FreeBSD で行われ た多くの効率改善の取り込みが行われ また、残っていたカーネル部分の Lite -2 統合の完了、 MI コンソールドラ イバ wscons の導入、 coda ファイルシ ステムの導入、 RAID 0 / 1 / 4 / 5 / その他 の機能を持っ RAIDframe の統合、 P001 メモリアロケータの導入、コンパ イラの egcs への移行、 mailwrapper 、 0 32 BSD magazine 1999 NO. 1
のように分割されている。 ・ sys/ ( ただし下記の MD 部を除く ) 機種独立 (machine independent : MI と略す ) なソース ・ s Y s / a r c h / 引 M A C H I N E レ、 sys/arch/$IMACHINE_ARCHl/ 、 s Y s / 1 i b / 1 i b k e r Ⅱ / a r c h / $IMACHINE_ARCHV 機種依存 (machine dependent : MD と略す ) なソース ・ sys/dev/ バス名 / 複数のプラットフォームで利用可能 な、 ISA 、 EISA 、 PCI 、 SCSI 、 ATAPI 、 USB などの標準バス用の デバイスドライバ ・ sys/dev/ic/ バスに依存しない IC のデバイスドラ イバ たとえば、 3COM 3C509 (ISA) 、 3C579 (EISA) 、 3C589 (PCMCIA) 、 3C590 (PCI) は、すべて同一のコアを 利用した Ethernet カードだが、このデ バイスドライバは次のように分割されて おり、 ISA/EISA/PCMCIA/PCI バス を持つプラットフォームでは、 AT 互 換機以外でも利用可能となっている。 ・ ISA バス依存フロントエンド部分 sys/dev/isa/if—ep—isa ・ c ・ EISA バス依存フロントエンド部分 sys/dev/eisa/if—ep—eisa. c ・ PCMCIA バス依存フロントエンド部 分 sys/dev/pcmcia/if-ep-pcmcia ・ c ・バス独立 ( 共用 ) バックエンド部分 sys/dev/ic/e1ink3*. [ch] このようなバス依存部と独立部の分 割、および異なるプラットフォーム間 でのデバイスドライバの共用を可能に している技術要素として、 files ファイ ルを用いて新たなバスを定義できる新 しい config(8) システム (config. new) 、 ISA/EISA/PCI/PCMCIA/CardBus などの各種バスに対して統一的なアク セス手段・リソース管理の枠組みを提 供する bus_space(9) API 、 DMA に関 連するキャッシュー貫性・アドレス変 換・バウンスパッファ管理などを提供 する bus-dma(9) API などがある注 2 。 なお、 bus-dma(9) API の提供して いるようなバウンスパッフアないしア ドレス変換ハードウェア機能は、 ISA バスマスターデバイスなどに限らす、 4G バイト以上のメモリを積んだマシン 上で 32 ビット PCI バスマスターデバイ スを利用する場合等でも必要である。 4G バイト以上のメモリは、 64bit プロ セッサは無論のこと、 32 ビットプロ セッサであるインテルの CPU などでも すでに現実的な存在となっているが、 すべてのデバイスドライバでこの種の 準備の整っているフリー UNIX は、現 時点では NetBSD と OpenBSD のみで あろう。 ・ PCI バス依存フロントエンド部分 sys/dev/pci/if—ep-pci ・ c 互換性 NetBSD の各バージョン間のバイナ BSD の過去・現桑 リ互換性は極めて高い。たとえばⅱ bc の major バージョンは、 1994 年リリー スの NetBSD 1.0 以降、一度も変更さ れていない。これは、実装の改良を犠 牲にすることなく、シンポルの改名テ クニックを利用して実現されている注 3 。 もちろん、システムコールの仕様変更 時には、システムコール番号も常に新 しく割り当てている。 NetBSD では、 NetBSD 1.3 、 Net BSD 1.4 のように、バージョン番号に 小数点を 1 つだけ含むリリースが major リリースである。また、 NetBSD 1.3.3 、 NetBSD 1.4.1 のように バージョン番 号に小数点を 2 つ含むリリースは patch リリースであり、基本的に不具合の修 正のみが行われる。このため、カーネ ルやコマンドの必要な一部分だけを patch リリースで置き換えることも容 易である。 NetBSD は、他の OS のエミュレー ション実行機能にも優れている。 BSD/OS 、 FreeBSD 、 HP-UX 、 SCO OpenServer 、 Linux 、 Compaq Tru64 UNIX 、 SunOS4 、 SVR4 (Solaris) 、 UItrix のバイナリが実行可能である。 また ANSI C 、 POSIX 標準への準 拠、および統一 UN Ⅸ仕様のうち適切 と思われる仕様への準拠のための作業 が、 NetBSD 0.9 の時代から現在に至 るまで、継続的に続けられている。さ らに pkgsrc は SoIaris や Linux 上で利 用するための変更も行われている。 pkgsrc/cross/zoularis は、 NetBSD の ツール群を Solaris 上で利用するための パッケージである。 注 2 これらは、ほば同じものが、 OpenBSD にも取り込まれている。また、 FreeBSD でも CAM 関係のドライバには、 bus_space(9) および bus_dma(9) A 円が導 入されている。ただし、 FreeBSD の bus_dma(9) に関しては、メモリ使用効率向上のため API の変更が行われた結果、 NetBSD/OpenBSD とのソース互換 性が失われている。また残念ながら API の機種独立性も若干低下しているようである。 注 3 libc の major2S—ジョンの変更は、おそらく NetBSD 2.0 のリリースまでは行われないだろうとされている。 1999 No. 1 BSD magazine 29
終バージョン 4.1.4 から導き出されてい る。他の候補には、 4.4.1 、 5.0 があった。 これが 1996 年 9 月 29 日であり、 10 月 8 日に N e t B S D の定義が削除され、 OpenBSD と NetBSD とが別物となっ たことが宣言された。実際には、 2.0 の リリース時点では安全性のために NetBSD ーの定義が存在していた。 この定義は 2.1 をリリースする前に削除 されたため、名実ともに NetBSD から の分離が完成したといえるようになる のは 2.1 であると言ったほうが良いのか もしれない。 20 リリースは S 皿 3 等メンテナンス可 能な人が OpenBSD プロジェクト内部に 存在していないプラットフォームを削り、 最終的に amiga 、 c 、 i 、 mvme68k 、 sparc の 5 つのプラットフォームで 1996 年 10 月 18 日にリリースが行われた。 OpenBSD 2.0 から 2.5 まで OpenBSD 2.0 は唯一 CD-ROM リ リースが存在しない ftp によるリリース であった。 sparc 版インストーラは動作 検証が行われないままリリースされ、 インストーラだけでは普通にインス トールができなかった。残念なことで あるが、インストーラの障害はこの後 2.1 でも発生した。 2.2 以降では、イン ストール可能であることが確認されて から CD - ROM の複製が行われているた め状況は改善されたはすである。 2.0 から 2.1 にかけての動き。 ・新たに alpha 、 hP300 、 mvme88k 、 pmax 、 PowerPC 対応のソースコー ドが統合された。 ・ skey が、 RFC1938 を満たす OTP イ ンターフェイスへと改造された。 ・ sudo 、 ctm が、ソースツリーに取り 入れられた。 ・ POSIX 準拠を目指すため ash の使用 を止め、 pdksh から sh が作成される こととなった。 ・ gzip で圧縮されたカーネルのサポー トが開始される。 ・パスワードの暗号化で M D 5 、 BLOWFISH が使用可能となり、 BLOWFISH が標準暗号化となる。 NetBSD—を削除し、名実ともに NetBSD との分離作業が終了した。 alpha 、 hP300 、 mac68k 、 pmax を 加えた 9 種類が 2.1 ( 1997 年 7 月 2 日 ) としてリリースされた。 ・ AppleTaIk プロトコルへの対応が開 減った。 ズムが採用され攻撃の手がかりが ・ランダムに PID を生成するアルゴリ に統合された。 ツールである mkisofs がソースツリー ・リリース用 CD-ROM イメージ作成 始された。 2.1 と同じく 9 種類が 2.2 ( 1997 年 12 アントが入った。 ・インストールディスクに dhcp クライ 合された。 AFS 、 SSLeay がソースツリーに統 ・ OSS 互換 audio 、 ISC dhcp 、 free- れた。 ( 1998 年 5 月 25 日 ) としてリリースさ PowerPC を加えた 10 種類が 2.3 update 対応が実施された。 ・ FAT32 パーティション対応、 soft gcc2.8 がソースツリーに入った。 ・ⅱ」 -PPP 、 smtpd 、 lynx 、 apache 、 月 4 日 ) としてリリースされた。 BSD の過去・現在・未泰 / 、 ・ fdisk に 8G バイトを超える容量を持 っディスクへの対応が行なわれた。 ・ mail. lcal が二つに分離され、 lockspool のみが setuid プログラムとなった。 arc 、 mvme68k 、 pmax を除いた 7 種類が 2.4 ( 1998 年 12 月 1 日 ) として CD-ROM リリースされた。 ・ skipjack 暗号モジュール、 isakmpd を始めとする VPN 関連ツールがソー スツリーに統合された。 ・学習可能な bridge 、ソフトウェア RAID 、 MIDI デバイスが取り込まれ ・ IPSEC を取り込む過程でカーネル部 分に IPv6 対応が行われた。 2.4 と同じく 7 種類が 2.5 ( 1999 年 5 月 19 日 ) としてリリースされた。 日本での動き 日本国内では、 1996 年 7 月に ftp.jp. openbsd.org が登録された。これは、 4 番目の公式な FTP ミラーサイトであっ た。当時の学術情報ネットワークから 海外への回線接続状況は現在程品質の 良いものではなく、学術情報ネット ワークのそれも端に位置するようなサ イトからフランスに ftp をすると 1 時間 2 バイトという凄まじい記録が出たこと もあれば、台湾に接続していると 2 、 3 時間程で経路情報が乱れて N 。 route to h 。 st が出てくるような状況であった ことを記憶している。 2.0 のリリース直後の 1996 年 11 月に はさらにサイトが一つ増えた。国内第 三の公式 ftp サイトも 1998 年 6 月に登 場した。 AnonymousCVS も 1998 年 11 月末から日本で動作を開始したし、日 本国内のメーリングリストも 1999 年 1 月から存在している。 1999 No. 1 BSD magazine 55
っきではないと USL が公式に宣言する。 最後に、すべての既存の NET / 2 の利用 者が 4.4BSD-Lite の利用へと移行するこ とを強く奨励すること、である。 FreeBSD プロジェクトも 1994 年の 7 月の終わりまでに NET/2 べースの FreeBSD の出荷を停止することを求め られた。ただし、私たちは締め切りま でに一回だけ最後の公開 (FreeBSD 1.1.5 ) をすることにした注 6 。 1.1.5 は公 開期間が短かったため、 WC CDROM から CD が発売されなかった唯一のリ リースとなった。ところで、 FreeBSD 2.0 系がなかなか安定しなかったことも あり、 FreeBSD 1.1.5 を使っているサ イトはかなり後まで残っていたという。 FreeBSD 1.1.5 の安定性を越えるという ことが、 2. x の開発のゴールとして長い 間掲げられていたのはそのためである。 それから FreeBSD プロジェクトは、 オペレーティングシステムとしてはかな り不完全な 4.4BSD-Lite を基に、文字通 り一から作り直す作業をはじめた。 4.4BSD-Lite では、きちんと起動し、動 作するシステムを実際に作り上げるた めに必要となるソースコードのかなりの 部分が訴訟問題のために削除されてし まっていたということと、 4.4BSD の lntel アーキテクチャ対応が元々かなり 不完全であったため、この作業は困難 を極めた。移行作業は結局 1994 年の 11 月までかかり、 1994 年 12 月に FreeBSD 2.0 として公開された。 2.0 には粗削りな ところがまだたくさん残っていたが、 まったく新しいソースツリーから作り上 げたものとしては仕方がなかったといえ よう。なお、 2.0 は NET/2 から 4.4BSD- Lite に移行しただけではなく、 lkm ( loadable kernel module) IP Multicast 、 Adaptec 2742 / 2842 SCSI アダブタのサポートなど、 FreeBSD 独 自の拡張も多く取り入れられている。 また、 Ports Collection のデザインが 一新され、ソースをすべて展開してお く旧来の方法から / usr / ports 以下には 少数の記述ファイル ( Ports スケルトン ) だけを置いておき、ソース自体は必要 に応じて取得・展開する方式に変わっ たことも特筆すべき点である。この変 更以降 Ports Collection は爆発的な成長 を遂げ、本稿執筆時点 ( 1999 年 8 月 ) には約 2 , 600 の ports が登録されている。 また、 package やそのソースアーカイプ である distfile はどちらも IG バイト以上 になり、それぞれに 1 枚の CD をまるま る割り当てても収まりきらなくなって いるのはご存じのとおりである。 FreeBSD-current と FreeBSD-stabIe の 2 本体制化 2.0 の改良版である FreeBSD 2.0.5 は 1995 年の 6 月に公開された。 2.0.5 の特 徴としては 2.0 で未完成だった点が多々 改善されたほか、仮想記憶システムの 改良、 NIS の完全なサポート、そして より使いやすくなったインストールプ ログラムなどがあげられる。 この頃、その後の FreeBSD の開発 リリースに大きな影響を及ばす決定がコ アチームによってなされた。 FreeBSD- current という形で開発が進められる唯 ーのソースツリーからリリースを出すの ではなく、 CVS のプランチ機能を使って、 ソースツリーを FreeBSD-current と FreeBSD-stabIe という二つの大きな流 れに分け、通常のリリースは FreeBSD- stable から出し、新機能のテストは将来 のリリースを見込んだ FreeBSD-current で行うというものである。これにより、 リリースには安定性を求めるユーザーの 期待にこたえながらも、最新の開発を心 おきなく行える場を用意することで開発 者にも魅力的なシステムとすることを目 指したわけである。 この判断に従い、まず最初の FreeBSD- stable (). l-stable) となる RELENG 2 ー 1 0 プランチの分岐後、 FreeBSD 2.1 が 1995 年の 11 月に発表された。さ らに同プランチから FreeBSD 2.1.5 が 1996 年の 8 月に公開された。この出来 が非常に良く、安定度が増したほか、 ccd (concatenated disk driver) によ るストライピング・ミラーリングなど の機能や PCI プリッジのサポートが加 わったこともあって、大規模サイトを 運用しているパワーユーザーの人気が 高かった。当初は 2.1- stable からのリ リースは 2.1.5 で終わりにする予定で あったが、 2.1.5 の評判がよかったこと、 また 2.2 はまだリリースとして発表する には完成度が足りないという判断から RELENG_2_1_0 プランチをもうしばら くリリース用に使うことになり、 19 % 年 12 月に FreeBSD 2.1.6 が、また 1997 年 2 月には 2.1- stable の最後を締めくくるも のとして FreeBSD 217 が公開された注 % 2.1 から 2.2 へ、 ELF 化への準備 FreeBSD 2.2 の開発は、 RELENG 2 ー 1 ー 0 が分岐してからしばらくは Free- こで番号が + 0.0.5 という半端な増え方をしているのは、これが I. 1 の単なるバグフィックスだけではなく新しいリリースであるが、もし次に同じツリー から正式にリリースするとしたら 1.2 となるが、 1.2 と呼ぶには変更点が少なすぎるという判断からである。このように番号を飛ばすことはその後 2.0 → 2.0.5 、 2.1 → 2.1.5 、 2.2.2 → 2.2.5 と何回か行われた。これは開発者からはコアチームがそのリリースをどのように評価しているかという意図がわかると評判 だったが、ユーザーからは逆にわかりにくいという意見が多かった。そのため、 3.1 のリリース時にコアチーム内で議論があり、リリースの名前には 注 6 注 7 7 イ " X. Y. Z " の 3 つの番号ではなく、 " X. Y " の 2 つだけを使うように変更すること、また + 0.0.5 という中途半端な増やし方はやめることが決定された。 このあたりの事情は、図 1 の RELENG ー 2 ー 2 プランチの作成と RELENG ー 2 ー 1 ー 0 からのリリースの時間関係に注目して見るとうかがい知ることができる。 BSD magazine 1999 NO. 1
特集 1 BSD の過去・現在未 BSD-current として新機能の導入が積 極的に行われ、さらに RELENG_2_2 プランチが 3.0-current から 1996 年 11 月に分岐してからはリリースへの準備 が本格的に進められた。大きな変更点 としては gdb -4.16 、 gcc -2.7.2.1 などの サードバーテイソフトウェアのアップ グレードおよび /usr/src/gnu から /usr /src/contrib への移動、以前のものよ りはるかに効率的な ma Ⅱ oc ライプラリ 関数群、 NFSv3 や Linux 互換のサポー トの充実、 ELF サポート、また多数の 新しいドライバなどがあげられる。そ して 1997 年 4 月に最初のリリースが 22.1 として発表された注 8 。 2.2 プランチ からはさらに 1997 年 5 月に 2.2.2 が、 10 月に 2.2.5 がリリースされ、 1998 年に 入っても 3 月に 2.2.6 、 7 月に 2.2.7 と順 調にリリースが重ねられた。そして 2.2 プランチからの最後のリリースである 2.2.8 が 1998 年 12 月に登場し、 2.2 プラ ンチはその役目を終えた。 また、このころ Ports Collection 関連 では多数のマシンを使った並列 package 作成法の開発が進められ、 1998 年 12 月 に /usr/ports/Tools/portbuild 以下に commit された。これにより、以前はか なりの手作業を含めて 2 日がかりで行っ ていた package 作成が 9 台のマシンを使 うことによって 1 日以内で自動的に終わ るようになった。 package は 3. x 用と 4.0 用と両方必要なため、現在は 2 日ごとに 新しい package セットを作り、週に一度 の割合で ftp.FreeBSD.org にミラーす るようになっている。 2.2 から 3.0 へ 386BSD/FreeBSD 4BSD 4.3BSD NET/2 386BSD 0.0 386BSD 0.1 ↓ FreeBSD 1 .0 FreeBSD 1 .1 FreeBSD 1.1.5 [. 1 ] 4.4BSD 1993 / 12 1994 / 05 1994 / 06 4.4BSD Lite FreeBSD 2.0 FreeBSD 2.0 , 5 1994 / 11 1995 / 06 <RELENG 2 1 0 > 1995 / 07 1995 / 11 1996 / 06 <HEAD> FreeBSD 2.1 FreeBSD 2.1.5 <RELENG 2 2 > 1996 / 11 1996 / 12 1997 / 02 199 刀 04 1997 / 05 199 刀 10 1998 / 03 1998 / 07 FreeBSD 2.1.6 い ] FreeBSD 2.1.7 い ] FreeBSD 2.2 [. 1 ] FreeBSD 2.2.2 FreeBSD 2.2.5 FreeBSD 2.26 FreeBSD 2.27 4.4BSD Lite2 FreeBSD 3.0 1998 / 10 1998 / 12 FreeBSD 2.2.8 <RELENG 3 > FreeBSD 3.1 FreeBSD 3.2 FreeBSD 3.3 ( 予定 ) FreeBSD 3.4 ( 予定 ) FreeBSD 4.0 ( 予定 ) 1999 / 01 1999 / 02 1999 / 05 1999 / 09 1999 / 12 2000 / 03 ー、を丁「 eeBSD の系統樹 図 1 に FreeBSD および 4BSD の関連部分の系統樹を示す。日付は FreeBSD のリリースおよびブランチ分離の時期であ る。 386BSD や 4. xBSD 部分との時間関係については「 BSD 系 OS の歴史と系譜」の記事をご覧いただきたい。 FreeBSD の部分では左端のブランチが常に CVS でいうところの HEAD ( いわゆる FreeBSD-current) であり、それ以 外のブランチとの分岐点は一で表す。ブランチタグはく > 内に示した。矢印はソースコード上の遺伝関係を、 「 FreeBSD1.1.5 と FreeBSD2.0 の間の」点線はここで一度ソースツリーがとぎれることを示している。 F 「 eeBSD のリリース名に " [. 1 ] " とついているのは、リリース発表後にすぐバグフィックス版と入れ替えられたことを表 す。基本的には " [. 1 ] " なしのものが ( CD の表紙や FTP サイトのディレクトリ名などで使われている ) 通称、 " [. 1 ] " 付 3. O-current は前述のように 1996 年 きのものが " uname ィ " が返す正式名称だが、 2.2.1 だけは例外で " 2.2.1 " が CD や FTP サイトなどでも使われている。 注 8 これは当初 2.2 として公開されたが、問題点が多数見つかり一週間後に急遽 2.2.1 として再公開されたものである。バグフィックス版としては本来 " 2.2.0.1 ” とでも呼ぶべきものであるが、 2.2 という名前のものがしばらく流通してしまったため、新しいリリースであるような印象を受ける 2.2.1 という名前が使わ れている。 15 1999 No. 1 BSD magazine
再起動後すぐに PA03 が使えるように ロッピーディスクも公開された。それ 最新版の入手法 まで PC カードを使用したインストール なった。 は極一部のネットワークカードでしか そして世界へ できなかったが、これで PC カードを利 最新版の入手方法だが、 PA03 のリ 用したインストールも可能になった。 リース版は以下の URL から ftp で入手 この後、各種改良、機能拡張が進 残念なことに、これまで PAO は海外 することができる。 PA03 リリース版 み、メーカーからのドライバの提供注 3 ではあまり日の目をあびない存在であっ は、 1999 年 8 月 9 日にリリースされた を受けるなどして、現在では 2.2.8- た。悪くいえば亜流の、たんなるパッ ものが PA03-19990809. tar. gz といった STABLE に対応した PAO がリリース チ群にすぎない存在であった。しかし、 リリースされた日付ととも ぐあいに されている。 2.2.8-STABLE を対象と に PA03-1999xxxx. tar. gz という名前 これは、決して PAO が FreeBSD の流 した PAO は、現在新規の機能拡張な 儀にそぐわなかったからではない。ア で置かれている。 どは積極的には行われない、メンテナ ピールが足りなかった注 4 のである。 ンスのみの状態である。これは本家に しかし、 PAO を必要とする人力移かっ ・ PA03 リリース版の入手先 おいても RELENG_2 2 プランチ ( 2.2- たのも事実で、 19 的年 6 月にカリフォル ftp://daemon.jp.freebsd.org/ pub/FreeBSD-jp/PAO/ STABLE 系列 ) がメンテナンスしか行 ニアで行われた USENIX における議論を われていないのと同様である。 きっかけに、 PA03 のソースが、本家の リリース版は、 PA03 の開発の過程 CVS レポジトリに RELENG_3_2 プラン PA03 で安定していると思われるものがリ チから RELENG_3_2_PAO プランチと リースされるが、リリース後に新しい してコミットされた。 また、 RELENG_3 プランチ ( 3. x - これは、たいへん意味のあることで 機能が追加され、それを試してみたい STABLE 系列 ) に対する PAO の開発 ある。 PAO のソースがより多くの人の と思うこともあるだろう。そういった ももちろん行われている。これは 目に止まるようになるし、また、 PAO ときは、スナップショット版を用いる PA03 と呼ばれている。以下では、特 が認められたという意味でもある。 と良い。スナップショット版は以下の に 3. x-STABLE 対応の PAO に限った FreeBSD-current へのマージのおおき URL に、 PA03-freebsd3x-xxxxxx- 場合には PA03 と、また、対応バー な足掛かりにもなるものである。 snap. tar. gz といった名前で定期的に作 こうして、 PAO は多くのノート PC ジョンによらない場合には PAO と記す 成され、置かれている。 freebsd3x の ことにする。 上で動き、多くの PC カードをサポート 部分は対応する FreeBSD のバージョン PA03 の開発は、 1998 年秋ごろに開 し、そしてさらなる開発が進められて を、その後ろの xxxxxx の部分には作 始された。 newconfig の不採択などの 成された日付が入る。 いるのである。 影響もあり、 PA03 の開発は難航した が、いくつものスナップショットや ・ PA03 スナップショット版の入手先 べータリリースが繰り返され、 1999 年 ftp://daemon ・ jp.freebsd.org/ pub/FreeBSD-jp/PAO/snap/ 5 月 18 日、 3. I-RELEASE に対する PAO が正式にリリースされた。また、 スナップショットも、定期的に作成 PA03 のべータリリース中に、 PA03 インストールフロッピーディスクも公 3.2-RELEASE 対応の PA03 、 その されているものなので、ある新機能が 最新版を紹介しよう。 開された。このインストールフロッ 追加されてからスナップショットが出 ピーディスクにも大きな変更が加えら るまでに時間がかかることもある。ス れ、本家と同じように 2 枚組になり、 ナップショットまでも待てない、 PA03 注 3 株式会社ワークピットから、 NinjaSCSI -3 のドライバを提供していただいた。 注 4 有用性をアピールしても一蹴する一部の人がいるというのも事実だったが・・・ 2 イ BSD magazine 1999 No. 1
11 月に 2.2-stabIe と分岐した後、 SMP ( 対称的マルチプロセッサ ) 対応、 AIpha アーキテクチャのサポート、 CAM (Common Access Method) に 対応して書き直された SCSI サプシステ ムなどの新機能が次々と盛り込まれ、 perl がバージョン 5 になり、さらに全シ ステムが ELF 化され、 4.4BSD-Lite2 の 変更点がマージされるなど大きく変更 後、 FreeBSD 3.0 として 1998 年 10 月 上旬に発表された。これはあくまでも 試験的リリースであり、新しいものを 一日も早く試してみたいという先進的 なユーザー層の声にこたえたもので、 一般ユーザーには適さないという異例 の警告付きのものとなった注 9 。 1999 年 1 月 20 日には、 FreeBSD の 開発ツリーカ舸び 4.0-current (HEAD) と 3. x-stable (RELENG-3) に分岐し た注 10 。 3. x-stable からは安定性を飛躍 的に高めた 3.1 が一般ユーザーにも勧め られるリリースとして 1999 年 2 月 15 日 に発表された。 さらに、 DHCP クライアントや TCP Wrappers などを標準で装備した 3.2 が 1999 年 5 月 15 日に発表された。この 32 は通常の FTP と WaInut Creek 社の 4 枚組の CD の他、 "USENIX Special" と して 2 枚組の CD が 1999 年 6 月に米国力 リフォルニア州モントレーで行われた USENIX Annual TechnicaI Con- ference の参加者全員に NetBSD 、 Open- BSD 、 Debian GNU/Linux の CD とと もに配布されたことも記憶に新しい。 このように日々開発が進む FreeBSD であるが、リリース以外にも一応イン ストールできる形のものが「スナップ ショット」という名前で公開されてい る。 4.0- current のスナップショットは ftp //current.FreeBSD.org/pub/ FreeBSD/snaps/ から、また 3.2-stabIe のものは ftp://releng3.FreeBSD.org/ pub/FreeBSD/snaps/ から、常に最新 のものが手に入るようになっている注 11 。 今響廴 FreeBSD ハンドブック 12 月の 3.4 をもって終了し、その後は 3. x プランチからのリリースは 1999 年 サポートが充実している。 ( 0.0.0.2 だけであるが ) 上がり、 Alpha ている。また、 gcc のバージョンが しようと現在精力的に活動が進められ よるポータブル PC のサポートをマージ ハードウェアへの対応のほか、 PAO に のバグフィックスやお決まりの新しい されているであろう ) 。 3.3 には 32 以降 手元に届くころには、 3.3 がすでに発表 が進められている ( この本が皆さんの に予定されている 3.3 のリリースの準備 本稿執筆時点では、 1999 年 9 月中旬 ソースツリーでのバグフィックスだけ のメンテナンスになる予定である。も ちろん、スナップショットはしばらく の間は今まで通り公開される。 さらに、さまざまな長期プロジェク トが 4.0-current プランチで進められて いる。昔から頭痛の種になっていた NFS のバグへの試験的なフィックス、 メモリ 4G バイトなどの巨大なマシンへ の対応、ナノ秒単位で細かい制御がで きるタイマの導入など、野心的な変更 点がいろいろ取り入れられている。標 準ツール関係では、システムコンパイ ラが egcs -1.1.2 になり、さらに近日中に egcs べースの gcc -2.95 にアップグレー ドされることになっているほか、 ncurses が /usr/src/contrib に加わっ ている。また、インストーラと package 管理システムに大幅な変更が加えられ、 システムを部品の集まりとして個別に インストールしたり、 package のアッ プグレードのサポートなどが充実する と期待されている。 2000 年初頭には 4.0 プランチからの 最初のリリース、 4.0 が発表される。そ して 4.0 プランチはさらに 4.0 と 5.0 に分 岐し、 4.0 が新しい -stable に、 5.0 が新 しい - current になることになっている。 http : / / jp. FreeBSD. org/www.FreeBSD.org/j a/handbook/ BSD 系統樹 ftp : //ftp.jp.FreeBSD.org/pub/FreeBSD/branches/ —current/src/share/misc/bsd-family—tree FreeBSD リリースノート http : //www.jp.FreeBSD.org/www.FreeBSD.org/ja/releases/ 注 9 なお、 3.0 と 2.2. x のメンテナンスが同時進行的に行われていたため、 3.0 のほうが 2.2.8 より先にリリースされていることに注意。これは安定性を求める 2.2. x と新機能をふんだんに盛り込んだ 3.0 とではユーザーの層が違うものと判断されたためである。わかりにくいという声も聞かれたが、これがかなり話 題になったことにより、重要なマシンに 3.0 をインストールしたりする間違いが結果的に減らせたのではないかと思っている。 注 10 2.2.5 のリリース後は - stable のプランチ名はそのプランチからの一番最近のリリースの番号を使うことになった。そのため、たとえば RELENG ー 3 はその 注 11 こではこれらを総称して” 3. x-stable ”と呼ぶ。 時期によって 3.0-stable 、 3. l-stable などに分けられる。 実際に行ってみた方はご存じのとおり、この 2 台のマシンは両方のスナップショットを持っている。というようなことはどうでもいいのだが、 2 台あると いうことを覚えておくとどちらかが落ちているときにもう 1 台から取ってくることができたりして便利かもしれない。 BSD magazine 1999 NO. 1
共同開発という姿勢を明確にするため だった。実際に、 386BSD 0.1 および patchkit-O. 2.2 べースで始まったプロ ジェクト当初から、 cvs を利用した共 同作業環境で開発されている。また ネットワークによる開発を促進するた め、 6 月には SUP による -current の配 付も始まっている。 NetBSD 0.9 ( 1993 年 8 月 23 日リリース ) 0.9 では、 patchkit-O. 2.3 べースとな り、 Terry Lambert 氏による LKM (LoadabIe KerneI ModuIe) も導入さ れた。リリースはまだ i386 port のみで あったが、リポジトリにはこの時期ま でに amiga 、 hP300 、 sun3 が入ってい る。 さらに 10 月初頭には、 GNATS によ るバグデータベース注 6 の運用も始まっ た。現在まで続く BSD 系フリー UNIX の開発体制は、この頃の NetBSD の体 制が原型となっているようである。 FreeBSD のメンバーも、この頃までは NetBSD の作業マシン上にアカウント を持っていたが、この年の 11 月に NetBSD と FreeBSD は袂を分かっこと となった。 NetBSD れ 0 ( 1994 年 11 月 8 日リリース ) 1.0 では、 4.4BSD-Lite べースに移行 し、これによって off ー t の 64 ビット化、 uid—t/gid_t の 32ビット化、 ccd 、 v Ⅱ ode ディスクデバイスの導入などが 行われている。また、 amiga 、 i386 、 mac68k 、 PC532 、 sparc の同時リリー ス、 LBL 配付の IP マルチキャストの統 合、 System V 互換 IPC の実現、そし て共有ライプラリの実現など、数多く 注 6 http://www.netbsd.org/Misc/send-pr.html の意欲的な変更がなされた。 ただし、 i386 用フリー UNIX としての シェアは、むしろ以前より減少していた。 これは、 ISA バウンスパッファ機能を欠 いていたこと、 ( 開発自体は NetBSD プ ロジェクトの Paul Kranenburg 氏に よって行われたにも関わらす ) 共有ラ イプラリ機能を含んだバイナリリリー スが、 FreeBSD に比べて半年以上遅 れたことなどが原因としてあげられる。 NetBSD 1 .1 ( 1995 年 11 月 27 日リリース ) ffs の clean bit サポート、 ccd の動的 構成変更、他の OS のエミュレーショ ンのための構造変更などが行われてい る。 i386 port に関しては、 Charles M. Hannum 氏による multi-sector PIO 、 DMA 、 LBA といった、 Enhanced IDE 機能のサポート、 config. new 化などが 行われた。 NetBSD 12 ( 1996 年 10 月 4 日リリース ) 1.2 では、 Rick MackIem 氏による NFSv3 サポートが 4.4BSD-Lite2 からマー ジされた。また、 FreeBSD で浅見賢氏 らによって行われた ccd の mirroring サ ポートも逆輸入された。特筆すべき点と して、デバイスドライバのバス依存部と 独立部の分離、 ISA/EISA/PCI バスの MI 化、 bus-space(9) API の元となっ た bus_mem/bus-io API の導入など、 デバイスドライバの MI 化に向けた大き な動きが始まったことがある。これは、 alpha port の Chris G. Demetriou 氏に 負う点が大きい。 1.2 ではまだ、 alpha port は完全統合に至らす、スナップ ショットの形でリリースされていたが、 TCP/IP や NFS の 64 ビットクリーン化 特集 1 BSD の過去・現在未 など、主要な点の統合は、ほば完了し つつあった。 i 6 port に関しては、 VFAT (Win95 long filename) 対応と、 John Kohl 氏ら による仮想 86 モードサポートが大きな 変更点である。なお ISA バウンスパッ ファ機能、 ATAPI CD-ROM 、 PCMCIA をサポートする非公式パッチは、すでに 存在していたが、それぞれ、 bus_dma(9) API の開発、 SCSI との統合、さらなる 改善が必要だとして、公式リリースに は含まれなかった。 1997 年 5 月 20 日には、初の patch リ リースである 1.2.1 がリリースされてい る。 NetBSD れ 3 ( 1998 年 1 月 4 日リリース ) 1.3 では長年の懸案だった問題の多く が解決し、工ポックメイキング的リ リースとなった。 4.4BSD-Lite-2 のユー ザーレベルのマージの完了、全 port の config. new への移行、 bus—space(9) お よび bus—dma(9) API の一応の完成、 swap の動的追加、 ext2fs 、 libwrap ラ イプラリの統合、 inetd の libwrap 対 応、 BSD/OS で David Borman 氏に よって行われた TCP SYN Ⅱ 00d 攻撃対 策のマージ、同じく BSD / OS に倣った ifconfig の media/mediaopt オプショ ン、 Frank van der Linden 氏による webnfs サポート、 netatalk の統合、 ypserver の追加、 ISC dhcp 、 xntpd の統合、 ftp および ftpd の大幅な改良、 /etc/ttyaction 、 SunOS 互換の audio インターフェイスなど、多くの改良が 施された。 i 咫 6 に関する点でも、 Jason Thorpe 氏 による bus-dma(9) 実装にともなう ISA?S ウンスノヾッフア、 1999 No. 1 extent map manager BSD magazine 37
WeIcome Dæmon News ターネットの再販コミュニティの BSDmall * 10 が設立され KDE の進捗状況 た。こ 0 サイトは 1999 年 8 月 1 日から運営カ : 開始される。 KDE チーム * 16 が絶えす行っている研究開発の中には、 マーケティングを主とし、定期的に各種製ロロの特別プロ 広く受け入れてもらうための重要なステップが含まれてお モーションを行う予定だ。 り、 Werner Trobin が KOffice 用に OLE ストリームデ コーダをインプリメントした。これは Microsoft Office ド * IO http://www.bsdmall.com/ キュメントのデコードに向けての大きな前進で、現在、 Microsoft Office のインポートフィルタに携わっている開 評価用 BSD 曰 .0.1 がリリース 発者が多いに利用できるものだ。自分たちの書いたドキュ メントが維持でき、他の Microsoft Office ユーザーと交換 カリフォルニア大学バークレー校で元々開発された 可能であれば一一一バージョン間で Microsot でさえも ( 故 BSD / OS の商用版販売会社である Berkeley Software Design, lnc 社 (BSDI) * 11 は、同社の lnternet Super 意に ? ) 時間がかかってしまう 、ユーザーに別のプ ラットフォームでも納得させる作業がもっと簡単になる。 Server をテストしたい人のために、 60 日間試用できる評 価用 CD - ROM * 12 の配布を開始した。ただしダウンロード * 16 http: 〃 www.kde.org/news_dyn.html はできないため、 CD - ROM を入手するには、同社の Web サイトで登録する必要がある。 Netscape プラウザの信頼度低下 ? * 11 http //www.bsdi.com/ 『 ComputerWorId 』 * 17 によると、 Netscape が信頼で * 12 http //www.bsdi.com/products/evalcd/ きないユーザーが増えているようだ。企業ユーザーは XFree86 3.3.4 および p 「 e4.0 がリリース Microsoft lnternet ExpIorer に対して Windows プラット 1999 年 1 月の時点で XFree86 * 13 の最新版は 3.3.3.1 だっ フォーム上でより密接な統合化を与えてくれるものとの偏 たが、計画通りに 3.3.4 のソースがリリースされた。このリ 見を強くしている。 Netscape の Communicator プラウザ リースにはいくつか新しいハードウェアのサポートとバグ の次期リリースに関する同社の態度も不明療なため、この 状況を改善するには役立たなかった。これは、いま現在も フィックスが含まれている。新たにサポートされたハード ウェアには、 lntel i740 (Precision Insight/Red Hat か Netscape が最も普及しているクロスプラットフォームの ら ) 、 SiS 530 と 620 、 3Dfx V00d00 Banshee と V00d00 3 、 Web プラウザであることへの不安や懐疑心である。 Trident Blade3D 、 S3 Tri03D が含まれている。現時点で * 17 http://www.com/uterworld.com/home/print.nsf/idgnet/990712B46A はバイナリ版はリリースされていないので、バイナリ版を 入手したい人は数週間以内にリリースされる予定の 3.3.5 Active Server Pages (ASP) に Java がインプリメント を待っことになる。このバージョンには、 3.3.4 の時点で報 告されていなかったその後の変更点もいくっか組み込まれ Halcyon Software 社 * 18 は、 ASP を実質的にどんなプラッ る予定だ。 トフォームにも組み込める同社の新しい lnstant ASP*19 を リリースした。サポートプラットフォームの一覧 * 20 に さらに、今度の 4.0 を試してみたい人に 3.9.15 のスナップ ショット * 14 が配布されている。このバージョンでは *BSD は挙げられていないが、 Java で記述されているため、 XFree のコードが完全に書き直されており、 TrueType それほど苦労しなくても BSD でも動作するだろう。これま フォント (TTF) や 3D のサポート、パフォーマンスの改 で ASP はおもに Microsoft 社の lnternet lnformation 善といった新しい機能もいくっか追加されている。 Server の「商標」のように知られていたが、同等もしく 今後の開発に興味がある人に対して次のリリース計画 * 15 はそれ以上の機能を広範囲のプラットフォームに提供でき が公表されている。 る lnstant ASP によって、この勢力も大きく様変わりする OpenBSD は、すでに Xfree86 3.3.4 を自分たちの X11 ツ だろう。 ASP が広まるにしたがって、これまでにも UNIX リーに組み込んでいる。 システムへのポーティングがいくつも試みられてきたが、 この lnstant ASP は非常に多くのプラットフォームに及ぶ http //www.xfree.org// * 13 最初の統一化されたフレームワークである。 http.//www.xfree.org/snapshots/ * 14 http.//www.xfree.org/releaseplans.html * 15 BSD magazine 1999 NO, 1
注 5 、 ftp 、 cvs および cvsweb 、 rsync ・ ISA/ISA PnP/EISA/PCI/PCMCIA/ SUP でアクセスが可能になった。ただ CardBus から共用可能な、バス独立 し、 cvs リポジトリ全体を ftp mirror バックエンドドライバ群 あるいは SUP で定期的に取得すると、 ftp サーバーのディレクトリは、図 1 ・ FreeBSD newconfig プロジェクトの のような構成になっている。 リリース時などの cvs タグの付与の際 作業べースとしても利用された、優 に、全ファイルの再取得が起きてしま NetBSD-current と、 NetBSD- れた PCMCIA バスおよび ISA PnP うので、リポジトリに関しては rsync release は、それぞれ SUP プロトコルの サポート を使って取得するのがよい。 current ”および "release" コレクショ ・ CardBus 対応パッチの存在 ンを利用して取得した方が効率がよい。 ・バス独立化された IDE コントローラ 等第口を なお、 -current のバージョン名の命名 サポート、および SCSI と統合された ATAPI サポート ・各ネットワークドライバから共用で 異なるので注意されたい注 4 。 きるように分離された MII レイヤー FreeBSD や OpenBSD とは異なり、 NetBSD は BSD Net / 2 時代から継続し 現在の NetBSD/i386 の魅力の一つ また、カーネルのソースも、構造が て同一の cvs リポジトリを利用してきた。 は、整備されたデバイスドライバの構 整理されているので比較的読みやすい。 造にある。次のような点で、新しいデ このため、ライセンスの関係上、最近ま 商用アプリケーションの充実度では、 で cvs リポジトリの公開はできなかった。 バイスをサポートする際には、最も作 ユーザーの多い Linux や FreeBSD には しかし、問題のある版を削除する作業の 業の容易なプラットフォームである。 かなうべくもないが、バイナリエミュ 結果、 1999 年 7 月から、 anonymous レーション機能によって、その多くを 動作させることができるので、実質的 な問題は少ない。 i386 以外の port については、後の ページを参照されたい。 配布内容 i386 po 社の特徴 NetBSD/ NetBSD—バージョン / 各公式リリース版配付内容 ・このリリースでの変更点 CHANGES ・配布に間に合わなかった重要な覚え書き LAST_MINUTE ・・ po ごとの配付 ${MACHINE}/ 80 Ⅱて ce / ・ソース patches/ ・・リリース内容に対する重要な修正 ・・ po ごとのバイナリスナップショットやパッチ等 arch/${MACHINE}/ NetBSD—current/ ・開発中の最新ソース NetBSD—reIease/ ・・・リリースプランチの最新ソース packages/ NetBSD 0.8 ( 1993 年 4 月 19 日リリース ) NetBSD プロジェクトの開始のきっ かけの一つは、 386BSD patchkit グ ループが、そのバイナリリリースに 386BSD という名前を使えなかったこ とにある。「 Net 」という名称を選んだ 理由は、特定の個人による開発ではな く、ネットワークコミュニティによる distfiles/ バージョン /${MACHINE_ARCH}/ ・ package バイナリ ・メーリングリストのアーカイブ” mailing-lists/ misc/ ・・その他 ・・ security advisory アーカイブ ☆☆ http:″mail-index.netbsd.0「g でも公開されている。 図 サ / ←のア ド構成 注 4 http://www.netbsd.org/ReIeases/reIease-map.html#graph 参照 注 5 http://www.加.netbsd.org/ja/JP/sites.htmI#ANONCVS 参照 30 BSD magazine 1999 No. 1 security/