14

Linux カーネルは LGPL ではなく GPL であるため、独自のコードをリンクすることは違法だと思います。業界はこれをどのように回避していますか?GPL ライセンスにより、開発者は GPL ドライバーおよび/またはカーネル モジュールの下でリリースすることが強制されると思います。

多分私は混乱していて、新しいモジュールを実装することは実際にはカーネルコードに対してリンクしていません??? 企業はこれにどのように対処しますか?たぶん、逆にリンクしますか (カーネルからバイナリへ)?

一方、BSD カーネルがあります。保護された IP を自由にリンクできる場所。BSD カーネル内にドライバを実装するより良い設計を入手できますか? GPL カーネル用のドライバーを実装する場合、設計上の制限はありますか?

4

3 に答える 3

15

あなたが言ったように、BSDカーネルで使用されるBSDライセンスははるかに自由であるため、ライセンスされたモジュールをそこにリンクすることは問題ありません。

Linux の場合、GPL 自体が、プロプライエタリ モジュールや LGPL モジュールでのリンクを許可しない非GPL 互換コードのリンクを禁止しているのは正しいことです。

ただし、Linux の著作権所有者は、「LGPL」モジュールを独自のコードにリンクすることを許可しています。この例は、nvidia ドライバーです。

/------------.-\
| Kernel       |
|              |
|   /--------\ |
|   | Module | |     /-------------------\
|   | (LGPL) <========> proprietary code |
|   \--------/ |     \-------------------/
\--------------/

これは一般的に GPL の下ではまだ違法ですが、Linux カーネルでは明示的に許可されています。参考として、Linus Torvalds がこの問題について次のように述べていることを参照してください。

http://linuxmafia.com/faq/Kernel/proprietary-kernel-modules.html

PS Linking は、GPL に関して対称的な操作です。

于 2010-04-27T13:43:49.630 に答える
1

GPLの制限を有効にするのは、それ自体をリンクする行為ではありません。

制限を有効にするのはGPL作品の「派生作品」の配布です。「派生作品」を再作成するために必要なソースコードに「派生作品」を与えた人を誰にでも与える必要があります。

さて、問題は「派生した仕事」の線がどこに描かれるかということの1つになります。これは、明確にはほど遠いです(そして、管轄によって異なる可能性があります!)。たとえば、コンパイルされたLinuxカーネルバイナリを、その一部として静的にリンクされたコードとともに配布する場合、バイナリ全体が「派生した作業」であることは明らかです。一方、カーネルの「公開されたインターフェース」のみを使用するモジュールのみを配布する場合、それはおそらく「派生した作業」ではありません。

ただし、これら2つの位置の間には多くのスペースがあります。たとえば、Linuxカーネルとコンパイルされたバイナリドライバを含むフラッシュメモリを含むデバイスを配布する場合、フラッシュメモリの完全な内容は「派生作品」ですか?確かに私にはそれのように見えますが、意見は異なり、法廷でテストされたときにのみ決定的な答えが得られます(それでも、その法廷の管轄権についてのみ)。

于 2010-04-28T00:46:45.097 に答える
0

あなたの質問からはわかりませんが、あなたはこれについて逆に考えているかもしれません。Linux でプロプライエタリ ドライバーを使用しようとしている場合は、許可されているはずです。

GPL で保護されたコードにリンクするコード自体が GPL で保護されていなければならないことは事実です。ただし、GPL で保護されたコードは、ライブラリのライセンスを変更することなく、クローズド ソースのライブラリにリンクできます (そうでなければ、GPL プログラムを作成してライブラリにリンクするだけで、既存のすべてのライブラリをオープン ソースにすることができます)。したがって、GPL を適用した Linux カーネルは、クローズド ソースのドライバーに問題なくリンクできます。

そうは言っても、これには、ドライバーが完全に自己完結型であるか、または無制限のリンクを許可するライブラリ (LGPL、MIT など) に対してのみリンクするように、ドライバーが記述されている必要があります。これは、ドライバーがロード可能なカーネル モジュールである必要があり、カーネルに静的にコンパイルされていないことも意味します。

于 2010-04-27T20:37:23.163 に答える