※ Joseph Pranevich 氏のご好意により
翻訳させていただきました。
快く翻訳を許可してくださった
Joseph Pranevich 氏に感謝いたします。
ありがとうございました。
※ この「素晴らしき Linux 2.4 の世界」は、
Joseph Pranevich 氏を中心として、
いわば Linux 安定バージョンの
Linux コミュニティからのプレスリリースとして取りまとめられている文書です。
前 Linux 2.2 リリースの際にもまとめられ、
こちらは Linux Journal 誌(#56 -- December 1998)や
Linux Japan 誌 1999年 3月号(橋本喜代太氏訳)で全文が掲載された他、
Linux 専門でない各種一般メディア
(ZDNet や Cnet 等)のニュースでも広く利用されました。
むかしむかし、この銀河系からそんなに遠くはないところで、 とある記事を
私は書きました。 それは、大したものではなく、 単にLinux 2.2 の新しい機
能と改良された機能の 長々とした詳細なリストでした。 それは昔のことで、
Linux 2.2 の新しさは徐々に消え始めています。 新しいカーネルの香りさえ
無くしてしまいました。 そのため切望する目で、 私達は Linuxの未来:
Linux 2.4 を見つめるのです。
Linux の世界では、リリース期日をアナウンスすることは一般的ではありません。新しいバージョンはその準備が整った時にリリースされるのであり、その前にはリリースされません。:-)
こう言いましたが、Linux 2.3 はフィーチャーフリーズに入っており、クリスマス前後のいつ頃かに一般公開の準備が整うでしょう。
状況の骨子に入る前に、 いつものように、しばらく一歩下がって、 いくつか
のことを言わせて下さい。 Linux 2.2 は Linuxの進化において、 画期的な事
件でした。 これは、すべての事柄を取り扱うような一般メディアの目を 本当
に捕えた最初のカーネルリリースだったのです。 もう今では辺鄙(へんぴ)
なコンピュータ雑誌だけではなく、 メインストリームの出版物までもが オー
プンソース革命の到来を高らかに知らせています。 注目とともにやってきた
のは、 おきまりの FUD(Fear, Uncertainty, and Doubt)(日本語)(※言い掛かりによって競合製品を貶(おとし)めるマーケティング手法)
でした。 私達が決して来ないようにと祈っていたことです。
けれどもこのようなメディアの影響力にも飲み込まれずに、
私達はより強いコミュニティとして浮かび上がりました。
Linux の弱点の多くが、空を横切り高らかに布告
され、 Linux コミュニティの多くのメンバーが絶望した一方で、 カーネルハッ
カー軍団は今まで通り、 それらの弱点を取り上げ、認識し、 修正するために、
昼夜を問わず努力しました。 彼らは素晴らしい仕事をしたと私は思います。
公式なプレスリリースがなかったため、 増大したメディアの関心の副作用と
して、 多くのメディア関係者が 私の元の記事を Linux 2.2 の新しい変更と
機能のガイド、参照先として 利用することを選びました。 正直言うと、私は
嬉しかったです。 けれども、 可能な場合は出典 (この文書を可能にしたコ
ミュニティと私の両方) の明記を是非お願いします。 不明な点は、どうぞ遠
慮せずに、 下記のアドレスに質問と共にメールを送って下さい。 どんなメディ
アの場合でも、 この記事の 全文または一部を転載や翻訳されたい場合には、
下記の私のアドレスにメールを送って下さい。 そうすることにより、 あなた
が取り掛かる前に私はあなたの作業のことを知ることができます。 私が承知
している翻訳のリストを作成する予定です。
これはまだ暫定版のドキュメントで、100%正確ではないかもしれません。
どうぞご注意下さい。
また、私が受け取ったコメントをもとに、新しいサブセクションが付け加えられました。
ユーザからの反響によって、それらは残されたり、
削除されたりするかもしれません。
これらのサブセクションのうちいくつかは、将来、ある時点で
まとまった記事になる予定です。
あなたの感想を教えて下さい。
と、前置きはこれくらいにして、
本題の Linux 2.4 の話を進めましょう。
WWoL2.4(この文書)のドラフトは、「quite nearly
there」と副題が付けられており、 「ファイナル」と私が呼ぶ、少なくとも 3
つのドラフト 以上の、多くの続くドラフトが出る予定です。 私達は皆、どの
変更が重要かについて 違った考えを持っているので、 もしあなたが重要だと
感じている特定のアップデートについて 私が言及していなければ、 是非とも
教えて下さい。
※ この前後の文章は、原文がファイナル(最終版)としてリリースされた際に、
この文書のその前のバージョンから、
きちんとアップデートし忘れてしまっていると思われます。
けれども、いま既にフィーチャーフリーズがアナウンスされているので、
およそ 3週間程で最初の「最終」ドラフトができるでしょう。あるいは、
2年くらいかかるかもしれませんが。
Joe -
jpranevich@ linuxtoday. com(自宅)
jpranevich@ lycos. com(オフィス)
<気のきいたアドレスを提供して下さった linuxtoday に感謝します。
電子メール以外に私はまったく Linux Today とは関係はなく、
Linux Today を代弁しているわけでもありません。
またこの作品は、私の勤め先である Lycos とは何も関係ありません。
ここで示された視点は全て私のものであり、
この記事は Lycos やその他いかなるものからの保証を提供するものではありません。
しかしながら、同社は働くにはすっごく素敵な会社です。>
(※ 翻訳上の誤りを発見された方や、 付加的な訳注解説をご提案される方、
日本語で関連文書を作成された方は、 ChangeLogまでご一報下さい。 よろし
くお願い致します。)
|
|
wwol 2.4
|
Linux 内部
Linux 2.2 には、(形式的にはメジャーバージョンアップリリースであった)
Linux 2.0 以上に大きな進歩がありました。 Linux 2.2 は、
多くの新しいファイルシステムをサポートしました。 また、 完全に考え直さ
れた、ファイル名のためのキャッシュシステムをサポートしました。 そして、
Linux 2.0 よりもずっとスケーラブルでした。 Linux 2.4は、 デスクトップ、
サーバ、組み込みタスク用の さらにより良いプラットフォームとなるため、
Linux 2.2 に施されたそれらの優れた進歩の上に構築されることになります。
けれどもLinux カーネル開発者の方々は、 Linux 2.4 をLinux 2.2 の時より
もずっと早く エンドユーザの手に届けようとしています。 この目的のために、
Linux 2.4は当然ながら、 Linux 2.2が Linux 2.0 と違っていたほどは、
Linux 2.2 との違いはないでしょう。 けれども Linux 2.4 における進歩が、
前のバージョンと同じくらい注目に値するという点については、 あなたも同
意することと私は思います。 (そうでなければ、私はこれを書く必要ありま
せんよね!)
中核のところで、Linux って何なのでしょうか?
カーネルはまさに Linux (GNU/Linux 等と呼んでも結構ですが :-)
OS の心臓部でありながら、カーネル自身も、
コアとコアでない部分とに分けることができます。
Linux は、 すべての OS は確かにそうに違いないのでしょうが、 単なるデバ
イスドライバの詰め合わせだけではないのです。Linuxは、それらのドライバ
を、取るに足るような一つの密着した構成単位へと 結び付けるものなのです。
Linuxは、 スケジューラであり、リソースアロケータであり、 仮想ファイル
システムレイヤであり、 メモリ管理であり、 また、 Linux の世界の本当の
ヒーローである、 その他多くの「縁の下の力持ち」な機能なのです。 これら
は Linux とは何かを本当に定義しているLinux OS の要素です。 なぜなら、
i386(Intel 互換PC)から ARM(組み込みデバイス)や Sparc64(ハイエンド
サーバ)まで、Linux がポートされているすべてのプラットフォーム上 で、
このコードは同じだからです。 いろいろな意味で Linux 2.4 の「心臓部」は
Linux 2.2 のそれとは違っていて、 上記のサブシステムの大部分においてあ
れこれと変更が施されています。
Linux 2.2 とそれ以前のLinux には、 ベースリソース管理システムがありま
した。 これは、 IO ポートやIRQ ラインなど、 コンピュータアーカテクチャ
において有限のリソースを割り振ったり追跡する際に、かなり率直に利用さ
れていました。
残念なことに、
今日のデスクトップ OS に決定的に必要となるような重要な多くの意味において、
それは不十分でした。
Linux 2.4 での新しいシステムには、ずっと汎用的な実装が含まれています。
このことは、ネストされたリソースグループを可能とし、
あらかじめ定義されていたリソースタイプ間の依存関係を取り除きました。
またその他の点では、ドライバ開発者の方々によって必要とされていた大部分の機能が、
より簡単に使えるようになっています。
加えて、これにより、この記事の後の方でお話しする
ISA PnP のサポートのための基盤が用意されました。
この Linus によるクイックハックはおそらく、
2.4 カーネルに加えられた最も影響力のある変更の一つになるでしょう。
※ クイックハック - ちょっとの工夫でプログラムがうまく動くようにすること。
また、VFS(仮想ファイルシステムレイヤ)も以前の Linux から大幅に変更されました。
※ VFS - OS において何種類ものファイルシステムをサポートするために、それらを共通化した仮想的なファイルシステムを構成し、OS のその他のコンポーネントからはこの仮想ファイルシステムに対するインタフェースを提供するためのレイヤーです。これにより他のコンポーネントは個々のファイルシステムの詳細 (例えば NFS は実際にはネットワークの向こうにあるとか、VFAT は ext2 とは全く異なる構造をしているとか) を意識する必要がなくなります。そして何よりもファイルシステムのキャッシュに関する処理を共通化できます。
Linux 2.2 はこのレイヤーに、より良好にキャッシュされ、システム全体がより効率的に動くようにする、いくつもの素晴らしい変更を行ったことを唱っていました。
けれども Linux 2.2 のシステムにはまだ重要な制限がありました。
それらは Linux 2.4 には間に合って解決されました。
Linux 2.2 の処理方法における主要な制限事項の一つに、
キャッシュのためのバッファを 2つ使用するということがあります。
一つは読み込み用で、もう一つは出力用です。
ご想像どおり、これは物事を非常に複雑にしていました。
慎重なコーディングをしなければならないカーネル開発者は必ず、
これらのキャッシュを必要に応じて同期させなければなりませんでした。
Linux 2.4 は、
複数のキャッシュシステムを取り除き、
すべての仕事を単一のページキャッシュレイヤに入れてしまうことで、
この壁を完全に壊してしまいました。
この変更により、Linux 2.4 はより効率的になり、
コードは開発者にとってより理解しやすくなります。
また、キャッシュに必要なメモリの量は約二分の一になっています。
この書き換えの過程で、
多くのレースコンディション
(複数のプロセスが保護されていない変数へアクセスしようと争う(「レース」する)
ことにより発生するエラー)
が取り除かれ、
ハイエンドシステムにおいてより素晴らしいスケーラビリティを可能にするように
コードが効率的になり、
複数のボリュームが関係する際のディスクへの書き込みが速くなりました。
(Intel の?)ハイエンドマシンにおいて生じた、
Linux 2.2 のよくある問題は、プロセス制限でした。
Linux 2.2 では、1024 のプロセス(またはスレッド)
を同時に走らせることができるだけでした。
ユーザが何千といるハイエンドシステムでは、 これはすぐに問題になり得ます。
Linux 2.4 はこの過去の遺物を葬り去り、
(実行時に最大値を設定でき、かつシステム中のメモリの搭載量によってのみ制限されるような)スケーラブルな実装を行ないました。
たったの 0.5 ギガバイトほどの RAM がインストールされた ハイエンドサーバ上で、 同時に 16,000 プロセスをサポートすることが 容易にできるようになりました。 特定のシステム上でそれより多くのプロセスを走らせることができたという報告も他のユーザから出ています。 これは、 Linux を企業市場から遠ざけてしまう 主要なボトルネックの一つでした。
メモリ消費量の観点からは、Linux 2.4 は概ね Linux 2.2 と同じ量を必要とします。
追加あるいは拡張されたサブシステムもあれば、最新式のものとなったものもあります。
いくつかの時代遅れなコードは削除されました。
Linux 2.2 で必要とされるよりも少ないメモリで済むようなケースさえあります。
また、Linux 2.4 が以前のバージョンより「多くの」メモリを
サポートするだろうという点も注目されるべきでしょう。
Linux 2.4 では、Intel マシンで最大 4G バイトまでの
RAM がサポートされる予定です。
この増えた分の RAM は、(Intel の設計上の特徴のため)
下位のメモリとまったく同じ方法で扱われるわけではありませんが、
それにも関わらず多くのカーネル内の機構で使用されるでしょう。
|
|
wwol 2.4
|
実行ファイルの種類
プログラムローダのことは、Linux カーネルの中でも見逃されがちです。
これは、プログラムを適切にロードし、実行してくれる部分です。
Linux 2.2 が「misc.」バイナリーローダをサポートしたことはあまり知られていません。
これは、Windows や類似の OS が行うように実行ファイルの種類と
「ヘルパー」アプリケーションとを対応づけることができるよう設計された、
汎用性のあるモジュールです。
これは例えば、あなたのマシン上のすべての Windows アプリケーションを
WINE (Windows エミュレータ) とを関連付けて、"./notepad.exe"
と打ち込めば、期待した通りの動きをさせることができるようにするものです。
(しかし、この概念をカーネルレベルで極度に押し進めることは、
一般に良いアイデアではありません。
Windows で提供されているたくさんの「関連付け」は、
ウィンドウマネージャやファイルマネージャの中で
扱われるままにしておくのが最良でしょう。
例えば、"/etc/passwd" を実行できるようにして、
テキストエディタが起動されるようにするというのは、まずいアイデアでしょう。)
このことは大きな成果だと多くの方によって考えられました。
WINE や Dosemu (DOS エミュレータ) グループなどの多くの異なるグループが、
そのプログラムをカーネルによって「ネイティブ」に実行できるようにする方法を
公開できるようになったからです。
Linux 2.2 と Linux 2.0 は Java アプリケーションの実行をサポートしていました
(より正確には、Java インタープリター/コンパイラーを必要に応じて立ち上げていました)。Linux は、カーネルレベルでこれを行なう最初の OS でした。
Java アプリケーションが実行された時、
Java のバイナリローダは Java インタープリターを適切な引数を付けてロードします。
もちろん、この機能を新しい「misc.」型のローダで実現するのは簡単です。
また、どうやればそうできるかの説明も Linux 2.2 と一緒に提供されていました。
Linux 2.4 はついに、古いバイナリローダをお役御免にしました。
古いモジュールを使っているユーザは皆、その設定をアップグレードして
新しい関連付けを作成する必要があるでしょう。
Linux 2.2 はカーネルを ELF
としてコンパイルする必要があった最初のバージョンでしたが、
Linux 2.4 は 2.2 よりもずっと、ELF フォーマットに依存するようになります。
(ELF は高機能なバイナリフォーマットで、
複数のコードとデータセクションのサポートや、
シェアドライブラリのサポートが容易である等の長所があります。
これは Win32 フォーマットの親戚のようなものですが、
より優れた設計で、嫌なところもほとんどありません。)
ELF バイナリフォーマットをまるまるより有効に利用することで、
カーネル開発者はいくらかのコードをモジュール化し、
保守を容易にすることができます。
また、多様なドライバについては、
そのコアのコードにいちいち明示的に初期化の処理を書くのではなく、
どのようにリンクされているかによって初期化されるようになるので、
より「プラグ・アンド・プレイ」(あえてこの用語を乱用してもよければ)
になるでしょう。
加えて Linux 2.4 には、
個々のサブシステムに入る前にまだ書いておかなればならない、
注目すべき変更点がいくつかあります。
Linux 2.4 はある意味で、以前の Linux よりも標準規格に準拠したものとなります。
例えば POSIX クロックとタイマーのサポートの採用によって、
リアルタイムクロック以外のデバイスを内部的に時計として使用する
ことができるようになります。
(一般に、これは特殊なハードウェアになるでしょう。)
また、ほとんどの UNIX で標準のネットワークファイルシステムとして使用されている
NFS は、いまやバージョン 3 プロトコルのほとんどの機能をサポートし、
Linux はこの規格を使って通信するマシンとより良好に通信できるようになります
(これは後のファイルシステムのセクションで詳しく述べます)。
さらに、互換性を向上するため、
スレッド処理モデルなどにいくつかの微妙な変更が加えられました。
|
|
wwol 2.4
|
多様な Linux
インフラのように重要な部分は Linux OS の心臓と言えますが、 エンドユー
ザに最も分かりやすく、 個々の Linux ポートに特有なのは、 OS の各部分な
のです。 これらの Linux OS のいわば「腕や脚」には、 アーカテクチャ依存/
非依存のドライバコードのすべてを含みます。 これらは、プロセッサ、ディ
スクドライバ、ポートを始め、 コンピュータへの本当のアクセスを提供する
他のすべてのものを管理します。
この記事の用途を考えて、私(Joseph)は i386 Linux に専念することにします。
それが私が最も親しんでいる種類だからです。
個々の移植には Linux 2.2 が出てから重要な進歩がありましたが、それらの移植の多くは私の経験の及ばない所です。
(この話題に興味があるなら、
また、どなたか個々の移植における変更点のリストを提供して下されば、
喜んで補遺を書きます。)
Linux 2.2 が出て以来唯一の新しい移植 (SuperH) は、
Linux 2.4 に統合されるでしょう。
けれど、リリースまでには変更があるかもしれません。
Intel 互換のハードウェアに関しては、 Linux 2.4 には、 プロセッサへの素
晴らしいサポートが Linux 2.2と同様にあります。 これには、 386、486、
586(Pentium)、686(Pentium Pro / Pentium II / Pentium III) プロセッ
サへの最適化が含まれます。AMD や Cyrix によって製作されている「互換」
対応物に対しても同様です。 加えて Linux 2.4 には、 最新鋭のチップを持
つハードウェアへの 付加的なサポートもあります。 Linux 2.2 には、 ある
種の高帯域デバイスでの性能向上のための Intel の MTRR(Memory Type
Range Registers)サポートがありましたが、 Linux 2.4 では、 互換チップ
に共通の変更をサポートすることによって、 このサポートをさらに一歩先へ
進めています。これには、 AMD K7 プロセッサにおけるダブル MTRRや、
Cyrix が気に入っている MCR などが含まれます。また Linux 2.2 には、 マ
ルチプロセッサシステムにおいて 複数のプロセッサに渡って割り込みができ
るように IO-APIC のサポートもありました。 Linux 2.4は、期待通りにこれ
を次の段階まで押し進め、 実際に複数の IO-APIC(Advanced Programmable
Interrupt Controller)コントローラを含む 一部のハイエンドシステムをサ
ポートします。
※このサポートには、日本の NEC グループが貢献したそうです。
2.3.12以降の arch/ i386/ kernel/ io_apic.c (英語)をご参照下さい。
(12/06 リンク先更新。Thanks to 姉崎さん)
APIC については、こちらの説明(日本語)をご参考下さい。
私の知る限りでは、
まだ完全にはサポートされていない唯一のマルチプロセッサシステムは、
いくつかのかなり古い 486 で、
486DX と 486SX チップが同じシステム内に混在しているものです。
これは主に SX チップが浮動小数点コプロセッサを内蔵しておらず、
浮動小数点演算を必要とするアプリケーションが正しい側の CPU
で実行されるようにする、というのがいくらか難しいためです。
ご想像通り、この機能を要求する声はあまり上がっていません。
(他にも、サポートされていない、バグのあるチップセットの組合せが存在するかもしれませんが、個人的には気にしていません。)
賢明な方ならもうそんなシステム
(それらは容易に FPU 付きのチップにアップグレードできます)
を使ってはいないだろうという事を考えれば、これは大した制限ではないと
考えられます。
|
|
wwol 2.4
|
Linux 2.4 と Merced (ia64)
渇望する大衆にはまだ提供されていませんが、
x86 ラインを 64 ビットに移行させる Intel の計画は、
完成しかかっています。
このチップに対する直接的なサポートは Linux 2.4 には含まれていません
(まだ出荷されていないので、それは困難でしょう) が、
リリース直後に Merced 用 Linux が存在することを確実にするよう努力している
グループは複数あります。
Linux が既に 64 ビットプロセッサ
(Compaq の Alpha チップと Sparc 64 など) をサポートしており、
それが主流カーネルのソースに統合されていることで、
この移植作業が容易になっているのは疑いありません。
これは 64 ビットの Merced 用 Linux を実現する際の下働き
(データ型のサイズや、数値が内部的にどのように格納されているかを自分が
「知っている」と、カーネルとそのすべてのドライバが思い込まないことを確実にする
等々...)の大半が、既に完成していることを意味します。
(しかもこれは、かなり前からそうでした。)
私は、Linux を 64 ビットシステムとして「完璧」にするのに、
問題は何も残っていないなどと言うつもりはありません。
それは事実とは異ります。
けれども、困難で微妙な箇所の大半は完了しており、
残りはすべて過去の遺産から生じる問題です。
|
|
wwol 2.4
|
Linux 2.4 と 386 以前の Intel チップ
意外にも、386 以前の CPU で動く Linux について、数多くの質問を私は受けます。
少くとも現時点での答えは、「そんな動物はいません :-」です。
関連プロジェクトの ELKS (Embeddable Linux Kernel Subset) が、
そのようなマシンで動く Linux 風の OS の作成に取り掛かっています。
これにはプロテクトモードを持つチップのために、同モードのサポートも
含まれています。
けれどもこのプロジェクトは Linux の本筋からは離れているので、
この文書では範囲外とします。
|
|
wwol 2.4
|
バス - ISA、PCI、USB、MCA etc.
プロセスは、 それでも、コンピュータの中心部のほんの小さな一部分に過ぎ
ません。 コンピュータの演算にとって プロセスと同じくらい重要なものとし
て、 バスアーカテクチャが挙げられます。 何故ならバスアーカテクチャこそ
が、 内部デバイスに関する責任を引き受けている (あるいは、原因になって
しまっている、という場合もあるかも) システム構成要素だからです。
Linux 2.4 はまだ、
(新しいリソース管理サブシステムの配下に入れる作業とバグ修正の他には)
サポートしているバスの多く((E)ISA、VLB、PCI、MCA など)
の内部動作にはあまり手を付けていません。
この領域での最大のニュースは、ISA PnP
(ISA バス上でのデバイスの設定と検出をサポートしようという若干勘違いした試み)
がついにカーネルレベルサポートされたことです!
将来的には、これは PnP デバイスを「簡単に動く」ようにし、
正しく動作させるようにする際の追加の設定ユティリティを必要なくするでしょう。
けれども、 この戦線からはエキサイティングなニュースが届いています。 今
や USB(Universal Serial Bus)が Linux カーネルでサポートされたという
のです。 USB は、 キーボード、マウス、サウンドシステム、スキャナーなど
のデバイスにおいて 今正に注目されるようになってきた新しいタイプの外部
バスです。 この記事の執筆時では、 このサポートは 100%というわけではな
く、 多くの個別・共通の USB ドライバは、サポートされていないか、完全に
はサポートされていないかのどちらかです。 けれども、 サポートされるデバ
イスの数は、 時間が経てば増えるだろうと私は確信しています。 ちょうど、
現在サポートされるフレームバッファデバイスの数が同様に時間の経過と共に
増加していったのが見られたように。 (フレームバッファは、 Linux 2.2 の
新しい機能でした。下記参照。)現在、キーボードとマウスは概ね 期待通り
に動いています。 サウンドシステムのサポートも 大急ぎでやって来ています。
モデムやネットワークカードのような他のデバイスには、 仮サポートがすで
にありますが、 それらのドライバはまだ完全ではありません。
USB、I2O(Intelligent Input/Output)デバイスサポートに加え、 PCI の拡
張が Linux 2.4 で追加されています。 これにより理論的には、 OS に依存し
ないデバイスとドライバがより多く存在するようになります。 多くの I2O デ
バイスは既に機能しており、Linux 2.4 がリリースされる頃には、 サポート
されるI2O デバイスはもっと増えているでしょう。
PCMCIA (ノートパソコンで広く使用されている、半外部バス) が、
いまや標準カーネル内でサポートされました。
もう、PCMCIA ユーザがそのシステムを正しく動作させるために、
別個のパッケージをダウンロードしてインストールする必要はなくなるでしょう。
|
|
wwol 2.4
|
Linux と ISA プラグ・アンド・プレイ
私が機会ある度に繰り返し受ける質問は、
「いつ Linux は プラグ・アンド・プレイをサポートするの?」というものです。
この質問自身には「多くの」意味があり、
Linux カーネルも、いくつかのバージョンで、
「多くの」種類の「プラグ・アンド・プレイ」デバイスのサポートを導入してきました。
ISA PnP (ISA バスの上位互換としてのプラグ・アンド・プレイ仕様) のサポートは、
多くの Linux ユーザにとって長らく泣き所でした。
Linux 2.4 がついに直接 PnP デバイスのコンフィグレーションをサポートするのは
嬉しいことですが、(執筆時点では) 多くの、というか、ほとんどのドライバはそれらがサポートしている ISA PnP カードを検出するようにはアップデートされていません。
|
|
wwol 2.4
|
ブロックデバイス - ディスクドライブ、RAID コントローラ etc.
たいていのユーザの視点からの Linux のデバイスの種類は、
基本的に 3種類に分けられます。
ブロックデバイス、キャラクターデバイス、そして、ネットワークデバイスです。
これらを順に取り上げていきましょう。
ブロックデバイスとは、
そのデータが、独立にアクセスできるバイト列で表現されるのが最も適当であるような
ハードウェアです。
(これはちょっと単純化していますが。)
もっとコンピューター通っぽい用語を使うなら、
ブロックデバイスとは、ランダムアクセスをサポートするデバイスです。
つまりユーザは、デバイス上の任意の位置にシークして読み書きできます。
(これもまたちょっと単純化しています。)
ブロックデバイスの一般的な例には、
ハードディスクやフロッピーディスク
(「ドライブ」と言って想像されるようなものはほとんどがそうです)、
RAM ディスク、などがあります。
デバイスが特殊な機能 (メディアを自動的に排出できる、等) を持つものであれば、
どんなプログラムでも使える ioctl() (I/O コントロール) によって、
そういった特殊なものをサポートします。
Linux 2.2 は既に、エンタープライズやデスクトップ用途での最も一般的な
タイプの記録媒体のほとんど (RAID コントローラ、IDE、SCSI ディスクなど)
をサポートしています。
Linux 2.4 は数多くの重要な方法で、この上に構築されます。
IDE は今日の PC で使われている最も一般的なタイプのディスクです。
個々の IDE コントローラは、
実際には 2台のディスク (ハードディスク、CD-ROM ドライブなど)
をサポートしており、Linux 上でこれは別のブロックデバイスに見えます。
Linux 2.4 は、Linux 2.2 での IDE のサポートから改良され、
システム当たり 10 (Linux 2.2 よりも倍以上)
もの IDE コントローラをサポートできるようになりました。
(以前は 4 が可能な最大値でした。)
これにより Linux は、IDE デバイスの理論的な限界である
20 台にまで押し上げられました。
また、DVD と CD-ROM チェンジャーのサポートを改善するために、
いくつかの変更も行われました。
Linux 2.4 には間に合わないかもしれませんが、
Linux で CD-RW と DVD を透過的にフルサポートするための作業が進行中です。
けれども当分の間、これらは通常の状況ではリードオンリーと考えなければなりません。
しかし、前もってフォーマットされたディスクイメージは
(※ CD-R を焼く時と同様に)
ディスクに直接書き出すことができます。
そしてついに、Linux 2.3 は多くの新型チップセットの
UDMA 機能へのアクセスを獲得し、
いくつかのハードウェアに存在するバグに対しより良く対処できます。
SCSI サブシステムは Linux 2.4 で進歩しました。
進歩の最も顕著な例は、新たにサポートされた SCSI コントローラの数でしょう。
長らく待たれていた SCSI の書き直しは
Linux 2.4 では起こりませんでしたが、大幅なクリーンアップが試みられています。
また Linux に、商用 UNIX の世界のアイデアが採用されました。
「raw」I/O デバイスのコンセプトです。
raw デバイスとは、
アクセスがキャッシュを経由せずに直接処理され、
そのアクセスは、
常に直ちにディスク等の「ハード」(ウェア上の)データと同期するものです。
このアイデアには、多くのエンタープライズ向けの用途があります。
システムの超重要データに故障が起きた時でも、
これにより Linux はデータ整合性をより良く保持することができるためです。
またこの機能は、
OS によって提供されているファイルシステムよりも
自分の方がうまくキャッシュの処理ができるぞ、
というデータベースアプリケーションにも利用されています。
これまでこのアイデアが採用されなかった原因となっていたのは、
商用 UNIX が、
これらのデバイスへ割り付けやアクセスするスケーラブルなプロセスを提供しておらず、
システム中のそれぞれすべてのブロックデバイス毎に、
「raw」デバイスノードを割り付けることを要求していたためです。
多くの考慮や多くの却下されたアイデアの後、
任意のブロックデバイスに関連付け可能な
「raw」デバイスノードのプールを作るという方法を取ることにより、
この機能はついに認められることになりました。
こうして、一度に使われるであろう raw デバイスの個数分だけの
ノードを割り付けておけば良くなりました。
|
|
wwol 2.4
|
ファイルシステム
ブロックファイルシステムは、多くの方法で使われることができます。
※ 「ブロックデバイス」の誤りと思われます。
最も一般的なブロックデバイスの使われ方は、
それをファイルシステムとしてマウントすることです。
(内部的には、ファイルシステムのコードはブロックデバイスドライバ
の上に積み重ねられた状態になっています。)
また、 これらのファイルシステムは (ほとんど他のすべてと同様に) Linux
のすべてのバージョンで動き、i386 Linux だけに当てはまるものではないと
いうことを 言及しておきます。
Linux 2.4 は、 Linux 2.2 にあった新しいファイルシステムのすべてを含ん
でいます。 これらのファイルシステムには、 FAT(MSDOS用)、 NTFS
(Windows NT/2000 用) VFAT とFAT32(Windows 9x 用)、HFS(Macintosh
用)、 他多数のファイルシステムがあります。 これらのファイルシステムす
べては、 新しいページキャッシングシステムをサポートするためにある程度
(時には大幅に)書き直されており、 そのため、より効率が良くなっていま
す。 けれどもその反面、 Linux 2.2 用に設計された バイナリのみのファイ
ルシステムモジュール は、Linux 2.4 では動きません。 (一部のソフトウェ
ア企業と違い、 Linuxは一般的にモジュールレベルでの 下位互換を提供しま
せん。 一般的に、 オープンソースなモジュールは十分迅速に変化に対応でき
ますので、 バイナリモジュールを提供する方には、 同様に迅速な対応あるい
はコードの公開が期待されることになります。)
けれども一部のユーザは、 他の OSとのより良い互換性を提供する 大きな改
良点に気付くことでしょう。 OS/2 ユーザは、とうとう、 そのディスクを
Linux 上で読み書きできるようになります。(この変化は、実現に長い時間が
かかりました。)
残念ながら NT ユーザはまだ、
特定の状況ではディスク破壊を招くおそれのある "experimental" (※ 実験的) なドライバを使ってみようと思わない限り、
安寧は得られません。
Linux 2.4 にはまた、 他の UNIX 系 OS とより良く相互運用できるように 設
計された改良点が 2点あります。Linux 2.4 においてなされるサポートでキー
となるのは、 IRIX efs ファイルシステムと IRIX ディスクラベル(パーティ
ションテーブル)フォーマットのサポートです。 また、 UFS ドライバが今や
その CDROM をサポートするようになったことで、 NextStep へのサポートも
改良されました。
SMB(Server Message Blockプロトコル)経由で Windows 共有ドライブをマウ
ントしているユーザは、(壊れたままリリースされた)Win9x システムのため
の 対処策を有効にするために、 もはやコンパイル時オプションが必要でなく
なるので嬉しいことでしょう。コンパイル時オプションを指定する代わりに、
Linux自身が接続しているシステムの種類を検知し、 必要に応じてバグ修正を
有効にすることができるようになります。 このことにより、Linux は異種混
在ネットワークでの かなり良い選択肢となるでしょう。
(これは SMB クライアントだけです。
サーバ機能やプリンターへのアクセスが必要なら、
人気のある Samba パッケージを使うことができます。)
多くの Linux ユーザにとって特に重要なのが、 UNIX OS の共有ドライブをマ
ウントする Linux の能力です。Linux 2.4 で初めて、 NFSプロトコルのバー
ジョン3に従う NFS 共有ドライブにアクセスできるようになります。 NFS バー
ジョン 3 には前のバージョンに比べて多くの利点があり、企業ユーザから
Linux にもっとも要求されていた機能の一つとなっていました。
Linux 2.4 には、 現在まだ欠けているサポートがいくつかあります。 例えば、
まだジャーナリングファイルシステムのサポートがありません。(※ journaling も LVM もプロジェクト自体は進行中です
が、 まだアルファ段階であり、 主流カーネルにそのコードが統合されていま
せん。) ジャーナリングファイルシステムは、 比較的短い fsck 時
間と容易なデータの復旧を提供するので、 エンタープライズへの入場条件だ
と多くの人が考えています。
HFS の後継であり、ある種の Macintosh のディスクで使われている「HFS+」
はまだサポートされていません。
UDF フォーマットもまたサポートされていません。このフォーマットは DVD の共通フォーマットとして使われています。
2.4 のリリース準備ができる前に、
これを含む他の「欠けている」機能が完成することが望まれています。
|
|
wwol 2.4
|
フレームバッファ
もう一つの、より複雑なブロックデバイスは、フレームバッファです。
フレームバッファとは、事実上ビデオメモリとして表示されるメモリの一部
(またはビデオメモリそのもの) であり、
このメモリーに書き込むとスクリーン上の画素の色が変わるような領域です。
※ フレームバッファという名称は、ディスプレイに表示される一枚分の画面の事を「フレーム」と言う事から来ています。1フレーム分のデータを保持するバッファなので「フレームバッファ」というわけです。
これは他のいくつかのブロックデバイスよりも複雑です。
画面表示関連の機能(パレットの変更等)の ioctl をサポートしているからです。
(このデバイスを「フォーマット」し、
ファイルシステムとしてマウントすることもできるかもしれませんが、
お勧めはしません。)
Linux 2.4 はいくつかの新しいドライバを取入れ、従来のドライバに改良を施しました。
ここで特に重要なのは、多くの「スタンダード」VGA カードと、
標準的な設定を、少なくともいくつかのモードにおいて Linux がサポートしたことです
(理想的とはいえないでしょうが)。
この機能がバイパス可能で、(i368 では) 他の方法ではサポート
できない特定のシステムのユーザにのみ必要であることを覚えておいて下さい。
現時点では、XFree86 プロジェクトの方が、
カーネルがサポートできるよりも多くのビデオカードへのドライバを
提供していますから、
X window system をサポートする為にこの機能を使う必要はありません。
(SVGAlib 等のライブラリでは、
サポートされているハードウェアにおいて直接ビデオを操作することができますが、
いくつかのセキュリティ上の理由から、
これらのライブラリの使用は慎重に行う必要があります。)
|
|
wwol 2.4
|
キャラクターデバイス - キーボード、マウス、コンソール、I/O ポート
Linux が認識する 2つめのデバイスはキャラクターデバイスです。
これらは、
読み書きはできるけれども、本質的に「位置」を持っておらず、
順序通りにしかアクセスできないデバイス達です。
これには、ターミナル、I/O ポート、キーボード、マウス、
その他ご想像通りのものがあります。
Linux 2.4 はこの領域でも改善されています。
この戦線からの最大のニュースは、 Linux 2.4 で初めて、 USB(Universal
Serial Bus)に 接続されたキーボードとマウスが サポートされる予定という
ことです。 これらの入力装置は、 差し込まれると「通常の」キーボードとマ
ウスであるかのように 動作します。 さらに Linux は、今や、 キーボードが
BIOS によって事前に初期化されない 壊れた(または特別に組み込まれた)シ
ステム等、より多くのシステム上で動くようになります。 また、いくつかの
場合において、キーボードがないマシンに対するサポートが改善されます。
(大抵は、キーボードの欠如に対応できないバギーなマシンですが、 そうい
うのが良いという場合も含めて。)
意外かもしれませんが、
すべてのバージョンの Linux の画面出力はキャラクターモードで行われます。
(Linux はカーソル移動を扱う組み込みの vt100 拡張インターフェースをサポートしています。
これは非常に小さなテキストモードのみのフレームバッファーデバイスを使うことで行われます。)
フレームバッファの場合、Linux 2.2 以降は、組み込みのテキストモードと同様 (時には優れてさえいる) な機能を提供するために、フレームバッファドライバとターミナルドライバの重ね合わせをサポートしています。
Linux 2.4 ではこのサブシステムへの大きな変更はありませんが、
コンソール (Linux カーネルメッセージに使用される基本のディスプレイ)
をパラレルポート (例えばプリンタ) へリダイレクトする機能を初めてサポートします。
(前のバージョンの Linux も既にシリアルポートへのリダイレクトはサポートしていました。)
この機能は、
Linux のカーネルメッセージとデバッグメッセージのハードコピーを保存したいという
一部の開発者やサーバアプリケーションの興味をかなり惹くでしょう。
もちろん、キャラクターデバイスの本来の姿である、
優れた I/O ポートのサポートがなければ、
Linux は成功しなかったでしょう。
これらは概してシリアルとパラレルの 2種類に分けることができます。
シリアルサポートに関しては Linux 2.4 はあまり変更がなく、 今まで(2.2
から)あった制約の多くが依然として存在することになります。 (特に、 一
般的にモジュールオプションの設定は、 通常モジュールに渡される 標準パラ
メータではなく、 外部ユーティリティを用いて行われます。)Linux 2.2 の
後半のバージョンと Linux 2.4 のすべてのバージョンで、 PCI シリアルボー
ド上の IRQ を共有できるようになります。 これは以前は、ISA カードとオン
ボードシリアルポート上でのみ 可能なことでした。 他のマルチポートハード
ウェアのいくつかは、Linux 2.2 上でサポートが改善される予定です。 より
多くのアップデートと新しいドライバとが 定期的に流入してきています。
対照的に、 パラレルポートサブシステムは、 2.2 以来、いくらか大規模な精
密検査を受けています。 そして現在は、 「unknown(不明)」タイプのパラ
レルデバイスとの 抽象化されたコミュニケーションのための「ジェネリック
(一般)パラレルポートドライバ」 があります。 これは例えば上で説明した
ように、プラグ・アンド・プレイ情報のために パラレルポートへポールした
いプログラムによって使用されることができます。
パラレルポートをコンソールとして使用するという副産物を
与えてくれたのは、これらの変更です。
また Linux 2.4 は、
最新パラレルポートの個々のモードすべての使用をサポートします。
これにより、(ハードウェアによってサポートされていれば)
DMA を使ってパラレルポートに書き込むことなどができます。
これはプリンタや他のパラレルポート接続の機器へのアクセスを高速化します。
赤外線サポートは Linux 2.2 以来進展し、
ネットワークサポートの改善を始め多くの変更がこの分野でなされています。
別の部門では、 2.2 以来、いわゆる「WinModem」(または「ソフトモデム」
あるいは「LinModem」)のサポート の作業がいくらか(少しですが)なされ
ています。 これは 大部分がソフトウェアであるモデムで、 ドライバはしば
しば Windows 用がメーカによって提供されているだけです。 (それゆえ、こ
の共通の名前が付けられています。) この野獣系デバイスのサポートための
コードは Linus に送られてきていませんが、 Linux 3.0 より前に、 いくら
かサポートされるかも知れないという可能性はあります。 しかし、ここで主
要な障害の一つとして、 すべての WinModem はそれぞれ違っているというこ
とがあります。 あるWinModem のためのドライバが他の WinModem に適用でき
る 可能性が低いのです。かなりの数の異なるタイプの WinModem があるため
に(※ ベンダー自身がドライバを提供してくれなけ
れば) そのサポートは困難になり、 あるいは、 サポートされるハー
ドウェアのきちんとした選択を行うことさえ 不可能になるのです。オープン
ソース開発者は、見込みのない賭けは実行してきませんでした。 けれどもい
つの日か、 最初のドライバがカーネルに入っても私は驚かないでしょう。
調査のほとんどは既に完了しています。
もちろん他にも、
Linux 2.4 が改良すべきと一部の方々が感じる点はあります。
USB の追加によって、
同じバスに複数のキーボードやマウスが接続できるようになりました。
けれども Linux 2.4 は、
内部的にこれらのデバイスのマルチヘッド(複数接続)の機能を持っていません。
キーボードとマウスを 1つのターミナルに、
そして別の組を異なるターミナルに割り付けるということはできません。
これらのサポートは、GGI プロジェクト (Linux カーネルにマルチヘッドや、フレームバッファ、その他の機能をサポートを提供するためのプロジェクト) によって提供されていますが、
このプロジェクトのコードはまだ (そしておそらく永遠に) 主流カーネルには統合されていません。
(けれども、この機能を必要としているなら要チェックプロジェクトです。)
|
|
wwol 2.4
|
アクセシビリティ
Linux は一般に「ユーザフレンドリー」な OS とは見なされていません。
ですから、Linux 2.4 (そして最近の Linux 2.2 のいくつかのバージョン)
で、最初の音声合成カードのサポートが含まれているということには、
驚かされるでしょう。
これらのカードによって Linux ユーザは、
ブート時の初期のメッセージも含め、
すべての Linux の出力を聞くことができます。
これらのデバイスへの、
カーネルレベルでのこのような完全なサポートを誇れる OS はごく僅かです。
(このカードのすべてを利用し尽くすには、
まだ他のパッチとユティリティが必要ですが、
それがカーネル内に存在していることは、
Linux にとって正しい方向への大きなジャンプです。)
|
|
wwol 2.4
|
マルチメディア:サウンド、テレビ、ラジオ、等々
マルチメディア:サウンド、テレビ、ラジオ、等々
キャラクターデバイスの雑多な側では、
Linux でサポートされている「ちゃらちゃらした」デバイスがあります。
Linux は、そのデスクトッププラットフォームでの拡大しつつある役割の中で、
これらのデバイスをサポートするための挑戦に尽力しています。
サウンドカード、テレビ/ラジオチューナ、
その他のサウンド/ビデオを出力するデバイス達です。
正直に言えば、Linux 2.4 にはこの点において
Linux 2.2 のような画期的な変更があったわけではありません。
しかし Linux 2.4 には、フルデュプレックスのサポートを含む、多様なサウンドとビデオカードのドライバーのアップデートと新しいドライバが含まれています。
Linux 2.4 と最近の Linux 2.2 のいくつかのバージョンには、
ある種のサウンドデバイスがより容易に必要なメモリ領域を割り付けられるようにする
コードも含まれています。
これにより、それらのカードを設定したり使ったりするのが非常に容易になるはずです。
|
|
wwol 2.4
|
ネットワーキングとプロトコル
単純なキーボードとマウスとはずいぶん違って、
ネットワーキングとネットワークハードウェアは、
Linux がいつでも優位を占めている領域の一つです。
これらの怪物どもは「キャラクター」でも「ブロック」でもなく、
デバイスノードを必要としない特別な場所に生息しています。
Linux 2.4 では、新しいドライバ、バグ修正、
既存のドライバに追加された新機能などの多くの改善がこのレイヤーにあります。
Linux が採用しているモデルであるネットワークソケットは、
ほとんどの種類の UNIX を通じて標準となっているものです。
残念ながらこの標準にはいくつか不足している点がありますが、
これらの不備は標準にまったく違反せずに修正されることができます。
Linux 2.2 以前のバージョンにおいては、
ネットワークソケットからのイベントを待っているいくつかのプロセスがある場合
(例えばウェブサーバ)、
何か動きが検出されるとそれらは全部起き上がってしまいます。
このため、Linux は、ウェブページの要求が届く度に、
要求を獲得しようとするたくさんのプロセスを起こしてしまいます。
複数のプロセスが同じ要求を処理するのは意味がないので、
ただ 1つのみがデータを受け取り、
残りは何も処理することがないの気づいてまた眠りに入ります。
Linux はこれらすべてを可能な限り素早く行う点で非常に優れていますが、
それでも、これはまだ非常に非効率的です。
しかし、もっと良いやり方が存在します。
Linux 2.4 には、Linux でこの「跳ね馬効果」を完全に除去することができる
"wake one (一つだけを起こす)" を実装する変更が含まれています。
※ 跳ね馬効果(stampede effect) - 専門的には「獣群の暴走 (thundering herd)」問題と呼ばれることが多いようです。
一言で言えば、"wake one" はその名前が示す通りのこと (事象が起きた時に、一つのプロセスのみを起こす) を行います。
これは Apache のようなアプリケーションをより効率的にし、Linux をウェブサーバとしてより良い選択肢にします。
Linux 2.4 にはまた、 完全に書き直されたネットワークレイヤが含まれてい
ます。 実際これは、 できるだけ順番に並べずに並行して処理できるように作
られており、 以前の Linux のバージョンのどれよりもずっと良くスケールし
ます。加えて、 Linux 2.4 には、Windows を始めとする多くの一般的な OS
で使用されている ネットワークスタック固有の気まぐれ(奇妙な癖)をうま
く 取り扱うことができるように、 多くの最適化が含まれています。
またこの時点で注目すべきは、
Linux はいまだ IPv4 仕様 (そう、IPv4 ですよ) に完全互換の唯一の OS
だということと、Linux 2.4 は前のバージョンよりもよりスケーラブルな IPv4
の実装を誇っているということです。
Linux 2.2 が仕様に完全互換になるに従い、
エイリアスでのコロンモードの使用は推奨されなくなりました。
この機能は Linux 2.4 では完全に取り除かれ、先進的なユーザはスクリプトを書き直す必要があるかもしれません。
※ ここは(勉強不足のため)何のことだか意味不明です。
linux-2.3.19 においても、IP エイリアシングの ":" 記法のコードは健在です。
また、これが IPv4 の仕様と関係があるとも思えません。
ご存じの方は是非教えて下さい。
お願い致します。
新しいネットワークレイヤの次に、 Linux 2.4 ネットワークレイヤで 2番め
に重要な改良点は、 DECNet プロトコルを取り扱うコードの追加です。 これ
により、Digital/Compaq に特化されたシステムとの 相互運用が改善されるこ
とになります。
ローエンドのデスクトップユーザにとっては、 PPP が重要な普段の生活の一
部ですよね。 Linux 2.4 には、長い間待たれていた、 ISDNレイヤからの PPP
レイヤとモデムのようなシリアルデバイス上で使用されているPPP レイヤとの
統合を 始めとして、 コードの多くの部分において大幅な書き直しやモジュー
ル化などが含まれています。
|
|
wwol 2.4
|
Linux 2.4 はその新しいデスクトップ向けの機能により、
「デスクトップ」Linux として知られるようになるだろうと総じて私は感じています。
(しかし、この文書でご説明させていただいたように)
Linux 2.4 はサーバや組み込みシステム向けに多くの素晴らしい機能を
備えていますので、誰かがこの(デスクトップ Linux としての 2.4 という)件に
関しまして私の文を引用するようなことがないことを願っています。
※ この文書の初期のバージョンではこのような記述は見当たりませんでした。
もしかしたら、これは、Cnet の
Linux improvements should appeal to desktop market (英語。日本語訳は見つかりませんでした。)という Stephen Shankland 氏の記事のことを指しているのかも知れません。^^;
この記事では、Pranevich 氏のこの文書の最初のバージョン
(デスクトップ向の記述は最終版よりもより少なかったです)を
紹介しつつ、Linux 2.4 は、
パソコンとしてのデスクトップマーケットにアピールするだろうと
結論付けています。
核心においては、本質的な違いはないでしょう?
これは最終バージョンです。
もし、あなたがいま頃までコメントをしていなくて、あなたが重要だと思う何かを私が見逃していたなら、どうか私に jpranevich@ linuxtoday. com まで E メールを送って下さい。パッチを出すかもしれません :)
(※ 翻訳上の誤りを発見された方や、
付加的な訳注解説をご提案される方、
日本語で関連文書を作成された方は、
ChangeLog までご一報下さい。
よろしくお願い致します。)
|