2.1. Unix や Linux、オープンソースもしくは フリーソフトウェアについて

2.1.1. Unix

1969 から 1970 年にかけて、Kenneth Thompson 氏と Dennis Ritchie 氏らが AT&T ベル研究所において、ほとんど使われていない PDP-7 上で、ちょっとした オペレーティングシステムを開発しはじめました。 そのオペレーティングシステムはまもなく Unix という洗礼名を授かりました。 先に誕生した MULTICS と呼ばれたオペレーティングシステムをもじって 付けられました。 1972 から 1973 年にかけて、C 言語でシステムを書き換え、これによって 思いがけない歴史を歩むことになります。つまりこの決断によって Unix は オリジナルのハードウェアから独立し、さらに生き長らえる最初の オペレーティングシステムとなりました。 Unix には他にも新機軸の機能が加わりました。これはベル研究所とアカデミック なコミュニティとの相乗効果のおかげでした。 1979 年に「seventh edition」 (V7)と呼ばれるバージョンの Unix がリリース され、現存している Unix システムすべての始祖が誕生しました。

この時点から Unix はいささか混迷期に入り込みます。 アカデミックな世界では、バークレイ校がリーダーとなり Berkeley Software Distribution (BSD)と言われる系列を開発しました。一方 AT&T は Unix を 「System III」という名で開発し続け、それが後に「System V」となりました。 1980 年の後半から 1990 年の前半にかけて、この 2 つのメジャーな系列間で 「戦争」が勃発しました。 その後何年もそれぞれの系列は、相手の重要な機能の多くを取り入れあいました。 商用である System V が「標準化戦争」に打ち勝ち(そのインタフェースのほとんど が公式の標準になりました)、ハードウェアベンダーの大部分が AT&T の System V に移行しました。 しかし、System V は BSD の革新的な技術をたくさん組み込んでいて、結局は 2 つの 支流を 1 つに統合したシステムとなりました。 BSD 派は生き長らえ、研究分野や PC ハードウェア用、専用サーバ(たとえば Web サイトは BSD の流れを汲むシステムを使っている場合が多い)として広く利用される ようになりました。

こうして seventh edition を起源とする多彩なバージョンの Unix が存在する結果 になりました。 Unix の大部分のバージョンは、ハードウェアベンダーが所有し、それぞれで メンテナンスをしています。たとえば Sun の Solaris は System V 系列です。 BSD 系列の Unix の内 3 つのバージョンは、オープンソースになりました。 FreeBSD(PC タイプのハードウェアに簡単にインストールできることを目指す)や NetBSD(各種 CPU アーキテクチャ上で動作することを目指す)、NetBSD の系列になる OpenBSD(セキュリティに重点を置く)がそれに当たります。 Unix の歩みについてさらに詳細な情報は、 http://www.datametrics.com/tech/unix/uxhistry/brf-hist.htmhttp://perso.wanadoo.fr/levenez/unix にあります。 BSD の歩みについてのさらに詳しい情報は、 ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree にあります。

少し前になりますが、短いのですが興味深い文書に John Kirch's paper ``Microsoft Windows NT Server 4.0 versus UNIX'' があります。これは Unix ライクなシステムを使うことについて、論争を引き 起こしました。【訳註:日本語訳は、Microsoft Windows NT Server 4.0 と UNIX との比較にあります】

2.1.2. Free Software Foundation

1984 年に Richard Stallman 氏の Free Software Foundation(FSF)はフリーな Unix オペレーティングシステムを作り上げるために GNU プロジェクトを立ち上げ ました。 Stallman 氏によればフリーとは自由に利用ができ、読むことができ、修正も可能で、 再配布もできることを意味します。 FSF は膨大な数の役に立つ OS の構成要素を開発しました。その中には C コンパイラ (gcc)や素晴らしいテキスト・エディタ(emacs)他多数の基本的なツール類があります。 しかし、1990 年に FSF はオペレーティングシステムのカーネル開発で問題に ぶち当たりました[FSF 1998]。それはカーネルなしには残りのソフトウェアが動作 しないという問題です。

2.1.3. Linux

1991 年に Linus Torvalds 氏はオペレーティングシステムのカーネルを開発し はじめ、それに「Linux」という名前をつけました[Torvalds 1999]。 このカーネルには FSF の成果物とその他の部分(BSD からいくつかと MIT の X Window System)から構成され、自由に修正可能でかつ実践的なオペレーティング システムとなりました。 この文書はカーネル自身を指す場合に「Linux カーネル」とし、全体を組み合わせた ものを「Linux」とします。 よく使う「GNU/Linux」という言葉は、この組み合わせを表す言葉と同じ意味で用いる 場合が大半です。

Linux コミュニティでは、さまざまな組織がそれぞれ役に立つツールを組み合わせて います。 それぞれの組み合わせは、「ディストリビューション」と呼ばれ、ディストリ ビューションを開発する組織を「ディストリビュータ」と呼んでいます。 よく知られたディストリビューションには、Red Hat や Mandrake、SuSE、Caldera、 Corel、Debian があります。 ディストリビューション間に違いはありますが、同じコアを使ってディストリ ビューションを構築しています。コアとは Linux カーネルと GNU glibc ライブラリ を指します。 両ソフトウェアとも「copyleft」スタイルのライセンスになっていて、誰もが このコア部分の変更を利用できなければいけないことになっています。Linux ディストリビューション間に存在するこの強制力は、BSD と AT&T から派生 した Unix システムの間には存在していません。 この文書では特定の Linux ディストリビューションをターゲットにはしません。 Linux について論ずる時には、前提として Linux カーネルのバージョン 2.2 以上 で、C ライブラリが バージョン 2.1 以上とします。現状のメジャーな Linux ディストリビューションはすべてこの前提を満たしています。

2.1.4. オープンソースとフリーソフトウェア

ソフトウェアを自由に共有することに対する関心が高まるにつれて、 それを定義し、説明することが必要不可欠になってきました。 「オープンソース・ソフトウェア」という広く利用されている用語は[OSI 1999] でさらに詳しく定義してあります。 Eric Raymond[1997, 1998]は独創的な論文で、オープンソース・ソフトウェア におけるさまざまな開発プロセスについて説明しています。 もう 1 つ広く使われている用語に「フリーソフトウェア」があり、ここで言う 「フリー」とは「権利としての自由」を意味します。この例としてよく出されるのは 「言論の自由」であって「ただ酒」ではない、です。 【訳註:free には、「自由」と「無料」という 2 つの意味があります】。 どちらの用語も完璧ではありません。 実行形式を無償で配布できたとしても、ソースコードを見られなかったり、修正 できなかったり、再配布できなかったりしたものは「フリーソフトウェア」とは 認めないのが通例です。 逆に「オープンソース」という用語はソースコードは見られるが、利用や修正、 再配布に制限があるソフトウェアを意味する(非難する)場合に使われることが あります。さらに詳しい定義については Open Source Definition を見てください。 この言葉を使う動機に違いがでる場合があります。 「フリーソフトウェア」という言葉が好きな人は、「権利としての自由」が 必要であることを強調することを好みます。一方で、他の動機(たとえば信頼性が 高いこと)を持っていたり、それ程強硬に主張したいわけではなかったりする人が 使っている場合もあります。 フリーソフトウェアについての定義や目的については http://www.fsf.org を見てください。

オープンソース・ソフトウェアやフリーソフトについての主張の数々に興味 があるなら、http://www.opensource.orghttp://www.fsf.org をぜひ見てください。 その他にも Miller[1995]のようにオープンソース・ソフトウェアやフリー ソフトについて調査した文書があります。その中でオープンソースは、企業が 所有しているソフトウェアよりもずば抜けて信頼性がある、となっています(ソフト ウェアに対してランダムな入力を行い、どれだけクラッシュに耐えうるのか、 独自に計測しています)。

2.1.5. Linux と Unix を比較する

この文書では、「Unix ライクな」という言葉を、あえて Unix に似せたシステム を指すために使っています。 「Unix ライクな」という言葉は、メジャーな Unix すべてと Linux ディストリ ビューション を指しています。 「Unix」という言葉を単に「Unix ライクな」と同じ意味で使っている人が 多いことも忘れないでください。 そもそも「Unix」は AT&T が開発した製品を意味します。 今日では Open Group が Unix の商標を所有していています。そこでは Unix を 「世界でただ 1 つの UNIX 規格」と定義しています。

Linux は Unix のソースコードを受け継いでいませんが、インタフェースは あえて Unix に似せています。 そのため、Unix の講義で学んだことはセキュリティの知識を含めてほとんど どちらのシステムにも当てはまります。 この文書の大半の情報はどんな Unix ライクなシステムにも当てはまります。 Linux を使うとメリットが出る場合には、あえて Linux に特化した情報を追加して います。

Unix ライクなシステムはいろいろとセキュリティの仕組みを共有していますが、 微妙に違いがあるので、すべてのシステムでその仕組みがすべて利用できるわけでは ありません。 プロセスに対するユーザやグループ ID(uid と gid)とファイルシステムに対する 読み書き、実行権(ユーザやグループ、その他)はすべてのシステムで利用できます。 Thompson[1974]と Bach[1986]には Unix システム一般についての情報 があり、基本的なセキュリティの仕組みについても触れています。 Chapter 3 では Unix と Linux のセキュリティ機能で鍵となる ところを要約します。