プロプライエタリ・ドライバによるLinuxカーネルの「汚染」

Slashdotなど、さまざまな媒体で報じられているとおり、Linuxカーネル上で動作するプロプライエタリなモジュールの一部が、そのライセンシングを偽装していたことが、Linuxカーネルのハッカーたちによって明らかにされた。

これは、これらのモジュールが、ロード時の自動ライセンス・テストに合格し、ローダが「tainted kernel(汚染カーネル)」のメッセージを表示しないようにするために行われたものだった。NewsForgeはこの舞台裏に迫るべく、Linus Torvaldsと、Linux向けのプロプライエタリ・モジュールを製造するある企業のCEOから詳しい話を聞いた。

われわれは昨日、Linuxant, Inc.の会長であるMarc Boucherに、彼らが製造するプロプライエタリなLinuxドライバがバイナリ・コード内の「GPL」という文字列の後に「\0(文字列の終了)」を含めることで、ロード・モジュールに対して「嘘をついていた」というのは事実なのかどうか、電子メールで問い合わせた。Marcからの回答は、「その\0は、モデム・ドライバがロードされるときに、重複した誤解を招くメッセージが大量にコンソールに表示されるのを防ぐ、技術的な回避策だった」というものだった。Marcはさらに、Linux Kernel Mailing Listに彼が投稿した電子メールを見るように促した。彼はその中で、LinuxantのLinuxドライバのソースコードの一部が提供されていると説明している。

同じメールで、Marcは「残念ながらLinuxantは、Conexant HCFおよびHSF softmodemドライバのプロプライエタリ部分のソースコードを公開することはできない。というのは、Linuxantはその部分の所有者ではなく、Conexantからその部分がライセンス供与された際の条件でそれが禁じられているためだ」さらに、「われわれは、その制限による不都合を解消するために、プロプライエタリ・コードを隔離し、OS固有のコードのソースはすべて公開した。これで、あらゆるカーネルに対してこのモジュールを再構築することが可能だ」

NewsForgeはMarcに、この状況が、すべての人にとって都合のいいように展開し、また、Linuxantは今後もLinuxユーザにドライバ(彼らが提供しなくなれば、存在しなくなる)を提供できると思うかどうか尋ねてみた。彼は、「イエスであることを望んでいる。政治的には難しい状況だが、プロプライエタリ側とオープンソース側(具体的には、平均的なLinuxユーザ)の双方が納得できるような妥協点を見つけるため努力し、Linux向けのドライバおよびハードウェアのサポートがなくなってしまわないよう、提供を続ける所存だ」

なぜ「汚染」のラベルを貼るのか

Linuxユーザおよびフリー・ソフトウェアの立場からこの問題を考えるため、われわれはLinus Torvaldsに電子メールを送り、Linuxにプロプライエタリのドライバがロードされるとどうなるかを尋ねてみた。Linusからの回答は、

別に何も。

コードは「tainted(汚染)」フラグをセットして、後続のすべてのカーネル障害レポートに影響する。これによって、開発者はシステムがバイナリのみのモジュールを使ったことを判断できる(この機能が用意されているのは、ある問題をデバッグしようと膨大な時間をかけた後で、それがバイナリのカーネル・モジュールによって引き起こされたことが判明したことがあったからだ。代表的なものでは、nvidia 3Dアクセラレーション・ドライバがこれにあたる)。

内部カーネル・インターフェイスの中には、非GPLモジュールにエクスポートされていないものもある。しかし、これらは本当に内部的なもの、つまり、一般的なモジュールには必要ないはずだ。

われわれはさらに、モジュールのロード時に「tainted」メッセージが表示されたらユーザはどうするべきかをLinusに尋ねてみた。次のような回答があった。

何もする必要はない。このメッセージは、その後起きる問題を報告してもカーネルの開発者はそれを重く見ないだろう、また、カーネルに何か問題があった場合に、そのバイナリ・モジュールの利用をやめればそれが解決するかどうかを確認するように、という旨の警告で、それ以外のアクションはまったく必要ない。