Linux Kernel と GPL 関連

<Home> → <My Glossary Index> → <[news] ソフトウェアライセンス関連> → <Linux Kernel と GPL 関連>

GPL License を採用している Linux Kernel に関する問題を纏めています。

今日、Linux Kernel は様々な用途で使用されていますが Linux Kernel は GPL を基に開発されている為、Business 用途での利用が難しい面があります。特に知的所有権や NDA に絡めて、Source を公開出来ない分野(組み込み機器等)で問題になることが多いです。

今後は、企業から見た GPL による「無償」と Linux Kernel 開発者の目指す「自由」との差を埋めることが重要になってくるのではないかと感じています。

問題点は以下の通り。

GPL に関しては <GPL/LGPL 関連> をどうぞ。
Linux Kernel に関しては <Linux Kernel 関連> をどうぞ。
組み込み系で使用される Linux Kernel に関しては <組み込み Linux 関連> をどうぞ。
SCO 社の Linux Kernel と GPL に関する見解については <UNIX に関する知的財産権の侵害を主張する SCO 関連> をどうぞ。

この page は <ソフトウェアライセンス関連> の特設 page です。


ライセンスを欺いた Linux Kernel module とその顛末

本来、GPL として公開されていない Linux Kernel module が、システム読み込み時に警告メッセージ(tainted メッセージ)を表示させないよう、小細工していることが問題になっています。

MODULE_LICENSE Macro とは

Linux Kernel 2.4.10 より、module に適用されているライセンスを示すため MODULE_LICENSE Macro に自分のライセンスを埋め込む仕組みが追加されました。その中のライセンスの内、Linux Kernel に適用されている GPL と背反しない以下のライセンス以外については tainted メッセージが表示されます。

上記のライセンスの文字列は ./include/linux/module.h に格納されています。

tainted メッセージとは

GPL と背反する Linux Kernel module が読み込まれる際に警告メッセージが表示されます。以下は [[vmware-j:2653] VMware-Tools起動時の警告。] より VMware Tools に同梱されている vmhgfs が読み込まれた時の警告メッセージです。

Guest filesystem driver : insmod :
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
insmod : Module vmhgfs loaded, with warnings    [ok]

これは vmhgfs module が GPL と背反しているライセンスを適用しているので表示しています。

Linus さんは、この警告メッセージは障害報告用として表示しているだけで動作には問題がないとしています。tainted メッセージを組み込んだ理由として「ある問題をデバッグしようと膨大な時間をかけた後で、それがバイナリのカーネル・モジュールによって引き起こされたことが判明したことがあったからだ。代表的なものでは、nvidia 3Dアクセラレーション・ドライバがこれにあたる)。 」とのこと。

今回の問題点

Linuxant 社(DriverLoader の開発元で知っている人も多いだろう)が配布している HSF (softmodem) driver の MODULE_LICENSE に以下の文字列を挿入したことが問題となっています。

この文字列のキモは「\0」にあります。

C 言語では文字列内の「0\」を null termination として扱います。MODULE_LICENSE は上記の文字列を受け取ると「GPL」と同等の動作をおこないます。常識から考えて上記の文字列は MODULE_LICENSE を GPL と欺くために組み込まれたと思って間違いないでしょう。

以下は Linux-Kernel ML の流れです。

まとめ、というか後記というか

どう考えても License 警告を無視するよう意図的に仕組まれた文字列であることは確かでしょう。このことについては何ら弁解の余地は無いと思います。ただ、Linuxant の他の Driver については tainted メッセージが表示されている所を見ると、もしかしてライセンス表示を誤解している一般人とはライセンス元の Conexant じゃないかと邪推してしまいました。

Softmodem は、Linux Kernel にとって不肖の子、なのかもしれません。

ふと NEC の SCSI チェックを思い出してしまいました。立場は逆だけど。

Resource

#語れる人が少なくなりつつありそうなので、補足。

(04.05.05 : 追記)


Linux Kernel と NDA

#[PWC+PWCX の配布が中止になったらしい] を元に書き直しています。

Philips 社製のチップを使用した USB Camera driver (PWC) が Linux Kernel から取り除かれたことに対し、PWC 作者が開発を終了してしまいました。

今回、Linux Kernel メンテナンス担当が削除した理由は PWC の特殊性にあります。PWC を動作させるためには source を公開していない binary だけのドライバである PWCX を使用しなければなりません。Linux Kernel は GPL で公開しており、オープンソースからしてみても非公開の binary モジュールを Hook しなければならないモジュールはよもや許容出来ない範囲だったのかもしれません。

結局、メンテナンス担当との折り合いが付かず Kernel module から PWC が削除されてしまいました。PWC の作者はこのやり取りに嫌気が差したらしく PWC+PWCX の公開を中止したのが今回の経緯のようです。削除した時の作者の page には以下の記述がありました。余程腹立たしかったに違いありません。

So what can you do about it? Not much, unless the kernel maintainers ease up a little, and stop being such fundamentalistic turds.

PWCX を Hook しなければならなかった経緯については作者にも言い分があります。

元々 Philips の USB Camera の仕様は公開されておらず、作者は Philips 社と NDA を結んで開発を行っていました。NDA により、情報を守るためには sourece を公開することは出来ず、binary のみの公開にせざるを得ない状況にあったようです。後に作者は NDA の保守期間は切れているとのことでしたが、source を公開することで受けるかもしれない Philips 社からの賠償を誰も補償してくれない現状では公開出来ないと語っています。

今回の件は非常に残念なのだが、私は Kernel メンテナーも PWC 作者も責めることは出来ないと思います。彼も苦渋の選択で公開していたに違いないですし、メンテナンス担当も source の無いコードをこれ以上組み入れることは出来ないと判断したのも Linux Kernel のポリシーに反すると判断せざるを得なかったわけで、これも苦渋の選択だったに違いありません。

PWC の作者は今回の被害者はユーザーだとしています。ただ今回の加害者も実の所、ユーザーなのかもしれません。

(Update:04.09.29)
[Cliffのリストフィルタ:2004年9月14日〜9月19日(japan.linux.com)] によると PWC を元にした GPL 準拠の driver が開発されつつあるようです。

Resource


GNU/Linux

RMS が Linux と表記せず「GNU/Linux」と表記するのが正しい、と言い出したのが始まり。

Linux Kernel だけでシステムを構築することは不可能で、GNU プロジェクトの貢献は絶大であろう、と。それならば、敬意を表す面で「LinuxベースのGNUシステム」または「GNU/Linux」という言葉を使って欲しい、という主張のようです。RMS は活動家なんで、何を言わんか分からないわけではないが、アレかも。

実際、Debian GNU/Linux 以外はそのような表記はしていないようです。


Linux に GPL を適用した理由

Linus さんが Linux Kernel を GPL で公開した理由について語っています。


関連記事


<Home> → <My Glossary Index> → <[news] ソフトウェアライセンス関連> → <Linux Kernel と GPL 関連>
Copyright (c) 2003-2005 Makoto NARA (Mc.N), All rights reserved.
<Terms of Use>

Valid CSS! Valid HTML 4.01!