GPL和BSD内核中的特定模块

由于Linux内核是GPL而不是LGPL,我认为将专有代码链接到它是非法的。 行业如何绕过这一过程? 我预计GPL许可证将迫使任何开发人员在GPL驱动程序和/或内核模块下发布。

也许我很困惑,实现一个新的模块并不真正链接到内核代码? 公司如何处理这个问题? 也许连接(从内核到他们的二进制文件)?

另一方面有BSD内核。 你可以自由链接受保护的IP。 你能否在BSD内核中实现更好的设计来实现你的驱动程序? 在为GPL内核实现驱动程序时是否有任何设计限制?


正如你所说的,BSD内核使用的BSD许可证更加宽松,因此将任何授权模块链接到这里都不是问题。

对于linux情况,GPL本身禁止链接非GPL兼容代码是正确的,这些代码不允许在专有模块甚至LGPL模块中链接。

但是,Linux版权所有者授予您链接您的“LGPL”模块与任何专有代码。 一个例子是nvidia驱动程序:

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

这通常在GPL下仍然是非法的,但明确允许Linux内核。 作为参考,看看Linus Torvalds在这里要说些什么:

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

PS链接是GPL术语中的一种对称操作。


链接本身并不是激活GPL限制的行为。

这是GPL工作的“派生工作”的分布激活了限制 - 您必须将任何您给予“派生工作”的人给予重新创建“派生工作”所需的源代码。

现在,这个问题变成了“派生工作”线的一个地方 - 这远不是很清楚(在不同的司法管辖区可能会有所不同)。 例如,如果您将静态链接的编译的Linux内核二进制文件作为其中的一部分进行分发,那么非常清楚整个二进制文件是“派生工作”。 另一方面,如果仅仅分发只使用内核的“发布的接口”的模块,那么它可能不是“衍生工作”。

虽然这两个位置之间有很多空间。 例如,如果您分发包含含有Linux内核和编译的二进制驱动程序的闪存的设备,则闪存的完整内容是“派生工作”? 它看起来对我来说很重要 - 但意见不同,只有在法庭上进行测试时(甚至只在该法院的管辖范围内)才会有明确的答案。


我无法从你的问题中得出结论,但你可能正在考虑这个问题。 如果你想在Linux上使用专有驱动程序,那么是的,这应该是允许的。

确实,任何与GPL编码链接的代码本身都必须是GPL编辑的。 然而,GPL编码的代码可以在不改变这些库的许可的情况下链接到闭源库(否则,我们可以通过编写GPL程序并将其与库相链接来使每个库都是开源的)。 因此,GPL编辑的Linux内核可以在没有任何问题的情况下与您的闭源驱动程序链接。

这就是说,这要求驱动程序的编写要么是完全独立的,要么只是链接到允许无限制链接的库(LGPL,MIT等)。 这也意味着您的驱动程序需要成为可加载的内核模块,而不是静态编译到内核中。

链接地址: http://www.djcxy.com/p/79729.html

上一篇: Propietary modules within GPL and BSD kernels

下一篇: What's the case when using software licensed under GPL or LGPL