热门推荐
The Linux Kernel
2025-01-12 16:37

“无回归规则”的目标是什么?

用户应该放心升级内核版本,而不必担心有程序可能崩溃。这符合内核开发者的利益, 可以使更新有吸引力:他们不希望用户停留在停止维护或超过一年半的稳定/长期Linux 版本系列上。这也符合所有人的利益,因为 。 此外,内核开发者希望使用户测试最新的预发行版或常规发行版变得简单而有吸引力。 这同样符合所有人的利益,如果新版本出来后很快就有相关报告,会使追踪和修复问题 更容易。

实际中“无回归”规则真的可行吗?

这不是句玩笑话,请见Linux创建者和主要开发人员Linus Torvalds在邮件列表中的许 多发言,其中一些在 中被引用。

此规则的例外情况极为罕见;之前当开发者认为某个特定的情况有必要援引例外时, 基本都被证明错了。

谁来确保“无回归”被落实?

照看和支撑树的子系统维护者应该关心这一点——例如,Linus Torvalds之于主线, Greg Kroah-Hartman等人之于各种稳定/长期系列。

他们都得到了别人的帮助,以确保回归报告不会被遗漏。其中之一是Thorsten Leemhuis,他目前担任Linux内核的“回归跟踪者”;为了做好这项工作,他使用了 regzbot——Linux内核回归跟踪机器人。所以这就是为什么要抄送或转发你的报告到 回归邮件列表来通知这些人,已经最好在你的邮件中包含“regzbot命令”来立即追踪它。

回归通常多久能修复?

开发者应该尽快修复任何被报告的回归,以提供及时为受影响的用户提供解决方案,并 防止更多用户遇到问题;然而,开发人员需要花足够的时间和注意力确保回归修复不会 造成额外的损害。

因此,答案取决于各种因素,如回归的影响、存在时长或出现于哪个Linux版本系列。 但最终,大多数的回归应该在两周内修复。

当问题可以通过升级某些软件解决时,是回归吗?

基本都是。如果开发人员告诉您其他情况,请咨询上述回归跟踪者。

当新内核变慢或能耗增加,是回归吗?

是的,但有一些差别。在微型基准测试中变慢5%不太可能被视为回归,除非它也会对 广泛基准测试的结果产生超过1%的影响。如果有疑问,请寻求建议。

当更新Linux时外部内核模块崩溃了,是回归吗?

不,因为“无回归”规则仅限于Linux内核提供给用户空间的接口和服务。因此,它不包括 构建或运行外部开发的内核模块,因为它们在内核空间中运行与挂进内核使用的内部接 口偶尔会变化。

如何处理安全修复引起的回归?

在极为罕见的情况下,安全问题无法在不引起回归的情况下修复;这些修复都被放弃了, 因为它们终究会引起问题。幸运的是这种两难境地基本都可以避免,受影响区域的主要 开发者以及Linus Torvalds本人通常都会努力在不引入回归的情况下解决安全问题。

如果你仍然面临此种情况,请查看邮件列表档案是否有人尽力避免过回归。如果没有, 请报告它;如有疑问,请如上所述寻求建议。

当修复回归时不可避免会引入另一个,如何处理?

很遗憾这种事确实会出现,但幸运的是并不经常出现;如果发生了,受影响代码区的资 深开发者应当调查该问题以找到避免回归的解决方法,至少避免它们的影响。如果你遇 到这样的情况,如上所述:检查之前的讨论是否有人已经尽了最大努力,如有疑问请寻 求建议。

小提示:如果人们在每个开发周期中定期给出主线预发布(即v5.15-rc1或-rc3)以供 测试,则可以避免这种情况。为了更好地解释,可以设想一个在Linux v5.14和v5.15-rc1 之间集成的更改,该更改导致了回归,但同时是应用于5.15-rc1的其他改进的强依赖。 如果有人在5.15发布之前就发现并报告了这个问题,那么所有更改都可以直接撤销,从 而解决回归问题。而就在几天或几周后,此解决方案变成了不可能,因为一些软件可能 已经开始依赖于后续更改之一:撤销所有更改将导致上述用户软件出现回归,这是不可 接受的。

若我所依赖的功能在数月前被移除了,是回归吗?

是的,但如前节所述,通常很难修复此类回归。因此需要逐案处理。这也是定期测试主 线预发布对所有人有好处的另一个原因。

如果我似乎是唯一受影响的人,是否仍适用“无回归”规则?

适用,但仅限于实际使用:Linux开发人员希望能够自由地取消那些只能在阁楼和博物 馆中找到的硬件的支持。

请注意,有时为了取得进展,不得不出现回归——后者也是防止Linux停滞不前所必需 的。因此如果回归所影响的用户很少,那么为了他们和其他人更大的利益,还是让事情 过去吧。尤其是存在某种规避回归的简单方法,例如更新一些软件或者使用专门为此目 的创建的内核参数。

回归规则是否也适用于staging树中的代码?

不,参见 , 其早已声明:

虽然staging开发人员通常坚持“无回归”的原则,但有时为了取得进展也会违背它。这就 是为什么当staging树的WiFi驱动被基本推倒重来时,有些用户不得不处理回归(通常可 以忽略)。

为什么较新版本必须“使用相似配置编译”?

因为Linux内核开发人员有时会集成已知的会导致回归的变更,但使它们成为可选的,并 在内核的默认配置下禁用它们。这一技巧允许进步,否则“无回归”规则将导致停滞。

例如,试想一个新的可以阻止恶意软件滥用某个内核的接口的安全特性,同时又需要满足 另一个很罕见的应用程序。上述的方法可使两方都满意:使用这些应用程序的人可以关闭 新的安全功能,而其他不会遇到麻烦的人可以启用它。

如何创建与旧内核相似的配置?

用一个已知良好的内核启动机器,并用 配置新版的Linux。这 会让内核的构建脚本从正在运行的内核中摘录配置文件(“.config”文件),作为即将编 译的新版本的基础配置;同时将所有新的配置选项设为默认值,以禁用可能导致回归的 新功能。

如何报告在预编译的普通内核中发现的回归?

    以上就是本篇文章【The Linux Kernel】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/quote/30571.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多