11月版 「ext4」が見えてきた! ついに利用方法公開


上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/12/1

linux-kernelメーリングリスト(以下LKML)かいわいで起きるイベントを毎月お伝えする、Linux Kernel Watch。2006年10月はどのようなことが起きたのか、見てみましょう。

大混乱? 2.6.19-rcリリース

 10月5日、Linus Torvaldsは「2.6.19のマージウィンドウを閉じた」という宣言とともに新しい機能の追加をいったんやめ、2.6.19-rc1を発表しました。そして、これを受けてAdrian Bunkはその時点で残っていた問題点の一覧を投稿しました。その後-rc2、-rc3、-rc4と、10月中に計4回もリリースされました。

 最初にリリースされた-rc1の変更点の中で、ユーザーに一番影響を与える内容はおそらくシリアルATA(SATA)ディスクのドライバが「drivers/scsi」から「drivers/ata」に変更となったことでしょう。その影響で、設定言語であるKconfig上のSATAディスクのドライバ名称が変更になり、新しいバージョンにアップデートしてmake oldconfigして設定を標準に戻してもSATAディスクのドライバが選択されません。そのため、カーネルをコンパイルして新カーネルでリブートしたら、「SATAのディスクが見えない」というカーネルパニックメッセージが表示された方も多いのではないでしょうか?

 また、-rc2でも大きな変更がありました。これまで割り込み要求(IRQ)ハンドラで関数呼び出しのパラメータとして使われていた「regs」をCPUごとのグローバルな変数として定義するように変更したのです。これは、David Howellsからの提案でマージされたパッチで、IRQ割り込みにかかわるドライバ、つまり実質的にほぼすべてのドライバに変更が入る大規模な修正となりました。「IRQ:Maintain regs pointer globally rather than passing to IRQ handlers」のコミットで変更されたファイル数は1079もありました。一見すると、grepなどを活用すれば機械的に作業できそうな変更に思えます。しかし、実際にやってみるとLinusの管理しているカーネルソースツリー以外にも、外部でメンテナンスされているドライバが含まれるため影響範囲が広い変更となっています。

-rc2で変更されたregsの使用例:
generic_handle_irq(cascade_irq,regs);
regsを関数呼び出しのパラメータとして使っていた
       ↓
generic_handle_irq(cascade_irq);
regsを関数呼び出しのパラメータとして使わなくなった

カーネルイメージがリロケーション可能に

 Vivek Goyalは「Relocatable kernel support」という一連のパッチを投稿しました。これは、Eric Biedermanが9月に投稿したものを改良したパッチで、CONFIG_RELOCATABLEが設定されている場合にカーネルのロードアドレスをロードの際に決定するというものです。

 現状、kdumpを利用してダンプ処理用のカーネルをkexecでメモリ上にロードすると、ダンプ対象のメモリ空間を破壊しないように開始アドレスをずらし、利用していないアドレスにカーネルをロードします。カーネルの開始アドレスは固定であるため、開始アドレスを変更するには別のカーネルイメージを用意する必要があります。

 今回のパッチを適用すればカーネルイメージがリロケーション可能になり、別のカーネルイメージを用意する必要がなくなります。つまり、kdump用のカーネルを別途作成せずに、同じカーネルを別のアドレスにロードできるのです。kdumpは今後普及が見込まれているので、このパッチが標準としてマージされれば複数のカーネルをメンテナンスする必要がなくなり、とても便利になります。

参考:
Eric Biedermanのreloc gitツリー
git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/linux-2.6-reloc.git#reloc-v2.6.18-rc3

Linus「あまり頻繁にマージしないで」

 Pierre Ossmanは、ソースコード管理ツールである「git」を使いこなしている人たちに対して「どのような使い方がよいのか教えてほしい」という質問を「Git training wheels for the pimple faced maintainer」というスレッドに投稿しました。このスレッドでは、一連の小技や最近のgitのワークフローなどが投稿されているので、その一部を紹介します。

 Linusは「git上でlinusブランチを作ってLinusのソースツリーをトラッキングして、自分のパッチ作業用にfor-linusブランチを作成したらどうか」と回答しました。また、「Linusツリーにマージしたいときが来たら、for-linusブランチのアドレスを連絡してほしい」と付け加えました。さらに注意事項として「gitの管理する履歴情報が複雑化するため、コンフリクト(機能拡張などを行った際に複数のソフトウェアモジュールで干渉すること)が発生する場合以外は、あまり頻繁にマージはしないでほしい」「別の手段として、rebaseという方法もある」とも述べています。

 一方、Andrew Mortonは-mmツリーについて「マージしてほしいツリーのURLとブランチ名を連絡してくれたら、マージするよ」と述べました。また、彼はマージ作業について「通常は1日1回作業をしている。現状、-mmツリーは70人くらいにコミット権限があるツリーなんだ」と説明しました。毎日小まめに手動で全ツリーをマージしているAndrew Mortonには脱帽です。

1/2

Index
Linux Kernel Watch 11月版
 「ext4」が見えてきた! ついに利用方法公開
Page 1
 大混乱? 2.6.19-rcリリース
 カーネルイメージがリロケーション可能に
 Linus「あまり頻繁にマージしないで」
  Page 2
 ファイルシステム「ext4」に動きが!
 急なエラーもこれで安心
 unionfsがメインラインカーネルにマージか
 寂しい10月の-stableリリース

連載 Linux Kernel Watch


 Linux Squareフォーラム Linuxカーネル関連記事
連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします
連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
特集:全貌を現したLinuxカーネル2.6[第1章]
エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する
特集:/procによるLinuxチューニング[前編]
/procで理解するOSの状態

Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する
特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
Linuxのカーネルメンテナは柔軟なシステム
カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間