気が付くと「世の中はLinux」のようです。以前からUNIXを使っていた人なら大喜びなのですが、初めて触ったPCにはWindows 95がインストールされていた、という人にはハードルが高いことでしょう。そこで、今月から半年ほどかけて、MS-DOSプロンプトを使ったことがあるというレベルの人を対象にしたLinuxの入門記事をお届けすることになりました。インストールして終わりではなく、Linuxにおける常識というものを紹介できたらと思っています。
Linuxとは何か
ここがポイント
- OSとは?
- カーネルって?
- POSIXとUNIX
常套手段ですが、まずはLinuxとは何か、という点からスタートしましょう。正確を期せば、LinuxとはPOSIXに準拠したカーネル部分の名称ということになります。とはいえ、大多数の人にとって、これでは何のことかさっぱり分からないはず。これで理解できる人なら、そもそもこの記事を読む必要はありません。
では、順を追って説明しましょう。キーワードはPOSIXとカーネルですが、まずはカーネルから。カーネルをイメージするには、その前にOSの概要を知っておく必要があるでしょう。
OSとは、Operating Systemの頭文字を取ったものです。コンピュータは、すべて数字で動いています。文字など理解できませんし、キーボードやディスプレイなども知ったことではありません。何をするにも、一からソフトウェアを作る必要があります。もちろん、キーボードを読むプログラム、画面に表示するプログラム、HDを読み書きするプログラムもです。これでは普通の人間に使えるわけがありません。そこで、キーボードからの入力や画面への表示、プリンタへの印刷、HDの扱いといった部分を標準化します。難しくいうと、リソースの管理というやつです。このあたりの面倒を見てくれるソフトウェアをOSと呼びます。場合によっては、基本的なツールとしてのソフトウェアを加えてOSということもあります。
そして、カーネルというのはOSの中核部分です。どこまでが中核部分なのか、という線引きはとても難しいことです。OSの設計思想によっても違ってきます。Linuxでいうと、ファイルやプロセスの管理、入出力といった処理を行う部分がカーネルです。従って、カーネルだけでは実用にならないということになります。ファイルの一覧を出すのも、HDをフォーマットするのも、メールを読み書きするのも、それはツールとしてのソフトウェアやアプリケーションプログラムの仕事になるからです。
Linuxの開発当初はマニア向けの代物だったので、カーネルしか配布されていませんでした。カーネルを入手したユーザーは、自力でさまざまなプログラムを追加していたのです。それが楽しくてたまらない人もいるわけですが、やはり世の中の大多数はそんな苦労をしたくありません。そこでカーネルに加えて、さまざまなプログラムをまとめたものが配布されるようになりました。これをディストリビューションといっています。どんなソフトウェアを入れるかはディストリビューションの作者が判断するわけですから、同じLinuxといってもいろいろなバリエーションができてくるわけです。現在流通しているディストリビューションとしては、
- Red Hat
- Turbo
- LASER5
- Vine
- Debian
あたりが日本でメジャーなところでしょうか。もちろん、これ以外にもさまざまなものがあります。どのディストリビューションが良いのかは永遠の命題ですが、インターネットを使うとユーザーの生の声が収集できるので判断の一助になります。とはいえ、最終的には自分が使いやすければいいのですから、幾つか使ってみてもいいでしょう。
もう1つのキーワードであるPOSIXですが、これはまあUNIXと同義語だと思ってください。UNIXもOSの1つで、AT&Tのベル研究所に勤める研究者が、ゲームやりたさに古ぼけたミニコンに実装したのが始まりだといわれています。しかしそこは腐ってもコンピュータ科学者が設計したものなので、直前に参加したプロジェクトの反省を踏まえてシンプルかつ発展性の高い設計だったようです。思うに、「何でもかんでもファイル」「ファイルは全部バイトデータのストリーム」という単純化が画期的な部分ではないでしょうか。これとパイプやリダイクトといった機能を組み合わせるのが醍醐味なのですが、このあたりの詳しい話は後日にします。
また、当時はコンピュータが高価で、複数のユーザーで共同利用するのが当たり前でした。そのため、UNIXはマルチユーザー、マルチプロセスを実現しています。そして研究者仲間で使うという前提だったためか、ユーザー全員が平等にコンピュータを使えるようになっています。もっと大きなコンピュータ(汎用機などと呼ばれます)だと、1秒いくらという使用料金を取られるので、たくさんお金を払う人が一番使えるようになっていました。ある意味これは正しいことなのですが、お金のない研究者にとっては腹立たしいことだったでしょう。いまは当時の汎用機並みのスペックを持ったコンピュータを占有できるので、ピンときませんが。
さて、ベル研究所で産声を上げたUNIXですが、当時は独禁法のおかげでAT&Tはコンピュータ事業に参入できませんでした。そのため、手間賃程度の価格で教育機関に配布されました。しかも、ソースコード付きです。マルチユーザー、マルチプロセスの実用になるOSがそのまま生きた教材になるわけですから、あっという間に広まりました。そしてあちらこちらで改造されていき、それがさまざまにフィードバックされました。これには速やかに改良が進むという利点と、バリエーションが増えて互換性が低くなるという欠点がありました。これを何とかしようとしたのがPOSIXです。OSの実装面ではなく、APIを規定することで互換性を確保しようとしたのです。現代のUNIXは、みなPOSIXに準拠しているといっていいでしょう。
System VとBSD
ここがポイント
- UNIXとは?
- System V
- BSD
- LinuxはSysetm V? BSD?
前述のように、UNIXにはさまざまなバリエーションがあります。正確にいうと、UNIXを名乗るためにはある試験をパスしないといけないのですが、もちろんこれにはお金がかかります。なので、UNIXは名乗れないがUNIXとほぼ同じ、というOSがたくさんあります。さらにUNIXの中でも、System VとBSDという二大潮流があります。
System Vは正統なベル研究所の流れをくむUNIXです。AT&Tの分割に伴って商用化されたUNIXと考えればいいでしょう。堅実な設計といち早いマルチプロセッサへの対応が特徴です。商用ソフトウェアなので、お金を払えばしっかりしたサポートも受けられます。その代わり、初期リリースでは細かなチューニングが追い付かず、速度の点ではいまひとつ、ともいわれました。
対するBSDはBerkeley Software Distributionのことで、カリフォルニア大学バークレイ校で改良されたUNIXです。大学で開発されただけあって、比較的先進的な機能を組み込み、チューニングによる速度向上もまめに行われていました。弱点はサポートで、技術力のあるユーザーなら自力で何とかできるのですが、商用に使うにはためらわれたものです。
当初はSystem VとBSDの優劣が論じられましたが、スーパーミニコンピュータの時代からワークステーションへと時代が進むと、互いの長所を取り入れてさほど差はなくなります。有名なところでは、SunワークステーションのOSが、当初のBSDベースからSystem Vベースに切り替わっています。マルチプロセッサへの対応をにらんでのことではないかと思われます。切り替え当初はパフォーマンスの点でユーザーから不満が噴出し、BSDベースのOSもしばらくの間は並行してメンテナンスされていました。が、いまではすべてSystem Vベースになっています。結局のところ、商用システムのベースとして使うなら細かいメンテナンスを任せやすいSystem V、OSそのものを扱う研究機関ではBSDといったすみ分けに落ち着いたようです。
さて、ここで問題です。Linuxは、System V系列なのでしょうか、それともBSD系列なのでしょうか?
答えは「どちらでもない」です。
Linuxを開発したLinus氏は、何もないところからPOSIXのAPIを満足するようにプログラムを書き上げたのですから。ユーザーに分かりやすいところでは、rcスクリプトを見ると面白いです。現在主流のディストリビューションはSystem V風ですが、Slackware 3.xなどではBSD風でした。
Copyright © ITmedia, Inc. All Rights Reserved.