Konstantin Ryabitsev 为你讲解哪个 Linux 内核版本可以被视作“稳定版”,以及你应该如何选择一个适用你的内核版本。

每次 Linus Torvalds 发布 一个新 Linux 内核的主线版本,几乎都会引起这种困惑,那就是到底哪个内核版本才是最新的“稳定版”?是新的那个 X.Y,还是前面的那个 X.Y-1.Z ?最新的内核版本是不是太“新”了?你是不是应该坚持使用以前的版本?

kernel.org 网页上的信息并不会帮你解开这个困惑。目前,在该页面的最顶部,我们看到是最新稳定版内核是 4.15 — 但是在这个表格的下面,4.14.16 也被列为“稳定版stable”,而 4.15 被列为“主线版本mainline”,很困惑,是吧?

不幸的是,这个问题并不好回答。我们在这里使用“稳定”这个词有两个不同的意思:一是,作为最初发布的 Git 树的名字,二是,表示这个内核可以被视作“稳定版”,用在“生产系统”。

由于 Git 的分布式特性,Linux 的开发工作在许多 不同的分叉仓库中 进行。所有的 bug 修复和新特性也是首先由各个子系统维护者收集和准备的,然后提交给 Linus Torvalds,由 Linus Torvalds 包含进 他自己的 Linux 树 中,他的 Git 树被认为是 Git 仓库的 “master”。我们称这个树为 “主线” Linux 树。

候选发布版(RC)

在每个新的内核版本发布之前,它都要经过几轮的“候选发布”,它由开发者进行测试并“打磨”所有的这些很酷的新特性。基于他们这几轮测试的反馈,Linus 决定最终版本是否已经准备就绪。通常有 7 个每周预发布版本,但是,这个数字经常走到 -rc8,并且有时候甚至达到 -rc9 及以上。当 Linus 确信那个新内核已经没有问题了,他就制作最终发行版,我们称这个版本为“稳定版”,表示它不再是一个“候选发布版”。

Bug 修复

就像任何一个由不是十全十美的人所写的复杂软件一样,任何一个 Linux 内核的新版本都包含 bug,并且这些 bug 必须被修复。Linux 内核的 bug 修复规则非常简单:所有修复必须首先进入到 Linus 的树。一旦主线仓库中的 bug 被修复后,它接着会被应用到内核开发社区仍在维护的已发布内核中。在它们被考虑回迁到已发布的稳定版本之前,所有的 bug 修复必须满足 一套重要的标准 — 标准的其中之一是,它们 “必须已经存在于 Linus 的树中”。这是一个 独立的 Git 仓库,维护它的用途是回迁 bug 修复,而它也被称为“稳定”树 —— 因为它用于跟踪以前发布的稳定内核。这个树由 Greg Kroah-Hartman 策划和维护。

最新的稳定内核

因此,无论在什么时候,为了查看最新的稳定内核而访问 kernel.org 网站时,你应该去使用那个在大黄色按钮所说的“最新的稳定内核”。

但是,你可能会惊奇地发现 —— 4.15 和 4.14.16 都是稳定版本,那么到底哪一个更“稳定”呢?有些人不愿意使用 “.0” 的内核发行版,因为他们认为这个版本并不足够“稳定”,直到最新的是 “.1” 的为止。很难证明或者反驳这种观点的对与错,并且这两种观点都有赞成或者反对的理由,因此,具体选择哪一个取决于你的喜好。

一方面,任何一个进入到稳定树的发行版都必须首先被接受进入主线内核版本中,并且随后会被回迁到已发行版本中。这意味着内核的主线版本相比稳定树中的发行版本来说,总包含有最新的 bug 修复,因此,如果你想使用的发行版包含的“已知 bug”最少,那么使用 “.0” 的主线发行版是最佳选择。

另一方面,主线版本增加了所有很酷的新特性 —— 而新特性也给它们带来了数量未知的“新 bug”,而这些“新 bug”在老的稳定版中是不会存在的。而新的、未知的 bug 是否比旧的、已知的但尚未修复的 bug 更加令人担心呢? —— 这取决于你的选择。不过需要说明的一点是,许多 bug 修复只对内核的主线版本进行了彻底的测试。当补丁回迁到旧内核时,它们可能会工作的很好,但是它们很少做与旧内核的集成测试工作。通常都假定,“以前的稳定版本”足够接近当前的确信可用于生产系统的主线版本。而实际上也确实是这样的,当然,这也更加说明了为什么选择“哪个内核版本更稳定”是件非常困难的事情了。

因此,从根本上说,我们并没有定量的或者定性的手段去明确的告诉你哪个内核版本更加稳定 —— 4.15 还是 4.14.16?我们能够做到的只是告诉你,它们具有“不同的稳定性”,(这个答案可能没有帮到你,但是,至少你明白了这些版本的差别是什么?)。

作者:KONSTANTIN RYABITSEV 译者:qhwdw 校对:wxy

下面哪个linux内核是稳定版本,哪个 Linux 内核版本是 “稳定的”?相关推荐

  1. 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )

    文章目录 一.下载 Linux 内核 1.下载最新版本 Linux 内核 2.下载指定版本 Linux 内核 二.Linux 内核版本号含义 一.下载 Linux 内核 1.下载最新版本 Linux ...

  2. linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...

    环境:Ubuntu 12.10     学号:SA****199 1.更新内核: 直接安装的系统内核版本一般不是最新,用 uname -a 查看一下 自己的版本,OK,我的是: Linux chenh ...

  3. linux长期版本维护内容,[图]Linux Kernel 4.20首个维护版本更新发布 已稳定可广泛部署...

    Linux Kernel 4.20内核系列由Linus Torvalds于2018年12月23日发布,是目前Linux内核最新的分支.目前在Kernel.org网站上4.20.1版本标记已经从&quo ...

  4. linux的第一个内核,Linus Torvalds启动了第一个RC版本的Linux内核4.15

    Linus Torvalds发布了Linux 4.15内核系列的第一个RC(Release Candidate)里程碑,该版本从Linux内核4.14 LTS开始,在标准的两周合并窗口后开始了开发周期 ...

  5. 【Linux】Linux版本介绍(内核版本和发行版本)

    百度百科 linux内核版本的分类 内核版本 稳定版本 开发版本 发行版本 1. 内核版本(免费的) Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字 第一个组数字:目前发布的 ...

  6. 手机linux内核版本了解,Linux内核版本介绍与查询

    Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...

  7. linux的内核和发行版本,查看Linux内核及发行版本信息

    1.输入"uname"并按回车键确定即可显示当前操作系统. 2.输入"uname -a"并按回车键确定即可显示当前操作系统内核版本. Linux内核版本有两种: ...

  8. 【会议记录】Linux内核的最新进展(6.2版本)分享

    前一段时间我参加了阅码场的活动 Yomoday(北京场),现场有很多技术专家,非常多前沿的技术分享.这是其中一个主题的记录,尽量还原当时的分享内容,但也可能有些地方不特别准确. Linux内核的最新进 ...

  9. Open vSwitch(OVS)版本与Linux内核的关系

    不同的Linux kernel需要不同的Open vSwitch版本, Ubuntu16.04的最新版Linux内核是4.15.2,只能在上面安装Open vSwitch的2.10和2.11版本. O ...

  10. linux内核引入模块机制好处,linux内核模块的版本检查机制

    linux内核对插入的内核模块进行严格的版本检查,即使一个小版本号不一致也会导致加载的不成功,这完全是为了内核本身运行安全.由于linux内核的发布是基于版本号的,而所有的内核模块的开发必须依赖内核头 ...

最新文章

  1. 主流机器学习[xgb, lgb, Keras, LR]
  2. php中url问题,PHP中URL域的解析
  3. vs 调试 无法加载自定义可视化工具_推荐 5 款好用的REST API工具
  4. STM32F4 HAL库开发 -- STM32F407引脚图
  5. 华为手机日历倒计时_倒计时40小时!谁来拿走这台华为手机?
  6. 1005 继续(3n+1)猜想 (25 分)(c语言实现)
  7. 嵌入式名词以及简略说明
  8. postmapping注解_Swagger常用注解
  9. 学妹问,学网站开发还是打 ACM?
  10. php mysql某值相同时_php - Mysql3个字段,任何一个字段的值相同则为重复,语句应该怎么写?...
  11. Vue使用wangEditor 封装成独立组件实现富文本编辑器
  12. MTK手机官方ROM提取教程
  13. 增长率用计算机怎么算,操作方法:Excel使用公式来计算增长率教程
  14. Linux内存工具解析之RSS/VSS/USS/PSS区别于联系
  15. BOSS直聘直直4周岁生日会圆满举办
  16. JavaWeb——动态页面技术(JSP/EL/JSTL)
  17. Trinity安装全过程并解决部分报错
  18. codeforces 1567 C. Carrying Conundrum
  19. 原码、反码、补码之间的快速转换和简单运算
  20. 战争是怎样发生的(博弈论的诡计)

热门文章

  1. java offset函数的使用方法_js的offset是什么意思及使用详解
  2. 手机摄像头变成PC电脑摄像头
  3. heka 介绍,以及编译,备忘
  4. win11怎么开启休眠睡眠?
  5. java实现屏幕亮度调节
  6. Linux进程调度器的设计--Linux进程的管理与调度(十七)
  7. 一个DDD指导下的实体类设计案例
  8. mybatis基础(下)
  9. 学1个月爬虫就月赚6000?告诉你爬虫的真实情况!
  10. vs code快捷键