什么是“ Bump ABI”的内核更新?


19

如您在Linux内核更改日志中所看到的,有更新消息,例如“ Bump ABI-Maverick ABI 28”。

根据Ubuntu Wiki,ABI就像是内核空间和其他模块之间的桥梁(我的解释)。

这样的更新是否增加了额外的功能和/或错误修正?我应该将内核升级到下一个版本吗?

Answers:


12

注意: 我不是内核专家-所以这是基于所收集的知识和经验。

ABI“碰撞”不应带来新功能,即使它可能“修复”正在寻找更高版本ABI的某些模块/应用程序中的错误。您仍然应该安装这些更新,因为通常使所有组件保持同步将确保稳定性和安全性。


12

首先,您无需查看linux内核的changelog。您正在查看meta软件包,它是依赖于最新内核的软件包。您可能想要类似以下内容:http : //changelogs.ubuntu.com/changelogs/pool/main/l/linux-image-2.6.35-28-generic/linux-image-2.6.35-28-generic_2.6.35- 28.50 /变更日志

此元数据包的目的是通过这些ABI过渡来过渡用户。

我对ABI和内核持有与您相同的观点。实际上,ABI冲击意味着所有模块都需要针对更新后的内核进行重建。

我的理解也与Roland一致,因为ABI漏洞并不意味着新功能,而仅意味着关键修复和安全更新。


2
感谢您指出这只是一个元数据包。我已经忘记了。aptitude changelog linux-image-2.6.35-28-generic显示更改列表。我不确定为什么元软件包不包含linux-{image,headers}-*-generic软件包的更新。也许是因为还有linux-{image,headers}-*-server包裹?
Lekensteyn 2011年

4

ABI是应用程序二进制接口(不要与API混淆,应用程序编程接口)。ABI定义了应用程序正在使用的大小,符号和数字的顺序。

明确地说,这是一个示例:我想对建筑物的年龄进行编码,以年为单位。为此,我可以使用C unsigned char,它是一种大小为1个字节的类型,可以对0到255之间的值进行编码。现在假设我发现255的限制太低了,因为有些建筑物的建造量更大。比255年前 然后unsigned int,我可以使用4字节长的C ,并且可以对0到65535之间的值进行编码。

将类型从更改charint,我没有更改字段的语义(这是一个以年表示的年龄,现在仍然是),但是我更改了它的大小。与我的应用程序交互的每个软件都不需要更改,但是会说不同的“语言”。

因此,当内核更改其ABI时,意味着它已经更改了其使用的语言,但是未添加,删除或修改任何功能。必须重新编译必须与内核交互的所有第三方模块,才能使用这种新语言,但是无需对其进行任何更改即可正常工作。

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.