是什么阻止发行版使用最新的Linux内核?[关闭]


13

大多数Linux发行具有一定的内核版本,只有它更新发行点(x.y.zx.y.(z+1))和安全更新。

另一方面,我知道Linux有一个非常严格的策略,即不更改内核ABI,并且永远不会破坏用户空间。实际上,Linus有许多针对希望(有意或无意)更改内核是非向后兼容方式的开发人员的公开发脾气。

我不明白为什么发行版使用“稳定”内核而不是始终更新到最新内核。这不是批评,我只是对原因感到好奇。


1
因为最新的内核缺乏测试。它可能包含可能影响系统稳定性的错误,而稳定性是任何发行版维护人员的主要关注点。

Answers:


8

Linux内核的系统调用接口非常稳定。但是内核还有其他并不总是兼容的接口。

  • /proc基本上是稳定的,但过去进行了一些更改(例如,某些接口/sys/sys创建后移到某个时间)。
  • 过去已删除了许多与设备相关的接口。
  • /sys包含一些稳定的接口(列在中Documentation/ABI/stable),而有些则不是。您不应该使用那些不是的,但是有时候人们会使用,简单的安全性和稳定性升级就不会给他们带来麻烦。
  • 过去,modutils一直不兼容(较新的内核要求使用较新版本的modutils),尽管我认为这已经有一段时间了。
  • 在某些异常配置上,引导过程也存在不兼容性。即使增加内核的大小,也可能在某些嵌入式系统上引起问题。
  • 尽管内核的外部接口非常稳定,但内部接口却不稳定。内部接口的规则是,只要它们修复内部使用,任何人都可以破坏它们,但是修复第三方模块是所述模块的作者的责任。总体上,很多安装程序都运行第三方模块:内核不支持的硬件的额外驱动程序(如果新内核支持该硬件,那很好,但是如果新内核不支持),专有驱动程序(如果所有驱动程序都是开源的,那么整个世界都会变得更美好,但事实并非如此;例如,如果您想要良好的3D GPU性能,则几乎会被专有驱动程序所困)。
  • 有些人需要重新编译其内核或某些第三方模块。较新的内核通常无法使用较旧的编译器进行编译。

总而言之,不切换到最新内核版本的主要原因是第三方模块。

尽管如此,某些发行版还是提供了最新内核的选项。例如,Debian通过反向移植使测试的内核可供稳定版本的用户使用。同样,在Ubuntu LTS上,可以使用更新版本的Ubuntu内核,但默认情况下不使用。这对于最终确定发行版时尚不支持的硬件上的新安装非常有用。


9

我没有为发行版工作,但至少可以想到两个原因:

  • 一些发行版将其自定义补丁程序应用到尚未合并到主线中的内核。这意味着对于内核的每次更新,他们都需要确保其补丁程序不会破坏任何东西,并且仍能正常运行。
  • 即使是最新的稳定内核发行版也可能包含错误,对可靠性非常重视的发行版也需要在将内核提供给客户之前经历一些测试过程/过程。

2
无论如何,特定于发行版的补丁不一定要用于上游。而且,最新的上游内核平均比发行版经过测试的“普通”内核包含更多的错误。发行版分发的内核所做的大部分工作是设法消除/修复尽可能多的错误,同时不对代码进行过多的更改。
Faheem Mitha

0

为了稳定起见,更保守的发行版遵循(并积极参与)稳定的内核版本。更有冒险精神的人使用最新最出色的香草之后的一个或多个内核版本,以及从开发提示(以及一些本地开发的)中反向移植的补丁。

当前的内核开发政策是Linus的版本会开发闪亮的新玩具,并且不惧怕批量更改。某些版本被认为足够稳定(在开发方面),可以构成进行严格测试和稳定的基础,并提供稳定的系列。

由于使用了这些工具,所有这些都是可能的,每个人都可以修饰自己的git树,使有趣的上游分支和树保持本地同步,从其他人窃取提交,并自由共享本地更改。


稳定内核系列不是根据特定版本的稳定性来选择的,而是任意的。从今年开始,稳定系列将基于每年发布的第一个版本...每个内核发行版都应该是稳定的,并且永远不会破坏向后兼容性。
史蒂芬·基特
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.