Linux内核许可规则

阅读数:382 评论数:1

跳转到新版页面

分类

Linux

正文

Linux内核遵循GPL-2.0(GNU General Public License version), 在LICENSES/preferred/GPL-2.0有详细描述。Linux内核也遵循一个syscall的特殊情况许可,这个特例在LICENSES/exceptions/Linux-syscall-note目录下,以COPYING文件描述。

以COPYING文件描述的许可是内核的全局许可,每一个源文件可以使用不同于全局的许可,但是需要与GPL-2.0兼容。

GPL-1.0+: GNU General Public License v1.0 or later

GPL-2.0+: GNU General Public License v2.0 or later

LGPL-2.0: GNU Library General Public License v2 only

LGPL-2.0+: GNU Library General Public License v2 or later

LGPL-2.1: GNU Lesser General Public License v2.1 only

LGPL-2.1+: GNU Lesser General Public License v2.1 or later

除此之外,每个文件可以遵循双许可。对于用于描述用户空间程序调用内核接口的User-space API (UAPI)头文件,是许可除理上是不同的。由于系统调用接口是一个清楚的边界,它不能把GPL的要求传递到调用内核接口的软件,但是这些UAPI头文件一定要包含到使用内核的文件中,所以对于这情况就需要进行特别说明。

对于源文件的许可一般的表达方式是在文件开头添加一段模板式的文字,一种模板式的文字是使用Software Package Data Exchange(SPDX),SPDX许可标识是机器可识别的、许可的缩写。SPDX许可标识由Linux基金会的SPDX工作组维护。https://spdx.org/

在Linux内核的所有源文字中需要标注准确的SPDX标识。

许可标识语法

1- Placement

对于内核中的大部分文件SPDX许可标识符应该出现在第一行,除了需要#!PATH_TO_INTERPRETER的脚本外放在第二行。

2- Style

SPDX许可标识以注释的方式添加。

3-Syntax

一个SPDX许可表达式,或者是一个SPDX的缩写形式,或者是两个SPDX缩写的组且,当其中一个是许可特殊况时使用“WITH”分隔。对于多许可,可以使用关键字AND OR及()。

对于[L]GPL使用“+”标示or later

//SPDX-License-Identifier: GPL-2.0+

//SPDX-License-Identifier: LGPL-2.1+

如果对一个许可需要修改,可以使用WITH关键字,例如Linux 内核的UAPI文件:

//SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note

//SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note

特殊情况说明只能针对特定的许可,在特殊情况说明文件中会标注这些许可,

许可标识

当前使用的许可分为:

1、Preferred licenses

优选的许可。在LICENSES/preferred目录下。

2、Not recommanded licenses

不推荐的许可,在LICENSES/other目录下。

3、Exceptions

对于一些许可可以针对一些特殊情况授予特定权限,放在目录LICENSES/exceptions目录下。

(1)SPDX-Exception-Identifier

exception标识,用于SPDX许可标识。

(2)SPDX-URL

SPDX组织的针对此exception说明URL页。

(3)SPDX-Licenses

一组逗号分隔的SPDX许可,标注此exeption可用于哪些特定许可。

(4)Usage-Guidance

使用说明


小灰灰(2019-12-25 05:53:03)

阔以