如您在Linux内核的更改日志中所看到的,有更新消息,例如“ Bump ABI-Maverick ABI 28”。
根据Ubuntu Wiki,ABI就像是内核空间和其他模块之间的桥梁(我的解释)。
这样的更新是否增加了额外的功能和/或错误修正?我应该将内核升级到下一个版本吗?
如您在Linux内核的更改日志中所看到的,有更新消息,例如“ Bump ABI-Maverick ABI 28”。
根据Ubuntu Wiki,ABI就像是内核空间和其他模块之间的桥梁(我的解释)。
这样的更新是否增加了额外的功能和/或错误修正?我应该将内核升级到下一个版本吗?
Answers:
首先,您无需查看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漏洞并不意味着新功能,而仅意味着关键修复和安全更新。
ABI是应用程序二进制接口(不要与API混淆,应用程序编程接口)。ABI定义了应用程序正在使用的大小,符号和数字的顺序。
明确地说,这是一个示例:我想对建筑物的年龄进行编码,以年为单位。为此,我可以使用C unsigned char
,它是一种大小为1个字节的类型,可以对0到255之间的值进行编码。现在假设我发现255的限制太低了,因为有些建筑物的建造量更大。比255年前 然后unsigned int
,我可以使用4字节长的C ,并且可以对0到65535之间的值进行编码。
将类型从更改char
为int
,我没有更改字段的语义(这是一个以年表示的年龄,现在仍然是),但是我更改了它的大小。与我的应用程序交互的每个软件都不需要更改,但是会说不同的“语言”。
因此,当内核更改其ABI时,意味着它已经更改了其使用的语言,但是未添加,删除或修改任何功能。必须重新编译必须与内核交互的所有第三方模块,才能使用这种新语言,但是无需对其进行任何更改即可正常工作。
aptitude changelog linux-image-2.6.35-28-generic
显示更改列表。我不确定为什么元软件包不包含linux-{image,headers}-*-generic
软件包的更新。也许是因为还有linux-{image,headers}-*-server
包裹?