12月版 カーネルゆく年くる年、2009年に来る機能はどれだ?


小崎資広
2009/1/5

 あけましておめでとうございます。読者の皆さまは年末年始、いかがお過ごしでしたか?

 筆者は正月休みの間、stapgames(Systemtap Game Collection、注1)にハマっていました。半分ジョークソフトのようなものですが、SystemTapの上にさまざまなゲームを構築しています。

 SystemTapは「input(キーボードとかマウスとか)のサポートがない」「outputがprintfだけ」「スクリプト長に厳しい制限」と、およそゲームに向いているとはいい難い環境なのですが、ダメといわれるとやりたくなるのがハッカー魂のようです。

 筆者の一番のオススメは、ショートコーダー版テトリス(tetris_sort.stp)。わずか7行にまで縮められたテトリス・ルールの美しさと、キーボードドライバにprobeを打ち込んで無理やり入力を乗っ取るという強引さとが相まって、感動のあまり目から汗が出そうです。

 さてLKMLの状況ですが、12月24日、クリスマスに無事2.6.28がリリースされ、2.6.29のマージウィンドウが開きました。年末年始の休みの最中もLKMLは活況を呈しており(注2)、2009年も興味深いパッチが見られそうです。

 今回は、2008年に話題になりつつも惜しくもマージに至らなかった機能を中心に、2009年の新機能候補について語ってみたいと思います。それでは、どうぞ。

注1:http://sourceforge.net/projects/stapgames/

注2:中には、年始から毎日パッチを投稿するようなアホの子も。

次世代ファイルシステム、Btrfsのデビュー間近に

 秋のKernel Summitの段階では「2.6.29がターゲットリリースである」とAndrew Mortonに宣言されていたBtrfsですが、若干遅れが発生しているようです。

 Chris Mason(Btrfsの中心的開発者)は11月20日に「Btrfs trees for linux-next」というスレッドで、Btrfsがlinux-nextと結合しても問題なく動くことを確認したと説明し、linux-nextにbtrfsを含めるよう促しました。Chrisによれば、懸念となっていたディスクフォーマットの変更問題については、今後も変更はあるが、互換性を維持する仕組みを作ったのでユーザーに迷惑は掛けないとのこと。

 しかし、次のマージウィンドウまで1カ月しかない段階での大変更に対し、Stephen Rothwell(linux-nextの管理者)はAndrew Mortonに「まだlinux-nextに入れるべきと思ってる? それとも-mmマテリアルとして扱うべきかな?」と暗に反対の意見を表明しました。
  Andrewは「ほかのと同じようにlinux-nextで扱いたい。でも、まずはレビューが必要だ」と返し、この時点でのlinux-next入りは見送られました(よって、2.6.29でマージされる可能性は消えました)。

 その後、Chris Masonから12月31日に「Btrfs for mainline」というスレッドで再提案があり、現在も議論が続いています。しかしAndrew Mortonからは「btrfsって何だっけ? 名前は聞いたことある気がするけど、パッチを見た覚えがないんだよね」と、暗にコードレビューを再び求められているほか、何人かの開発者からコードのスタイル上の問題を指摘されています。

 結局、全部fixされるまで待つか、マージしてから直すか(Chrisはこれを支持)、それとも以前のext4のように特殊なマウントオプションを付けないとマウントできない開発者用リリースとしてマージするか(筆者はこれが好き)、の3択といったところです。

 いまからlinux-nextにマージされれば2.6.30に間に合うのですが、どうなるのか、引き続き予断を許しません。

関連記事:
リンク Linuxの次世代ファイルシステムは「バターFS」!?
http://www.atmarkit.co.jp/news/200807/10/btrfs.html

マージに向けスパートを掛けるTOMOYO

 皆さんおなじみ、日本発の本格セキュリティフレームワーク「TOMOYO」(注3)ですが、2008年の秋以降、メインラインへのマージに向けて大攻勢を掛けています。ほぼ毎月最新カーネルに対するパッチが投稿されている状況で、LKML開発者における知名度も相当なものです。

関連記事:
リンク 日本のセキュアOSを支える5つのプロジェクト
http://www.atmarkit.co.jp/fsecurity/special/100jpsecureos/jpsecureos01.html

 このTOMOYOのマージに向けた最大の懸念事項は、TOMOYO自身ではなく、LSM(Linux Security Module)の問題でした。LSMにhookが足りないため、パス名ベースのセキュリティモジュールがLSM上に実装不可能だったのです。

 これに対してTOMOYO teamは、vfsmountにLSM hookを追加する「introduce new LSM hooks where vfsmount is available」というパッチを提案し、それがVFSのメンテナ、Al Viro経由で2.6.29-rc1でマージされ、事態は大きく前進しました。

 本体に関する議論はだいたい出尽くしており、あとは何人かがReviewed-byを付け、securityのメンテナまたはAndrew Mortonが取り込めば、一丁上がりという気がします。

 ただ、筆者のようにサブシステムに関係なくReviewed-byを投下しまくっている連中からすると、TOMOYOは大き過ぎてちょっとレビューがしんどいのも事実です。「Singly linked list patch」など動作に必須でないパッチは全部落として、ミニマムパッチにしてくれるとレビューしやすいのに……とも思うのですが、多分、ミニマムパッチを作るよりも、フル機能をセキュリティ関係者にレビューしてもらった方がよいという作戦なのだと思います。

注3:http://tomoyo.sourceforge.jp/

Linuxにもアンチウイルスソフトを

 セキュリティ関係でもう1つ。いまどきWindowsマシンを真っ当に使おうとすると、アンチウイルスソフトの導入はほぼ必須ですが、LinuxやMacintoshはそういう状況にはなっていません。

 これには2つほど理由があります。1つは、アンチウイルスソフトの動作とは、本質的にウイルスパターンファイルを使ったブラックリストとの照合であるので、過去にウイルスが蔓延(まんえん)したことのあるOSでないとマッチさせるパターンが少なく、それほどセキュリティが向上しないこと。もう1つは、SELinuxなどのセキュリティフレームワークにより、Linuxでは許可されたプロセス以外は破壊的な動作ができなくなっており、これ以上の仕組みを求めるモチベーションがあまりなかったことです。

 そんなわけで、アンチウイルスソフト用のインターフェイスを提案しているEric Parisは、2008年の間ずっと、新しいアイデアを提案するたびに繰り返しセキュリティオタクからボコボコにされ、TOMOYOと並んで散々な目に遭ってきました。ですが最近、ようやくコンセンサスができつつあるようです。

 SELinux陣営から見ると、「自称」セキュリティソフトであっても、バグ(=セキュリティホール)が0であるとは信用できません。そして、セキュリティソフトのバグによりカーネルが誤動作するようなアーキテクチャは、SELinux単体で使っている場合よりもセキュリティを下げてしまうので、許容できません。かえって、それがセキュリティソフトを名乗っているだけタチが悪い、というわけです。

 しかしながら、例えばファイルサーバなどに利用する場合、クライアントはたいていWindowsマシンです。そうした環境では、LinuxマシンでWindowsのウイルス駆除をすることには意味があります(注4)。

 そういったいろいろな事情があり、現在は、カーネル内に直接アンチウイルス機能を実装するのではなく、inotify/dnotifyの仕組みを拡張し、ファイルを開いたときにそれがアンチウイルスソフトにちゃんと通知される仕組みを作ろうという活動にシフトしています。

 inotify/dnotifyというのは、ファイルを開いたり変更したりしたときに通知を受ける仕組みのことです。例えば「デスクトップ上のファイルを消したら、すぐさまデスクトップ画面を更新したい」「あるディレクトリ以下にファイルを置いたとき、すぐさまデスクトップサーチ機能のインデックス作成を開始したい」などの要求に応える、「誰でもいいからこのファイル/ディレクトリを触ったら教えて!」とカーネルにお願いするための機能です。

 2つのうちinotifyの方が後発だけあって高機能です。しかし、いくつかの分散ファイルシステムにおいては原理上dnotifyしかサポートできないので、dnotifyも引き続きサポートされています。

 活動の第一歩として、従来のinotify/dnotifyでは、execve()システムコールによる暗黙の実行ファイルのファイルオープンに対して通知を行っていなかった(のに、なぜかcloseは通知されていた)問題を修正するパッチが投稿され、無事-mmにマージされました。当然ですが、ウイルス検知という目的からは、実行ファイルこそが一番チェックしたい部分ですから、このパッチは必須も必須、必要不可欠だったのです。

 筆者も、この活動に対する反応があまりにもかわいそうので、最近レビューに加わっています。正直、今後も多難が予想される活動なので、温かい目で見守ってあげたいものです。

注4:加えて、日本では組織によっては、OSによらず一律にアンチウイルスソフトの導入を義務付けているところもあります。たとえセキュリティ上効果がなくても、「インストールされていること」自体に意味があるケースもあるため、恩恵をこうむる人も出てくるのではないでしょうか。

10月版へ
1/2

Index
Linux Kernel Watch 12月版
 カーネルゆく年くる年、2009年に来る機能はどれだ?
Page 1
 次世代ファイルシステム、Btrfsのデビュー間近に
 マージに向けスパートを掛けるTOMOYO
 Linuxにもアンチウイルスソフトを
  Page 2
 Googleからクレーム「Linuxでは負荷監視ができない!」
 -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 記事ランキング

本日 月間