162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci.. include:: ../disclaimer-zh_CN.rst 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci:Original: :ref:`Documentation/process/license-rules.rst <kernel_licensing>` 662306a36Sopenharmony_ci:Translator: Alex Shi <alex.shi@linux.alibaba.com> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci.. _cn_kernel_licensing: 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciLinux内核许可规则 1162306a36Sopenharmony_ci================= 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciLinux内核根据LICENSES/preferred/GPL-2.0中提供的GNU通用公共许可证版本2 1462306a36Sopenharmony_ci(GPL-2.0)的条款提供,并在LICENSES/exceptions/Linux-syscall-note中显式 1562306a36Sopenharmony_ci描述了例外的系统调用,如COPYING文件中所述。 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci此文档文件提供了如何对每个源文件进行注释以使其许可证清晰明确的说明。 1862306a36Sopenharmony_ci它不会取代内核的许可证。 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci内核源代码作为一个整体适用于COPYING文件中描述的许可证,但是单个源文件可以 2162306a36Sopenharmony_ci具有不同的与GPL-20兼容的许可证:: 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci GPL-1.0+ : GNU通用公共许可证v1.0或更高版本 2462306a36Sopenharmony_ci GPL-2.0+ : GNU通用公共许可证v2.0或更高版本 2562306a36Sopenharmony_ci LGPL-2.0 : 仅限GNU库通用公共许可证v2 2662306a36Sopenharmony_ci LGPL-2.0+: GNU 库通用公共许可证v2或更高版本 2762306a36Sopenharmony_ci LGPL-2.1 : 仅限GNU宽通用公共许可证v2.1 2862306a36Sopenharmony_ci LGPL-2.1+: GNU宽通用公共许可证v2.1或更高版本 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci除此之外,个人文件可以在双重许可下提供,例如一个兼容的GPL变体,或者BSD, 3162306a36Sopenharmony_ciMIT等许可。 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci用户空间API(UAPI)头文件描述了用户空间程序与内核的接口,这是一种特殊情况。 3462306a36Sopenharmony_ci根据内核COPYING文件中的注释,syscall接口是一个明确的边界,它不会将GPL要求 3562306a36Sopenharmony_ci扩展到任何使用它与内核通信的软件。由于UAPI头文件必须包含在创建在Linux内核 3662306a36Sopenharmony_ci上运行的可执行文件的任何源文件中,因此此例外必须记录在特别的许可证表述中。 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci表达源文件许可证的常用方法是将匹配的样板文本添加到文件的顶部注释中。由于 3962306a36Sopenharmony_ci格式,拼写错误等,这些“样板”很难通过那些在上下文中使用的验证许可证合规性 4062306a36Sopenharmony_ci的工具。 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci样板文本的替代方法是在每个源文件中使用软件包数据交换(SPDX)许可证标识符。 4362306a36Sopenharmony_ciSPDX许可证标识符是机器可解析的,并且是用于提供文件内容的许可证的精确缩写。 4462306a36Sopenharmony_ciSPDX许可证标识符由Linux 基金会的SPDX 工作组管理,并得到了整个行业,工具 4562306a36Sopenharmony_ci供应商和法律团队的合作伙伴的一致同意。有关详细信息,请参阅 4662306a36Sopenharmony_cihttps://spdx.org/ 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ciLinux内核需要所有源文件中的精确SPDX标识符。内核中使用的有效标识符在 4962306a36Sopenharmony_ci`许可标识符`_ 一节中进行了解释,并且已可以在 5062306a36Sopenharmony_cihttps://spdx.org/licenses/ 上的官方SPDX许可证列表中检索,并附带许可证 5162306a36Sopenharmony_ci文本。 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci许可标识符语法 5462306a36Sopenharmony_ci-------------- 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci1.安置: 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci 内核文件中的SPDX许可证标识符应添加到可包含注释的文件中的第一行。对于大多 5962306a36Sopenharmony_ci 数文件,这是第一行,除了那些在第一行中需要'#!PATH_TO_INTERPRETER'的脚本。 6062306a36Sopenharmony_ci 对于这些脚本,SPDX标识符进入第二行。 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci| 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci2. 风格: 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci SPDX许可证标识符以注释的形式添加。注释样式取决于文件类型:: 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci C source: // SPDX-License-Identifier: <SPDX License Expression> 6962306a36Sopenharmony_ci C header: /* SPDX-License-Identifier: <SPDX License Expression> */ 7062306a36Sopenharmony_ci ASM: /* SPDX-License-Identifier: <SPDX License Expression> */ 7162306a36Sopenharmony_ci scripts: # SPDX-License-Identifier: <SPDX License Expression> 7262306a36Sopenharmony_ci .rst: .. SPDX-License-Identifier: <SPDX License Expression> 7362306a36Sopenharmony_ci .dts{i}: // SPDX-License-Identifier: <SPDX License Expression> 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci 如果特定工具无法处理标准注释样式,则应使用工具接受的相应注释机制。这是在 7662306a36Sopenharmony_ci C 头文件中使用“/\*\*/”样式注释的原因。过去在使用生成的.lds文件中观察到 7762306a36Sopenharmony_ci 构建被破坏,其中'ld'无法解析C++注释。现在已经解决了这个问题,但仍然有较 7862306a36Sopenharmony_ci 旧的汇编程序工具无法处理C++样式的注释。 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci| 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci3. 句法: 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci <SPDX许可证表达式>是SPDX许可证列表中的SPDX短格式许可证标识符,或者在许可 8562306a36Sopenharmony_ci 证例外适用时由“WITH”分隔的两个SPDX短格式许可证标识符的组合。当应用多个许 8662306a36Sopenharmony_ci 可证时,表达式由分隔子表达式的关键字“AND”,“OR”组成,并由“(”,“)”包围。 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci 带有“或更高”选项的[L]GPL等许可证的许可证标识符通过使用“+”来表示“或更高” 8962306a36Sopenharmony_ci 选项来构建。:: 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0+ 9262306a36Sopenharmony_ci // SPDX-License-Identifier: LGPL-2.1+ 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci 当需要修正的许可证时,应使用WITH。 例如,linux内核UAPI文件使用表达式:: 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note 9762306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci 其它在内核中使用WITH例外的事例如下:: 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0 WITH mif-exception 10262306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci 例外只能与特定的许可证标识符一起使用。有效的许可证标识符列在异常文本文件 10562306a36Sopenharmony_ci 的标记中。有关详细信息,请参阅 `许可标识符`_ 一章中的 `例外`_ 。 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci 如果文件是双重许可且只选择一个许可证,则应使用OR。例如,一些dtsi文件在双 10862306a36Sopenharmony_ci 许可下可用:: 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci 内核中双许可文件中许可表达式的示例:: 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0 OR MIT 11562306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 11662306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 11762306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-2.0 OR MPL-1.1 11862306a36Sopenharmony_ci // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT 11962306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-1.0+ OR BSD-3-Clause OR OpenSSL 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci 如果文件具有多个许可证,其条款全部适用于使用该文件,则应使用AND。例如, 12262306a36Sopenharmony_ci 如果代码是从另一个项目继承的,并且已经授予了将其放入内核的权限,但原始 12362306a36Sopenharmony_ci 许可条款需要保持有效:: 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci 另一个需要遵守两套许可条款的例子是:: 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+ 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci许可标识符 13262306a36Sopenharmony_ci---------- 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci当前使用的许可证以及添加到内核的代码许可证可以分解为: 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci1. _`优先许可`: 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci 应尽可能使用这些许可证,因为它们已知完全兼容并广泛使用。这些许可证在内核 13962306a36Sopenharmony_ci 目录:: 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci LICENSES/preferred/ 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci 此目录中的文件包含完整的许可证文本和 `元标记`_ 。文件名与SPDX许可证标识 14462306a36Sopenharmony_ci 符相同,后者应用于源文件中的许可证。 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci 例如:: 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci LICENSES/preferred/GPL-2.0 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci 包含GPLv2许可证文本和所需的元标签:: 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci LICENSES/preferred/MIT 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci 包含MIT许可证文本和所需的元标记 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci _`元标记`: 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci 许可证文件中必须包含以下元标记: 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci - Valid-License-Identifier: 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci 一行或多行, 声明那些许可标识符在项目内有效, 以引用此特定许可的文本。通 16362306a36Sopenharmony_ci 常这是一个有效的标识符,但是例如对于带有'或更高'选项的许可证,两个标识 16462306a36Sopenharmony_ci 符都有效。 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci - SPDX-URL: 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ci SPDX页面的URL,其中包含与许可证相关的其他信息. 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci - Usage-Guidance: 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci 使用建议的自由格式文本。该文本必须包含SPDX许可证标识符的正确示例,因为 17362306a36Sopenharmony_ci 它们应根据 `许可标识符语法`_ 指南放入源文件中。 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci - License-Text: 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci 此标记之后的所有文本都被视为原始许可文本 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci 文件格式示例:: 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci Valid-License-Identifier: GPL-2.0 18262306a36Sopenharmony_ci Valid-License-Identifier: GPL-2.0+ 18362306a36Sopenharmony_ci SPDX-URL: https://spdx.org/licenses/GPL-2.0.html 18462306a36Sopenharmony_ci Usage-Guide: 18562306a36Sopenharmony_ci To use this license in source code, put one of the following SPDX 18662306a36Sopenharmony_ci tag/value pairs into a comment according to the placement 18762306a36Sopenharmony_ci guidelines in the licensing rules documentation. 18862306a36Sopenharmony_ci For 'GNU General Public License (GPL) version 2 only' use: 18962306a36Sopenharmony_ci SPDX-License-Identifier: GPL-2.0 19062306a36Sopenharmony_ci For 'GNU General Public License (GPL) version 2 or any later version' use: 19162306a36Sopenharmony_ci SPDX-License-Identifier: GPL-2.0+ 19262306a36Sopenharmony_ci License-Text: 19362306a36Sopenharmony_ci Full license text 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci :: 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci SPDX-License-Identifier: MIT 19862306a36Sopenharmony_ci SPDX-URL: https://spdx.org/licenses/MIT.html 19962306a36Sopenharmony_ci Usage-Guide: 20062306a36Sopenharmony_ci To use this license in source code, put the following SPDX 20162306a36Sopenharmony_ci tag/value pair into a comment according to the placement 20262306a36Sopenharmony_ci guidelines in the licensing rules documentation. 20362306a36Sopenharmony_ci SPDX-License-Identifier: MIT 20462306a36Sopenharmony_ci License-Text: 20562306a36Sopenharmony_ci Full license text 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci| 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci2. 不推荐的许可证: 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci 这些许可证只应用于现有代码或从其他项目导入代码。这些许可证在内核目录:: 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci LICENSES/other/ 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ci 此目录中的文件包含完整的许可证文本和 `元标记`_ 。文件名与SPDX许可证标识 21662306a36Sopenharmony_ci 符相同,后者应用于源文件中的许可证。 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci 例如:: 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci LICENSES/other/ISC 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci 包含国际系统联合许可文本和所需的元标签:: 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci LICENSES/other/ZLib 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci 包含ZLIB许可文本和所需的元标签. 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci 元标签: 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_ci “其他”许可证的元标签要求与 `优先许可`_ 的要求相同。 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci 文件格式示例:: 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci Valid-License-Identifier: ISC 23562306a36Sopenharmony_ci SPDX-URL: https://spdx.org/licenses/ISC.html 23662306a36Sopenharmony_ci Usage-Guide: 23762306a36Sopenharmony_ci Usage of this license in the kernel for new code is discouraged 23862306a36Sopenharmony_ci and it should solely be used for importing code from an already 23962306a36Sopenharmony_ci existing project. 24062306a36Sopenharmony_ci To use this license in source code, put the following SPDX 24162306a36Sopenharmony_ci tag/value pair into a comment according to the placement 24262306a36Sopenharmony_ci guidelines in the licensing rules documentation. 24362306a36Sopenharmony_ci SPDX-License-Identifier: ISC 24462306a36Sopenharmony_ci License-Text: 24562306a36Sopenharmony_ci Full license text 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ci| 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci3. _`例外`: 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci 某些许可证可以修改,并允许原始许可证不具有的某些例外权利。这些例外在 25262306a36Sopenharmony_ci 内核目录:: 25362306a36Sopenharmony_ci 25462306a36Sopenharmony_ci LICENSES/exceptions/ 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci 此目录中的文件包含完整的例外文本和所需的 `例外元标记`_ 。 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci 例如:: 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci LICENSES/exceptions/Linux-syscall-note 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci 包含Linux内核的COPYING文件中记录的Linux系统调用例外,该文件用于UAPI 26362306a36Sopenharmony_ci 头文件。例如:: 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci LICENSES/exceptions/GCC-exception-2.0 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci 包含GCC'链接例外',它允许独立于其许可证的任何二进制文件与标记有此例外的 26862306a36Sopenharmony_ci 文件的编译版本链接。这是从GPL不兼容源代码创建可运行的可执行文件所必需的。 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci _`例外元标记`: 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci 以下元标记必须在例外文件中可用: 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci - SPDX-Exception-Identifier: 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci 一个可与SPDX许可证标识符一起使用的例外标识符。 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci - SPDX-URL: 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_ci SPDX页面的URL,其中包含与例外相关的其他信息。 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci - SPDX-Licenses: 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci 以逗号分隔的例外可用的SPDX许可证标识符列表。 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_ci - Usage-Guidance: 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci 使用建议的自由格式文本。必须在文本后面加上SPDX许可证标识符的正确示例, 28962306a36Sopenharmony_ci 因为它们应根据 `许可标识符语法`_ 指南放入源文件中。 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ci - Exception-Text: 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci 此标记之后的所有文本都被视为原始异常文本 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ci 文件格式示例:: 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci SPDX-Exception-Identifier: Linux-syscall-note 29862306a36Sopenharmony_ci SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html 29962306a36Sopenharmony_ci SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+ 30062306a36Sopenharmony_ci Usage-Guidance: 30162306a36Sopenharmony_ci This exception is used together with one of the above SPDX-Licenses 30262306a36Sopenharmony_ci to mark user-space API (uapi) header files so they can be included 30362306a36Sopenharmony_ci into non GPL compliant user-space application code. 30462306a36Sopenharmony_ci To use this exception add it with the keyword WITH to one of the 30562306a36Sopenharmony_ci identifiers in the SPDX-Licenses tag: 30662306a36Sopenharmony_ci SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note 30762306a36Sopenharmony_ci Exception-Text: 30862306a36Sopenharmony_ci Full exception text 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci :: 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci SPDX-Exception-Identifier: GCC-exception-2.0 31362306a36Sopenharmony_ci SPDX-URL: https://spdx.org/licenses/GCC-exception-2.0.html 31462306a36Sopenharmony_ci SPDX-Licenses: GPL-2.0, GPL-2.0+ 31562306a36Sopenharmony_ci Usage-Guidance: 31662306a36Sopenharmony_ci The "GCC Runtime Library exception 2.0" is used together with one 31762306a36Sopenharmony_ci of the above SPDX-Licenses for code imported from the GCC runtime 31862306a36Sopenharmony_ci library. 31962306a36Sopenharmony_ci To use this exception add it with the keyword WITH to one of the 32062306a36Sopenharmony_ci identifiers in the SPDX-Licenses tag: 32162306a36Sopenharmony_ci SPDX-License-Identifier: <SPDX-License> WITH GCC-exception-2.0 32262306a36Sopenharmony_ci Exception-Text: 32362306a36Sopenharmony_ci Full exception text 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ci所有SPDX许可证标识符和例外都必须在LICENSES子目录中具有相应的文件。这是允许 32762306a36Sopenharmony_ci工具验证(例如checkpatch.pl)以及准备好从源读取和提取许可证所必需的, 这是 32862306a36Sopenharmony_ci各种FOSS组织推荐的,例如 `FSFE REUSE initiative <https://reuse.software/>`_. 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ci_`模块许可` 33162306a36Sopenharmony_ci----------------- 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ci 可加载内核模块还需要MODULE_LICENSE()标记。此标记既不替代正确的源代码 33462306a36Sopenharmony_ci 许可证信息(SPDX-License-Identifier),也不以任何方式表示或确定提供模块 33562306a36Sopenharmony_ci 源代码的确切许可证。 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ci 此标记的唯一目的是提供足够的信息,该模块是否是自由软件或者是内核模块加 33862306a36Sopenharmony_ci 载器和用户空间工具的专有模块。 33962306a36Sopenharmony_ci 34062306a36Sopenharmony_ci MODULE_LICENSE()的有效许可证字符串是: 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_ci ============================= ============================================= 34362306a36Sopenharmony_ci "GPL" 模块是根据GPL版本2许可的。这并不表示仅限于 34462306a36Sopenharmony_ci GPL-2.0或GPL-2.0或更高版本之间的任何区别。 34562306a36Sopenharmony_ci 最正确许可证信息只能通过相应源文件中的许可证 34662306a36Sopenharmony_ci 信息来确定 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_ci "GPL v2" 和"GPL"相同,它的存在是因为历史原因。 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci "GPL and additional rights" 表示模块源在GPL v2变体和MIT许可下双重许可的 35162306a36Sopenharmony_ci 历史变体。请不要在新代码中使用。 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci "Dual MIT/GPL" 表达该模块在GPL v2变体或MIT许可证选择下双重 35462306a36Sopenharmony_ci 许可的正确方式。 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci "Dual BSD/GPL" 该模块根据GPL v2变体或BSD许可证选择进行双重 35762306a36Sopenharmony_ci 许可。 BSD许可证的确切变体只能通过相应源文件 35862306a36Sopenharmony_ci 中的许可证信息来确定。 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_ci "Dual MPL/GPL" 该模块根据GPL v2变体或Mozilla Public License 36162306a36Sopenharmony_ci (MPL)选项进行双重许可。 MPL许可证的确切变体 36262306a36Sopenharmony_ci 只能通过相应的源文件中的许可证信息来确定。 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_ci "Proprietary" 该模块属于专有许可。此字符串仅用于专有的第三 36562306a36Sopenharmony_ci 方模块,不能用于在内核树中具有源代码的模块。 36662306a36Sopenharmony_ci 以这种方式标记的模块在加载时会使用'P'标记污 36762306a36Sopenharmony_ci 染内核,并且内核模块加载器拒绝将这些模块链接 36862306a36Sopenharmony_ci 到使用EXPORT_SYMBOL_GPL()导出的符号。 36962306a36Sopenharmony_ci ============================= ============================================= 37062306a36Sopenharmony_ci 371