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

Lek*_*eyn 21 updates kernel

正如您在 Linux 内核变更日志中所见,有诸如“Bump ABI - Maverick ABI 28”之类的更新消息。

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

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

use*_*974 13

首先,您不是在查看 linux 内核的更改日志。您正在查看元包,它是一个依赖于最新内核的包。你可能想要这样的东西: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 提升并不意味着新功能,只是关键修复和安全更新。

  • 感谢您指出它只是一个元包。我已经忘记了。`aptitude changelog linux-image-2.6.35-28-generic` 显示更改列表。我不确定为什么元包不包含 `linux-{image,headers}-*-generic` 包的更新;也许是因为还有 `linux-{image,headers}-*-server` 包? (2认同)

Rol*_*Xor 12

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

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


And*_*ini 7

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

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

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

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