2月版 紛糾! 安定版カーネルの「あるべき姿」とは?


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

安定版カーネルのあるべき姿とは? で激論

 1月の-stableリリースは、いつもと様子が違っていました。2.6.15がリリースされた後も、2.6.14向けの-stableがリリースされ続けたのです。Greg K-Hによると、「これはぜひリリースしてほしい」というパッチが提案されたので仕方なく対応したとのことで、「今後もやるということではない」と説明していました。結果として、1月は-stableリリースは2.6.14系と2.6.15系が並行してリリースされたというわけです。

  • 2.6.14.6(1月7日)
    ・Sun Blade100向けのフレームバッファの修正
    ・/procの修正(CVE-2005-4605)
    など、5個のパッチ
  • 2.6.14.7(1月30日)
    ・ip_nat_pptpのセキュリティホール(CVE-2006-0037、CVE-2006-0036)
    ・SPARC64でptraceが動かないことの修正
    ・SPARC64でsys_fstat64のシステムコールテーブルが間違っていたのを修正
    ・NetFilterでTCP/UDPでないIPフラグメントにおいてポートを確認しないようにする
    など、6個のパッチ
  • 2.6.15.1(1月14日)
    ・/sys/class/net/<if>/wirelessがなくなってしまったのを戻すパッチ
    ・netlink_rcv_skbのDOS CVE-2006-0035
    ・ip_nat_pptpのセキュリティホールの修正(CVE-2006-0037、CVE-2006-0036)
    など、17個のパッチ
  • 2.6.15.2(1月30日)
    ・reiserfs v3のマウントオプションの修正
    ・IPC mqueueのセキュリティホールの修正(CVE-2005-3356)
    など、11個のパッチ

 これと関連して、「現在のペースでは安定版カーネルが3カ月に1回変わってしまい、利用しにくい」という意見が出ていました。それに対して、「6カ月間-stableリリースをメンテナンスするというのはどうだ」という提案がありました。この案に従うと、複数の-stableリリースを同時にメンテナンスすることになるため、メンテナに負荷が掛かります。今回のGreg K-Hのリリースはその布石かと期待した人もいたかと思いますが、特にそういうわけではなかったようです。

 安定版カーネルの存在意義についての議論は、激しく展開されています。1月に大きな話題になったのは、次の提案についてです。いずれも議論の末、実施は延期されることになりました。

  • /proc/pciの廃止
    lspciコマンドを利用したらよい。
  • RAWデバイスの廃止
    O_DIRECTを使えばよいのだが、RAWデバイスを利用しているアプリケーションが多い。
  • 不要なOSSドライバをまとめて削除
    ALSAのドライバがあるものはそちらを使うべき。

 このような変更が発生するのは「安定版」カーネルとしてふさわしいのか。しかしメンテナンスされていない機能をいつまで残しておくべきなのか。簡単に結論は出せそうにありません。

仮想化プロジェクトは百花繚乱

 Linuxによる仮想化システム構築を目指す「Linux VServer Project」というプロジェクトがあります。これは、Linuxカーネルは共有するが、ユーザー空間のアプリケーションは分離させるというモデルの仮想化システムです。

 その性質上、ほかの部分にも影響を及ぼすためそのままマージできるようなパッチではありませんが、LKMLに活発にパッチを投げていました。その中で、例えばプロセスを識別するためのPIDを仮想化するパッチなどが議論になっています。

 現状のファイルシステムはcloneシステムコールを拡張して、名前空間を複数持つことができるようになっています。それを応用して、「PIDも名前空間を分離したらどうか」という意見が出ています。これが実現すると、アプリケーションによりますが、単純なchrootではプロセス空間が分離できなかったことによる問題が解決できます。また、User Mode Linuxなどのアプローチでオーバヘッドが大きくなる問題も解消します。

 仮想化については多くのアプローチがありますが、いろいろな手法を選択できるようになる方向で動いているようです。

関連リンク:
Linux VServer Project
http://linux-vserver.org/

デュアルコアでコア同士の時間がズレる

 以前お伝えしたRDTSC問題は、相変わらず議論が続いています。Pentium以降のx86アーキテクチャ互換CPUにはTSC(タイムスタンプカウンタ)という、クロックごとに数が増加する機能があります。これは時間の経過をモノトニックに確認できる手段として期待されており、その目的でアプリケーションはTSCを利用しています。RDTSC命令を利用してTSCを利用する手法の特徴として、ユーザー空間からシステムコールを発行せずに時間情報を取得でき、しかも高速である、という点が挙げられます。

 残念ながら最近のデュアルコアAthlon X2では、HLT命令(CPUがアイドルであることを示すための命令)を発行するたびに、それを発行したコアではTSCカウンタが止まっているそうです。その影響で、コアによって時間についての認識がずれてしまうという現象が発生します。

 この問題の対処方法として、HLTから復帰した際に各コアのTSCを同期させようという意見が出ました。話題は、TSCを同期させる方法という実装面の検討へと向かっているようです。

関連リンク:
IA-32 Intel Architecture Software Developer's Manual, Volume 3B, Chapter 18
http://www.intel.co.jp/design/pentium4/manuals/253669.htm
AMD64 Architecture Programmer's Manual Volume 2: System Programming Rev 3.11
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24593.pdf

(以上、敬称略)

2/2

Index
Linux Kernel Watch 2月版
 紛糾! 安定版カーネルの「あるべき姿」とは?
  Page 1
 カーネル2.6.16開発開始
 Joerg Schilling大いに暴れる
 メモリ空間を2Gbytesずつに分割するVM登場
 GPLv3ドラフト公開、Linuxはどうなる?
Page 2
 安定版カーネルのあるべき姿とは? で激論
 仮想化プロジェクトは百花繚乱
 デュアルコアでコア同士の時間がズレる

連載 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 記事ランキング

本日 月間