/ «2008-02-23 (Sat) ^ 2008-02-28 (Thu)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2008-02-26 (Tue)

[Thoughts] オペレーティングシステムの求めしところ

先人の結果を真似るのではなく、先人が結果に至った道筋を学べ」という考えは、オペレーティングシステムにも当てはまると思います。

Linux, OpenBSD, NetBSD, これらのシステム上で稼働する Apache サーバーは、外部から観察する限りにおいて、その挙動に大きな違いはありませんが、内部は全くことなる実装に基づいています。とにかく動けば良いという実装もあれば、二重三重の異常対策がシステム側に用意された環境もありますし、あらゆるアーキテクチャに対してビルドが可能なシステムもあります。

カーネルやライブラリが POSIX 仕様を満たし、正常動作することは「結果」の一側面に過ぎず、オペレーティングシステムにおいては、いかに安定かつ安全に稼働させるか、いかに合目的的なソースツリーを構築するかが、より重要な評価項目になると思います。

「結果に至る道のり」の選び方については、オペレーティングシステムの間で大きな見識の違いが存在します。例えば、OpenBSD ではセキュリティの確保とシステムの堅牢性を重要視していますし、NetBSD ではマルチアーキテクチャに柔軟に対応できる系統だったソースツリー管理とビルドシステムに重点が置かれています。

Linux はどうでしょうか?個人的な見解ではありますが、残念ながら Linux には「求めしところ」が希薄、あるいは存在しないような気がします。

OpenBSD と NetBSD の求めしところ

参考までに、OpenBSD, NetBSD の求めしところについて見てみましょう。OpenBSD では、トップページの先頭に

Only two remote holes in the default install, in more than 10 years!

と赤字で記されており、この一文を読んだだけでセキュリティの実現とその維持に並々ならぬ努力が注がれていることが分かります。また、OpenBSD の目的については続く文章中で "Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography." と簡潔に記されています。

一方の NetBSD では、こちらもトップページの先頭で

NetBSD is a free, secure, and highly portable Unix-like Open Source operating system available for many platforms, from large-scale server systems to powerful desktop systems to handheld and embedded devices. Its clean design and advanced features make it excellent in both production and research environments, and the source code is freely available under a business-friendly license.

と手短にまとめられています。一見すると大きな特徴がないようですが、"highly portable" と "under a business-friendly license" の2点が重要ポイントです。NetBSD の移植性の高さは数あるオペレーティングシステムの中でも群を抜いており、特にクロス開発のために編み出されたビルドシステム build.sh 環境は、唖然とするしかないほどの見事さ。ターゲットを選ばない NetBSD の懐の広さは、from large-scale server to embedded devices という言葉にも象徴されている通りであり、著作権表示のみで利用できソース公開の縛りがない BSD ライセンスと相まって、産業機器への組み込みに最も適したオペレーティングシステムと言えます。

NetBSD と OpenBSD に共通する点は、いずれも自身の「求めしところ」を簡潔に明記していることであり、その背景には開発コミュニティに綿々と引き継がれてきた、強い目的意識を感じとることができます。

ちなみに、学術論文では最初に Abstract が配置されますが、短い文章中に論文のエッセンスをまとめることは大変難しい作業ですし、経験が浅い若い人達にはその重要性が理解できません。日本の学校では、「長い文章を書くよりは、簡潔で無駄のない文章を書くことの方が遙かに難しい」と先生が教えてくれないのですから、仕方ないのかもしれません。対して、Abstract の重要性を十二分に理解している NetBSD, OpenBSD の面々は、さすがです。

Linux の求めしところは?

これに対して、Linux はどうでしょうか。そもそも、Linux の公式サイトを定義することが難しいのですが、これは Linus Torvalds 氏を始めとする開発者集団が、基本的にカーネル開発のみに従事しており、ライブラリ・システムツール・アプリケーションなどを含めたルートファイルシステムの構築は様々なディストリビュータが個別に開発していることが原因です。

このため、Ubuntu ユーザにとっては www.ubuntu.com が公式サイトになるでしょうし、Fedora ユーザーの場合は fedoraproject.org が公式サイトと映るでしょう。ご本尊である Linux カーネルは The Linux Kernel Archives で提供されていますが、その名前が示す通り、基本的にこのサイトは単なるカーネルソース・アーカイヴに過ぎません。実際、以前は FTP の入り口におまけ程度のトップページが据えられただけの、大変質素な出で立ちでした。

現在用意されている "What is Linux?" の説明を見ると、

Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification compliance.

スクラッチで POSIX と Single UNIX Specification に準拠した Unix クローンを開発した旨が書かれていますが、続く説明も教科書的な機能が羅列されているだけで、目新しさはありません。ハッカー達が、興味本意で POSIX 互換カーネルを作っただけなのか、それとも目指すところは別にあるのか。このあたりが全く説明されていません。

さらに、More information の参照先は、信じられないほど貧弱なリンク集(?)ですし、引用されている The Linux Installation HOWTO に至っては、最終更新 2002年7月の代物。向学心に燃えた Linux 初心者がこのサイトを訪ねたとすれば、間違いなく進むべき道を見失い挫折することでしょう。

この点、NetBSD のユーザに対する配慮には素晴らしいものがあり、Linux のように来訪者をとまどわせることはありません。次回は、NetBSD ドキュメント環境の優れている点について、具体的にご紹介しましょう。