Linux内核版本命名规则及各发行版内核支持策略

📅 2026/7/23 16:23:22
Linux内核版本命名规则及各发行版内核支持策略
Linux内核版本命名规则及各发行版内核支持策略1. 原生Linux内核版本号更新规则1.1. Linux内核命名规则Linux 内核版本号格式为A.B.C[-suffix]版本号各字段含义字段含义A主版本号MajorB次版本号MinorC补丁版本号Patchsuffix版本后缀类型如-rc1、-stable等版本后缀类型后缀含义-rcN发布候选版本Release CandidateN 为候选编号无后缀正式稳定版本1.2. 不同类型内核版本Linux 社区为满足不同用户需要、分散开发风险、加速内核开发将发布内核分为三大类类型版本示例维护周期更新频率使用人群Mainline开发版7.0-rc—每 2 周开发者 / 测试者Stable稳定版6.19.72 ~ 3 个月每周普通用户LTS长期支持版6.18,6.12,6.62 ~ 6 年不定期只合入重要补丁企业 / 关键业务满足不同用户需求方面Mainline面向追求最新特性的开发者和测试者Stable面向需要稳定环境的普通用户LTS面向需要长期维护的企业和关键业务场景分散开发风险激进的特性开发在 Mainline 中进行不影响稳定分支稳定分支只接受修复补丁降低引入新缺陷的风险加速内核开发并行开发模式使新特性快速进入 Mainline分层发布策略让各阶段验证各司其职1.3. Linux内核内部API和ABI向后兼容策略外部 API属于应用程序调用的 APILinux 本身提供向后兼容策略且只有更新主版本时才可能调整外部 API。内部 APILinux 内部 API不支持向后兼容。修改内核内部 API 后release 的内核版本号会有体现即次版本号改变。关键结论内核次版本号变化如 5.15 → 5.16意味着内部 API 可能已发生不兼容变更依赖这些 API 的第三方驱动模块需要重新编译。1.4. Linux LTS版本列表最新 Mainline 和 Stable 版本请参考 kernel.org 获取实时信息当前主要 LTS 版本示例LTS 版本预计 EOL6.122028 年 12 月6.62026 年 12 月6.12027 年 12 月5.152026 年 10 月5.102026 年 12 月5.42025 年 12 月2. 不同发行版Linux系统中内核版本号命名规则及更新策略2.1. 各个Linux发行版中内核命名规则发行版示例版本字段含义Ubuntu6.8.0-53-genericLinux主.次.补丁-Ubuntu补丁构建号Ubuntu定制CentOS / RHEL3.10.0-1160.el7.x86_64Linux主.次.补丁-CentOS补丁.发行版.架构银河麒麟 V104.19.90-23.18.ky10.x86_64Linux主.次.补丁-麒麟补丁.麒麟小补丁.发行版.架构OpenEuler欧拉5.10.0-238.0.0.140.oe2203sp3.aarch64Linux主.次.补丁-OE补丁(238).OE小补丁(0.0.140).发行版.架构UOS统信4.19.0-91.82.190.uelc20.x86_64Linux主.次.补丁-Debian补丁.Debian小补丁.统信补丁.发行版.架构2.2. Ubuntu2.2.1. Ubuntu发布版本类型Ubuntu 在发布时分为三类版本类型标准支持周期扩展支持说明LTS长期支持版5 年Ubuntu Pro 提供 ESM 级别支持面向企业和服务器非 LTS 桌面版9 个月—面向桌面用户非 LTS 服务器版9 个月—面向开发/测试环境免费版 Ubuntu LTS 的标准支持周期是 5 年超过 5 年仍需支持就需要购买Ubuntu Pro以享受 ESM 级别的技术支持。2.2.2. Ubuntu版本与内核版本关系常见疑问系统安装时选择了 24.04 LTS 版本假设 Linux 内核默认为6.8.0-23-generic升级内核后内核上游版本并没改变为何第三方驱动有时出现编译失败问题原因分析HWE 内核回滚安装时使用了 HWE 类型内核当用户执行upgrade命令时内核的次版本号被升级Backport 补丁即使安装时使用了 GA 类型内核因为 LTS Ubuntu 的补丁版本可能出现 backport导致内核内部 API 更新。注上述提到的 LTS 版本是指Ubuntu 的版本是 LTS并非指 LTS 内核。三种 Ubuntu 类型对应的内核更新策略Ubuntu 类型内核策略内核版本变化Ubuntu LTSServerGA Kernel仅更新补丁号主/次版本号不变Ubuntu LTSDesktopHWE Kernel滚动更新次版本号可能升级Ubuntu 非 LTSHWE Kernel滚动更新到最新 Stable 内核很明显即使使用 Ubuntu LTS 版本但选择桌面版内核策略也是HWE 滚动方式HWE Hardware Enablement硬件支持。该策略的目的是让 LTS 的 Ubuntu 版本能够使用较新内核以支持新的硬件。即使是 Ubuntu LTS 版本其内核也支持两种内核更新策略策略全称行为GAGeneral Availability仅更新内核补丁号不更新主版本和次版本号HWEHardware Enablement为了支持新的硬件会选择最新的 Linux Stable 内核2.2.3. Ubuntu内部将内核分为三类内核类型更新策略更新频率说明GA Kernel仅补丁更新不定期不更新主/次版本号仅安全修复HWE Kernel滚动更新约每 6 个月一次跟随较新的 Stable 内核OEM Kernel定制化更新按需针对特定硬件厂商定制注这里的不更新是指不更新主次版本号但可以更新补丁。HWE Kernel 的更新频率在每 6 个月一次更新速度上也没有 Linux Stable 版本每 3 个月左右更新一次快。2.2.4. Ubuntu内核选择策略服务器场景推荐使用GA Kernel保证长期稳定减少因内核 API 变更导致的第三方驱动兼容问题。桌面场景默认使用HWE Kernel以获得更好的新硬件支持。特定硬件场景可使用OEM Kernel获得厂商定制的硬件支持。2.2.5. 启动HWE与不启动HWE时同一Linux版本下内核更新情况对比场景初始内核升级后内核主次版本变化内部 API 兼容性未启用 HWEGA6.8.0-23-generic6.8.0-53-generic不变仅补丁号变化内部 API 保持不变启用 HWE6.8.0-23-generic6.11.0-14-generic次版本号改变内部 API 可能不兼容3. 我们当前对不同发行版Linux内核支持策略策略项说明发行版覆盖每个发行版选择近期处于技术支持阶段的多个 LTS 发行版本如 Ubuntu 22.04、Ubuntu 24.04patch 版本号可根据实际情况而定特定内核重点用户期望支持的特定内核版本可额外支持定期适配定期适配已支持发行版 LTS 分支的特定内核版本4. 横向对比NVIDIA对不同发行版Linux内核的支持策略以CUDA 13.2安装包为例对操作系统版本的要求如下每个发行版支持的具体版本号有明确限定所谓的支持 Ubuntu 24.04 版本也并非是支持该 LTS 版本中的所有详细版本而是每个版本仅支持一个小版本号。示例CUDA 13.2 中支持 Ubuntu 24.04 的具体情况组件版本Ubuntu 版本24.04.3Linux 内核6.8.0-83-genericGCC 版本13.3.0glibc 版本2.39结论NVIDIA 对每个发行版仅认证特定的内核小版本而非对整个 LTS 系列的所有内核版本提供支持。5. 兼容不同版本Linux内核的策略5.1. 背景知识与兼容不同版本 Linux 内核相关的背景知识Linux 内核源码遵循GPL 协议且内核导出的内部 API 约70%遵循 GPL 协议约30%不必遵循 GPL 协议直接使用遵循 GPL 的内核内部 API 的驱动模块必须遵循 GPL 协议Linux 内核次版本之间如 5.15 升级到 5.16是不保证内核内部 API 兼容的。若发行版系统升级内核就必须重新编译第三方模块可以借助DKMS模块实现升级内核后对第三方驱动的自动编译。5.2. 目标当前驱动目标如下目标说明核心闭源驱动核心代码部分闭源多版本兼容一份驱动安装包可同时兼容同一体系架构ARM 或 x86_64下的多个 Linux 内核版本有限发行版选择支持有限 Linux 发行版如 Ubuntu、CentOS 等选择支持特定 Linux 发行版的特定版本内核如 Ubuntu 24.04linux 6.17.0-14-generic不跟进 HWE不会同步跟进发行版的 HWE 内核除非用户有必要需求。非 LTS 的 HWE 内核维护周期只有 3 个月左右LTS Stable确保支持 Linux 发行版中 LTS Stable 版本的同步发行 Linux 内核版本私有协议不遵循 GPL 协议使用MODULE_LICENSE(Proprietary)5.3. 兼容不同版本Linux内核的关键技术点做不同版本 Linux 内核的兼容时有最关键的3 点建立内核内部 API 抽象层以适配支持的所有历史内核版本建立平台无关抽象层将驱动核心代码放到该层以*.o格式发布不遵循 GPL 协议使用私有协议解决 Linux 社区对不遵循 GPL 厂商的围追堵截。5.4. 国际、国内友商规避GPL协议的策略厂商策略开源情况GPL 风险NVIDIA最初通过symbol_get方式获取内核符号绕过 GPL 限制现已将核心闭源代码上移至用户层、部分下沉到固件层新架构Grace Hopper、Blackwell必须采用开源驱动当前开源/闭源双向支持推荐开源驱动Volta 及以前架构除外。开源驱动已采用 GPL 发布已解决华为驱动代码完全开源但使用MulanPSL v2协议仅借助内核导出的非 GPL 接口完成驱动实现最核心代码放到用户层及板卡侧自带 CPU 中已解决寒武纪部分开源 部分闭源与我们的策略类似存在一定风险摩尔线程驱动闭源—存在一定风险沐曦驱动闭源—存在一定风险壁仞驱动闭源—存在一定风险综述国内 AI 芯片厂商华为除外普遍采用硬件 IP 初始化核心代码放在驱动中的策略且采用规避 GPL 协议如通过symbol_get方式未完全脱离 GPL 法律风险。目前只有NVIDIA和华为做到无需关心 Linux 版本兼容问题。其他友商均要各显神通规避 GPL 协议。5.5. 我们规避GPL协议的策略规划独立编译 ef_blob / 源码以ef_blob.o形式发布。但由于新内核 Kbuild 系统对所有加载的驱动可能有特殊编译选项需求需要编译出多个ef_blob.onostdinc 编译选项ef_blob/源码仍然使用-nostdinc编译选项不搜索标准系统头文件和 GCC 自身安装的头文件且源码也不会包含内核头文件只使用 GCC 自带头文件。这样可以尽最大程度保证任何版本 GCC 编译出的ef_blob.o文件均可以被其他版本 GCC 链接最终生成*.ko安装包软链接机制安装包在链接ef_blob.o时需要根据当前环境所用内核版本建立软连接。例如# 在 5.15 内核环境下ln-sef_blob-6.16.0.o ef_blob.o然后再编译。文档说明本文档整理了 Linux 原生内核及各发行版的内核版本命名规则、更新策略以及兼容不同版本 Linux 内核的技术方案与友商对比分析。