半专有软件如何基于Linux内核?


9

如果我理解正确,Linux内核是根据GPL许可的,这意味着,如果任何人都基于GPL许可,他们还必须根据GPL许可整个衍生作品,从而使任何人都可以自由地修改和/或重新分发其衍生作品。

例如,所有Android版本均基于LK。这是否意味着整个发布及其所有组件也必须根据GPL发布?

例如,大多数Android版本附带专有组件。这不违反GPL吗?是否不需要根据GPL发布全部衍生作品?

例如,对于Ubuntu,您必须在安装后下载MPEG编解码器。我认为这是因为MPEG是专有的,因此MPEG的许可证与GPL不兼容,因此它们不能包含在同一发行版中吗?

Android版本如何解决这个问题?


2
简短的版本是GPL的“病毒”质量只能作用于许可下的代码派生作品,而调用内核的用户区却不能使其成为内核的派生作品。
汤姆·亨特

我知道,内核和位于其之上的其他软件具有单独的许可证,GPL允许这样做。
雷维塔夫(Revetahw)说要

我还要补充一点,据我所知,GPL v2和GPL v3之间存在很大差异,Linus继续使用比后者更宽容的GPL v2。是有关此的一些信息。前两个答案似乎很好。
KGIII

Answers:


9

首先,您必须清楚Google的Android代码和Linux内核代码是分开的。Android本身已获得Apache许可2.0许可,这是许可的,用Wikipedia的话来说:

Apache许可证是允许的,因为它不需要使用同一许可证来分发软件的派生作品或对原始版本的修改。

因此,通常不会提供任何供应商对Android的修改。

其次,如果Linux内核已获得GPLv2许可,则该代码将公开发布,既可以埋藏在设备中的某个位置(可能性较小),也可以在供应商网站上一些晦涩的页面上下载,这些页面专门用于开放源代码。他们的产品。

但是,对公开提供的Linux内核代码有一个主要警告,即具有类似功能的专有驱动程序和内核模块。Linux内核可以加载在专有许可下分发的二进制Blob,而运行设备所需的此类Blob的源代码自然不会分发。归根结底,即使您确实设法获得设备专用的内核源代码,也不一定能够使用它来编译自己的基于Linux的功能操作系统。


在上下文中允许

许可许可证到底是什么意思?从您的评论中,我认为您已将其理解为能够运行其他许可的或专有的软件。但这是错误的。

在这种情况下,允许是指让您随心所欲地使用源代码是多么允许。

法律上您有义务公开您对GPL许可代码所做的任何修改,因此GPL不允许。它不允许您接受每个人的贡献,对其进行更改(不管它变的更好或更糟)并将其隐藏起来。如果要分发二进制文件,则还必须分发源代码。因为它并不会允许你做私人的变化因此它是不宽容的

Apache许可证和BSD许可证是许可许可证的示例。与严格不允许的GPL相反,它允许您对根据其许可的代码进行任何修改,并将其保留给您自己,换句话说,它是允许的。就是说,您可以使用Android代码,即使您对其进行了足够的更改以使其无法识别,也可以自行保留它。而这正是Android设备供应商所做的。


1
没有。这是因为仅在内核上运行的程序(并利用内核的syscalls)不是内核的派生类。Android用户区代码仅在Linux内核上运行。
cas 2015年

1
@Fiksdal Linux内核是根据GPL许可的,而不是许可的许可。您可以在Linux上运行Android和其他许可软件,就像在普通PC上使用Nvidia专有驱动程序一样。
Oxwivi

1
@Fiksdal或更好的例子是,Android在Linux上运行专有和允许的二进制文件的方式与运行Steam和Google Chrome的方式相同。
Oxwivi

1
@Fiksdal,是的,它实际上是分开的。考虑一下:同一内核可以在Ubuntu之上运行Ubuntu或其他常规Linux发行版。Linux内核就是一个内核。它意味着能够在其之上运行各种程序。
Oxwivi

1
@Fiksdal我已经编辑了答案,请查看。
Oxwivi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.