3月版 Greg K-H、デバイスドライバ無料開発宣言!?


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

デバイスドライバのライセンスはGPLで

 Greg K-Hは「Free Linux Driver Development!」というメールで「仕様をもらえればデバイスドライバを無料で開発してあげる」と宣言しました。一部の好意的な反応もあり、デバイスドライバの開発につながったようです。

 なぜ、このような宣言をしたのでしょうか? 実は、それには理由があります。

 Linuxカーネル自体はGPLなのですが、一部のLinuxカーネル対応のデバイスドライバは、諸所の事情でGPLで公開されていないものがあります。当然、GPLで公開されていないデバイスドライバは、Linuxカーネル本体にマージされません。そのため、提供元は、新しいカーネルバージョンがリリースされるたびにサポートを継続し続けなければなりません。サポートが停止してしまうと、新しいカーネルに対応できないなどの弊害が起こる可能性もあり、好ましくありません。そこで、Greg K-Hはこのような宣言をしたのです。

 実は、この問題を回避するための仕組みがいくつか存在します。最近では、Linuxカーネルのプログラミングインターフェイスの中で「EXPORT_SYMBOL_GPL」を利用して、エクスポートされているものがあります。これは“モジュールをロードした際に、MODULE_LICENSE文で「このモジュールのライセンスはGPL互換である」と宣言していない場合はその関数が利用できない”というものです。この仕組みを利用している代表例として、「sysfs」の仕組みがあります(注)

注:2005年4月版 カーネル2.6.11.yのメンテナは嫌なヤツ?を参照。

 また最近では、込み入った回避策を利用しているモジュールもあります。“\0で文字列をいったん終端させ、違う内容を続けて書く”というものです。意訳すると、「GPL\0じゃない部分もあるよ」というものです。これを使うとsysfsも実は利用できてしまうのです。

MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only LICENSE file applies");

 これを良くないと思っているJan Engelhardtたちは、MODULE_LICENSEに\0が入っているかどうかを検出するパッチを作成しました。とはいえ、module-init-toolsに改変が必要になるので、そのまま受け入れられるわけではないと思います。このようないたちごっこを展開するよりももっと生産的な活動をしてほしいものです。

ノートPCのサスペンドで悩む日々

 ノートPCなどで活用されている「Suspend 2(ディスクにサスペンドするための仕組み)」の作者Nigel Cunninghamは、LKMLに「パワーマネジメントは普及した。Linuxカーネルのサスペンド・リジューム機構に対応していないデバイスドライバは、今後マージしないという方針はどうだ?」と提案しました。サスペンドに対応していないデバイスドライバがロードされていると、通常サスペンドは失敗してしまいます。サスペンドするためには“ノートPCに使われるであろうデバイスドライバが、サスペンド時にデバイスごとに必要な処理を実施する”仕組みに対応していることが必要です。

 ノートPCの利用者から見ると当然の要求ですが、反応はさまざまでした。Willy Tarreauは、サーバ用途の観点から「サスペンドを実装するよりは、必要なデバイスドライバが実装されることの方が優先度は高い。ノートPCで利用しているユーザーは少ないのでは?」と意見しました。

 今後もしばらくはノートPCでLinuxを利用しているとサスペンドができないという症状(それに伴う対処方法)に悩む日々が続きそうです。

関連リンク:
Suspend 2
http://www.suspend2.net/

活発な-stableリリース! しかし、ミスも……

 今月も順調に-stableリリースが出ていたようです。

 Adrian Bunkのメンテナンスしている2.6.16系統のツリーが、特に活発にメンテナンスされています。その中には、「ソースコードのコメントに書いてあるメールアドレスの変更をした」というささいなものから「サポートしていないBluetoothデバイスのサポートをいったん追加したけど動かないので元に戻した」という“?”なパッチまで見られます。

 -stableリリースに関しては、極力ミスを減らしてほしいものです。

  • 2.6.19.3(2月6日)
    ・cond_resched_softirqのオフセットを修正
    ・NETFILTERのxt_connbytesのdivision by zeroを修正
    ・i2c-mv64xxx:起動時のoopsを修正
    など59パッチ
  • 2.6.19.4(2月20日)
    ・nfs/aclサーバで間違ったポインタをfreeしているバグを修正(CVE-2007-0772)
    以上1パッチ
  • 2.6.19.5(2月24日)
    ・knfsd:NFSD接続を切る際のrace conditionを修正
    ・key_alloc_serial:ランダムなキーを取得する際にキーが重複するのを回避(CVE-2007-0006)
    ・8139too:netpollのデッドロックを回避
    など20パッチ


  • 2.6.20.1(2月20日)
    ・nfs/aclサーバで間違ったポインタをfreeしているバグを修正(CVE-2007-0772)
    以上1パッチ

  • 2.6.16.40(2月10日)
    ・reiserfsでmmapされたinodeについてはtail packingしないようにする
    ・ソースコードのコメントに書いてあるRudolf Marekのメールアドレスを修正
    ・md/raid1:raid1でrepairが動いていなかったのを動くようにする
    など11パッチ


  • 2.6.16.41(2月15日)
    ・UML:シグナルのフレームのアラインメントを修正
    ・パッチ"[Bluetooth]Fix compat ioctl for BNEP,CMTP and HIDP"が2.6.16では動かないので外す
    ・IPXモジュールをアンロードの際のNULLポインタの利用を修正
    など15パッチ


  • 2.6.16.42(2月26日)
    ・key_alloc_serial:ランダムなキーを取得する際にキーが重複するのを回避(CVE-2007-0006)
    ・bad_inode_opsのメモリ破壊を修正(CVE-2006-5753)
    ・nfs/aclサーバで間違ったポインタをfreeしているバグを修正(CVE-2007-0772)
    など15パッチ

(以上、敬称略)

2/2

Index
Linux Kernel Watch 3月版
 Greg K-H、デバイスドライバ無料開発宣言!?
  Page 1
 ノートPCや組み込み機器に有効な新機能とは?
 非同期システムコール機構の登場!
 ネットワークデバイスの変更をログに残すべきか?
Page 2
 デバイスドライバのライセンスはGPLで
 ノートPCのサスペンドで悩む日々
 活発な-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 記事ランキング

本日 月間