【问题标题】:How to get the bug fixes or patches between two linux kernel versions?如何获得两个 Linux 内核版本之间的错误修复或补丁?
【发布时间】:2021-12-17 16:29:57
【问题描述】:

我正在尝试查找与两个内核版本之间已修复的错误相关的信息。

假设在我的 ubuntu 上当前内核版本是 5.4.0,所以我想知道在 5.4.0 - 5.4.1 或 5.5.0 之间修复的错误或安全风险是什么

【问题讨论】:

标签: linux-kernel kernel


【解决方案1】:

我知道这对提问者来说并不明显,但问题有点不明确。让我解释一下。

问题是:在这个问题的上下文中,什么是“内核版本”?

对于“主要”(上游,即最终https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ 或其维护的分支之一)Linux 开发,“版本”是一种git 提交标记,可以找到并创建差异/更改日志使用git 命令,例如:

~/build/linux$ git log --pretty=oneline  v5.15-rc5..v5.15-rc6
519d81956ee277b4419c723adfb154603c2565ba (tag: v5.15-rc6) Linux 5.15-rc6
cd079b1f870729a9fe3294f800dff18b548f129d Merge tag 'libata-5.15-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata
f2b3420b921d142b4c55f7445385bdab4060d754 Merge tag 'block-5.15-2021-10-17' of git://git.kernel.dk/linux-block
cc0af0a95172db52db2ab41b1e8a9c9ac0930b63 Merge tag 'io_uring-5.15-2021-10-17' of git://git.kernel.dk/linux-block
3bb50f8530c9cb5ec69c0744b7fd32d0ca404254 Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
be9eb2f00fa7245116d49f76614054cce8e07af8 Merge tag 'powerpc-5.15-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
...

所以这部分很“简单”。

但这与 ubuntu 内核更改日志完全不同,即使对于相同的版本标签也是如此……而且它们永远不会相同

首先,Ubuntu(和 Debian,以及某些其他发行版)将内核构建拆分为多个包。即使以相同的方式“标记版本”,它们也可以包含不同的更改。

就我而言,目前是 Ubuntu 20.04,我有:

~/build/linux$ dpkg -S /lib/modules/`uname -r` /boot/vmlinuz-`uname -r`
linux-modules-5.11.0-38-lowlatency, linux-headers-5.11.0-38-lowlatency: /lib/modules/5.11.0-38-lowlatency
linux-image-5.11.0-38-lowlatency: /boot/vmlinuz-5.11.0-38-lowlatency

即三个包,linux-moduleslinux-headerslinux-image

您可以向包子系统 (apt) 询问有关以下内容的 (*.deb 包) 更改日志:

$ apt changelog linux-image-5.11.0-38-lowlatency

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Get:1 https://changelogs.ubuntu.com linux-signed-hwe-5.11 5.11.0-38.42~20.04.1 Changelog [102 kB]
linux-signed-hwe-5.11 (5.11.0-38.42~20.04.1) focal; urgency=medium

  * Master version: 5.11.0-38.42~20.04.1

 -- Stefan Bader <stefan.bader@canonical.com>  Tue, 28 Sep 2021 17:39:40 +0200

linux-signed-hwe-5.11 (5.11.0-37.41~20.04.2) focal; urgency=medium

  * Master version: 5.11.0-37.41~20.04.2

 -- Stefan Bader <stefan.bader@canonical.com>  Fri, 24 Sep 2021 10:43:02 +0200
...

但正如您所见,这些“元引用” - 指向 Ubuntu 的主要发行版内核分支。

在这一点上......你深深地陷入了依赖于发行版的行为(Ubuntu 打包/维护它们的内核与 Debian 的做法不同,更不用说与 RHEL/CentOS 或 Alpine 的差异,或或或或......) .

对于 Ubuntu,“发行版内核”在 git https://wiki.ubuntu.com/Kernel/Dev/KernelGitGuide 上可用,您可以再次克隆它并查询差异(现在使用“Ubuntu 版本”标签),如上所示的主线。我把它作为练习留给读者:-)

对于其他 Linux 发行版(首先是 RHEL 衍生产品), 更改日志包含应用更改的简短描述以及(发行版)错误编号 rpm --changelog kernel(通常)。但至少 Redhat 没有可用于查看实际代码更改的开放/公共 git 存储库。

要解释为什么(以及如何,即它们何时/如何与主线同步和/或选择性地向后移植)发行版维护自己的内核树的原因将远远超过这篇 SO 帖子的余量;我暂时搁置这一点,作为题外话。主要问题。

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 2016-10-14
    相关资源
    最近更新 更多