|
aka LWN JAPAN |
|
|
ChangeLog |
カーネル [1999/9/16〜29]
Section Editor: Jonathan Corbet
|
ChangeLog |
|
今号では、9月16日から29日までのカーネル関連ニュースをお伝えします。
基本的に新しいもの順(新しいニュースが上) になっておりますので、 ご注意下さい。 |
||
|
カーネル [1999/9/23〜29]
Section Editor: Jonathan Corbet
|
||
| まず、 1999年9月23日〜29日の カーネル関連ニュースをお伝え致します。 | ||
|
|
||
早く帰って来て Linusこの記事の執筆時点では Linus は姿を消したままです。※ Linus は、フィーチャーフリーズ宣言 と同時に、しばらくオフを取ると宣言(日本語)していました。このため、このところオフィシャルカーネルのリリースは行われていません。 Alan Cox 氏は、安定版/開発版の両方でパッチを蓄積し続けています。 安定版では、 2.2.13pre14 (英語) までが Alan によってリリースされています。 このパッチは、現時点でも印象的な数のパッチを含んでおり、 リリース版の候補と考えられています。 しかしながら、ここでカーネルハッカーの方々は、 最近突き止められた SMP IDE ハングのバグをどうやって修正するのかを、まず、 考え出さなければなりません。 一方、開発版では、パッチは 2.3.18ac10 (英語) まで出ています。 |
||
|
|
||
デバイスドライバはカーネルソースの一部であるべきか?デバイスドライバは、カーネルのソースツリーの一部である べきなのでしょうか? 今週、一見無邪気に思われる質問によって、 この古くからある論争が燃え上がりました。デバイスドライバ開発者のほとんどは、 自分達のコードが主流カーネルの一部として配布されるように努力するのですが、 その一方、ドライバは分離して保守され、配布されるべきだと考える方々もいます。 この観点からの主張は以下の通りです:
|
||
|
|
||
カーネル開発のプロジェクト管理システムプロジェクト管理システムとして、カーネルは何を必要としているのでしょうか?カーネル向けプロジェクト管理システムの仕様の第 2版 (英語) が出ています。ソースコード管理や、バグの追跡等が扱われています。 野心的な提案で、 実際に構築されることはないだろうとも思われる 基盤技術も多く挙げられています。 カーネルハッカーの方々は、 (※プロジェクト管理システムを強要されるなら) むしろハッキングを止めたいと思うでしょう。 最初の版では、 (その真価は別として) この役割を Aegis に担わせることが提案されていました。
※ Aegis - ソフトウェアの更新を管理するシステムです。地球規模で分散した開発をサポートしており、開発チームのメンバがそれぞれ独自に行なった変更を、一つに統合することを支援します。最新版は 3.19 であり、GPL に基づいて配付されています。これは、Aegis 支持者と、 もうすぐカーネルソースの管理システムになると見なされている BitKeeper の支持者との間の、 小さいけれども激しいフレームウォーを引き起こしました。
※ BitKeeper - BitMover 社のソース管理システムです。Aegis と同様に地球規模で分散した開発環境でのソース管理をサポートします。これは古くから UNIX で使われて来たソース管理システムである sccs をベースにしていますが、現代風にグラフィカルなインタフェースも備えています。ホームページ (英語) によると現在はβテスト中とのことですが、一般向けには公開されていません。(見たところ BitKeeper は、すでに Merced への移植プロジェクトで使われています。) ※ Merced - Intel 社の次期 CPU の開発名称です。Intel 社は Merced で動作する Linux を開発するために努力しています。詳細はそれほど面白いというわけではありません。 BitKeeper が一般向けにリリースされるまでは、 このような論争に決着は付かないでしょう。 |
||
|
|
||
今週のその他のパッチとアップデート今週のその他のパッチとアップデートは以下の通りです:
|
||
|
カーネル [1999/9/16〜22]
Section Editor: Jonathan Corbet
|
||
| 次に、1999年9月16日〜22日のカーネル関連ニュースをお伝え致します。 | ||
|
|
||
Linus は今週もお休み今週 Linus はまだお休み中ということで、 主流カーネルのリリースはありませんでした。 けれども開発のほうは依然として活発に行なわれており、 Alan Cox 氏によりすべてがまとめ上げられています。開発版の方では、 2.3.18ac8 (英語) が出ています。 このパッチは、(巨大な)バグ修正の集まりになっています。 これは、現在フィーチャーフリーズが実行されていることを考えると、 適切なことです。 「超」安定した 2.4 のリリースに向けて、着実に前進が続いています。
安定版の方では、
2.2.13pre9
(英語)
までパッチが出ています。
※ カーネルリリースの最新情報はこちら(日本語)をご確認下さい。以前から宣言されている(日本語)ように、このパッチの目的は、 いくらかより危険を伴う変更 (knfsd の修正のような) を 2.2.14 に含めることができるように 素晴らしく安定した 2.2.13 を作ることです。 |
||
|
|
||
カーネルハッキング HOWTOカーネルハッキング HOWTO が Paul Rusty Russell 氏により リリース (英語) されました。Linux カーネルに統合されるべきコードを書くための、 最初の入門書になることが目的とされています。 Rusty によると、 「私はひどく不適任なので、 このドキュメントを(本当は)書きたくはなかったんです。 どうか分かって下さい。でも、いつも、こういうドキュメントを 読みたいと思っていて、自分で書くしかなかったんです。 私は単純に、最も良い慣例を説明し、 カーネルハックを始めるのに必要となる、最も一般的なものの 80% をカバーする ことを目指しました。」主に 2.3 カーネルを解説したこのドキュメントは、 Linux 開発コミュニティにはありがたい貢献です。 |
||
|
|
||
Ext3 サポートの日は近い --- ジャーナリング機能の実装もExt3 がサポートされる日が近付いています。Stephen Tweedie 氏の ext3 パッチの第1弾は、2 週間前から 同氏の FTP サイト (英語) で公開されています。 最初のリリースは 2.2.2 カーネルでのみ動作する他、 いくつか知られている障害があります。 新しいリリース (0.0.2) は、「すごくすぐ」 リリースされることが約束されており、 さらに 2.2.12 もサポートするはずです。 なぜジャーナリングが有用なのでしょうか? 一言で言えば「システムがクラッシュした後で fsck が終るのを 待たなくてもよくなるから」。 詳しく説明するには、若干の背景となる知識を必要とします。 ファイルシステムとは、ディスク上に構築された複雑なデータの構造物です。 単純に見える操作でも、 ディスク上の何ヶ所かへの変更を起こすことになり得ます。 例えば、 新しいデータをいくらか、ファイルの末尾に付け加えると、 明らかに、 新しいデータがディスクに書き込まれる必要があります。 また、新しいディスクブロックの割り当てが必要となるかもしれないので、 ファイルのブロックポインタや、 i ノード、空きブロックのリスト、 そしておそらくはディスククォータのデータベースの更新も必要になるかもしれません。 ※ ディスクブロック - ファイルシステム中でデータを格納する領域は、ある固定サイズのブロック単位で管理されています。例えば ext2 ファイルシステムのデフォルトでは 1024 バイトのブロックサイズが使用されます。ファイルの末尾に新しいデータを付け加えた結果、現在使用中のブロックに収まりきれなくなった場合、新しいブロックの割当てが必要となります。 充分にデバッグされたファイルシステムでは、これらの動きはすべて、 ユーザのあずかり知らぬ所で行われます。 けれどもそのユーザが、電源コードの場所についてもその無関心さを発揮して、 システム全体をダウンさせる時には、問題は顕在化します。 もし、新しいディスクブロックが既に割り当てられていたのに、 ファイルのブロックポインタが更新されていなかったなら、 そのディスクブロックは永久に床に転がったままになってしまいます。 もし空きブロックのリストへの変更が書き込まれていなければ、 後になってディスクブロックが第二のファイルに誤って割り当てられてしまう可能性があります。 本質的に、 一つの操作に必要な「全ての」変更がディスクに書き込まれていない限り、 クラッシュの結果、矛盾する混乱が招かれます。
古典的 Unix のこの問題の解決法は、
fsck と呼ばれる、役に立つ可愛い :-) ユティリティです。
fsck の仕事は、
ファイルシステム全体を堀り返して何らかのデータ構造の矛盾を見つけ出し、
何とかしてそれらを全部修正してしまおうとすることです。
Linux の fsck はこれについて、かなり良い仕事をしますが、
(1) そういった恐ろしいメッセージが流れて行くのを見ているのは楽しくない。
(2) 非常に長い時間がかかる
(巨大な RAID ボリュームを fsck したことがある方ならお分かりでしょう)。
※ ほとんどのシステムで、クラッシュ後にシステムを再起動すると自動的に全てのファイルシステムに対して fsck が実行されるようになっています。これはクラッシュ後の再起動には (実際にファイルシステムが壊れているかどうかにかかわらず) 長い時間がかかる事を意味しています。というわけで、たとえ fsck がすべてを完璧に修正してくれるとしても、 そうする必要は、ない方がずっと好ましいでしょう。 ジャーナリングは、この必要性をなくすことができるのです。 ジャーナリングにおいては、 ディスクのある領域(「ジャーナルファイル」)が ファイルシステムが使用する部分とは別に確保されます。 ファイルシステムが変更される際、 行われるべき変更はすべてジャーナルファイルに記録され、 そしてディスクへ書き込まれて、 その後、すべての書き込みが完了していることを示すために、 特別な「コミットレコード」が記録されます。 一度すべての変更がジャーナルファイルに書き込まれてからのみ、 実際のファイルシステム構造への変更を開始します。 これで、もしユーザがフロッピーの取り出しボタンと電源スイッチを間違えても、 修復は簡単です。 コミットレコードと共にジャーナルファイル中に記録されたすべての変更は、 ファイルシステム構造自体の中にコピーされます。 それ以外 (※コミットレコードがない) はすべて単に捨てられます。 ファイルシステムの整合性は保護されるよう (最初から)保証されており、fsck は必要ありません。 システムはすぐに復旧することができます。 Stephen のジャーナリングパッチは、非常に賢い方法で作られています。 標準的な ext2 ファイルシステムの構造は何も変更されていません。 通常の状態では、ext3 ファイルシステムは ext2 ファイルシステムとして 何の問題もなくマウントすることができます。 ジャーナルファイルについても、 まったくファイルシステム中の単なる普通のファイルです。 このため、変換ユティリティは必要ありませんし、 ext3 が動かなかった時に ext2 に戻すための心配をする必要もありません。 これは優れた作品です。 いったん安定すれば、Linux への非常に喜ばれる機能追加となるでしょう。 |
||
|
|
||
統合された PCMCIA ドライバの状況2.3 カーネルに統合された PCMCIA ドライバ(日本語)の状況が、 今週 David Hinds 氏によって 明らかにされました (英語)。※ PCMCIA - ノートパソコン等の拡張スロットに装着して使用する、ノート用モデムやノート用 SCSI カード等の PC カードのことです。一言で言えば、 真剣にデバッグしたいのでなければ今入っている PCMCIA のコードはまだ無視して、 別に配布されているパッケージ (※ pcmcia-cs パッケージ) を使用することが勧められています。 2.3.18-ac シリーズのパッチでは、 すでに多くの問題が修正されていますが、 まだやるべき仕事はたくさん残っています。 また、(少なくとも当分の間は) 別立ての PCMCIA パッケージを使用する 必要があるだろうということも指摘しておいたほうが良いでしょう。 カーネル内の他の機能と同様に、 PCMCIA もユーザ空間で動作するデーモンの助けを必要とします。 このため、PCMCIA 自体がカーネルに含まれたとしても、 cardmgr (※カードマネージャ、PC カードの抜き差しを監視します) デーモンを含むパッケージは今後も不可欠です。 |
||
|
|
||
今週のその他のパッチとアップデート今週のその他のパッチとアップデートは以下の通りです:
|
||
|
|
||
PCMCIA ドライバを主流カーネルに含めるべきか?※PCMCIA がカーネルパッケージ内でサポートされるようになりました(日本語)ので、ChangeLog ではカットされていた LWN 1999年6月10日号掲載の記事をお伝え致します。PCMCIA ドライバは主流カーネルに含められるべきでしょうか? これは新しい問題ではありませんが、 最近の Linus の力強い口調のメッセージにより、新たな勢いを得ています。 彼は明らかに、現状の PCMCIA の状態に満足しておらず (「ムカつく」と言っています)、 新しい PCMCIA の開発を最初から開始するように (USB の時と同じように)脅しをかけています。 David Hinds 氏 (Linux に PCMCIA をもたらした人物) は、 当然、そのコメントにちょっとびっくりしました。 PCMCIA を標準カーネルに含めることの利点 (カーネルの変更により良く追従できる、 別々のパッケージをインストールしなくても良い) vs 別々にしておくことの利点 (すべてのバージョンのカーネルに新しいカードのサポートを追加できる、 Linux 以外の OS をサポートできる)についていくらかの議論が続きましたが、 その後しばらくしてから本当の問題が明らかになりました。 どうやら Linus は彼の ピカピカの Sony Vaio ノートに Linux をインストールしようとして、すごくやっかいな事になったようです。 Linus は、「自分」が Linux をインストールするのに苦労するなら、 少なくとも幾人かのユーザは少しひるんでしまうかもしれない、 と考えていて、これは彼には我慢ならないことでした。 いったん、本当の問題が掘り出されると、より具体的で技術的な議論が行われました。 David Hinds 氏は彼の考え方で、 この問題を まとめて (英語) います。 この解決策の核心は、 PCMCIA を部分的にカーネルに含めない、ということのようです。 そうではなく、 ブート時にシステムの BIOS によって既に初期化されセットアップ済みの デバイスを使うことができるように、 カーネルが PCMCIA について必要最低限のことを理解していれば、 問題の大部分はなくなるでしょう。 この線での解決策が、2.3 シリーズのどこかに入るようです。 (最初の一歩は Werner Almesberger 氏のこのメモ (英語) に見ることが出来ます。氏は既にこの機能のいくらかを実装しました。) |
||
|
|
||
関連 URL
|