我们有一组运行 CentOS 的虚拟机。当我运行我的脚本时,我可以通过cat /etc/centos-release来看到这些服务器上运行的不同版本的CentOS。我看到了从 CentOS 7.2 到 7.9 的所有内容。
我还通过运行 uname -a 发现我查询的所有 CentOS 7 服务器都具有相同的内核版本(3.10.0-693)。这些服务器都运行 CentOS 7,但点版本从 7.2 到 7.9 不等。
$ uname -a
Linux myhostname 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
在这种情况下,内核版本与 CentOS 的发行版本有何关联?也许我不理解这里的一些基本内容,但我预计内核版本会随着 CentOS 7 的每个点发布而改变。
我找到了一个链接,显示了不同的 Linux 操作系统发行版及其各自的内核版本,并且内核版本确实发生了变化(例如 CentOS 7.2 有 3.10.0-327,CentOS 7.3 有 3.10.0-514 等) https://knowledge.broadcom.com/external/article/150469/list-of-linux-distributions-and-kernels.html
希望有人能澄清我的困惑,或者如果这是超级简单和基本的事情,可以扇我一巴掌。
答案1
CentOS 7 是社区支持的 RHEL 7 克隆,而 RHEL 的内核策略长期以来一直是在每个主要版本中冻结内核版本(请参阅https://access.redhat.com/articles/3078)。
CentOS 的构建来源与 RHEL 相同(仅替换徽标、商标和类似的受版权保护的资产),因此它反映了相同的政策。多年来,内核和发行版的版本编号方案都略有不同,但原理是相同的:
- RHEL 2.1(GA 和所有更新级别 1-7)的内核版本为 2.4.9
- RHEL 3(GA 和每个更新级别 1-9)的内核版本为 2.4.21
- RHEL 4(GA 和每个更新级别 1-9)的内核版本为 2.6.9
- RHEL 5.x(RHEL 版本编号样式更改)的内核版本为 2.6.18
- RHEL 6.x 的内核版本为 2.6.32
- RHEL 7.x 的内核版本为 3.10(Linus 更改了内核版本方案:主要版本现在为 xy[.0],次要版本为 xyz)
- RHEL 8.x 的内核版本为 4.18
维基百科有 CentOS 发布日期和内核版本的列表:https://en.wikipedia.org/wiki/CentOS#CentOS_releases
在RHEL/CentOS中,内核版本号由两部分组成:
- 破折号之前的部分是上游版本号,指的是该 RHEL 内核基于哪个内核版本。
- 破折号后面的部分是补丁级别,表示红帽添加的各种向后移植的错误修复和硬件支持补丁
通过冻结上游版本,红帽使第三方驱动程序开发人员可以更轻松地在整个生命周期中继续支持红帽的特定主要版本,因为可以尽可能避免对内部内核工作方式进行重大更改。 (当然,修复已发现的安全漏洞可能需要进行重大更改,就像 2018 年 1 月及之后的 Spectre/Meltdown 系列漏洞所发生的那样。)
3.10.0-693 将是 CentOS 7.4 的内核版本(2017-09-13 发布),表明您看到的 CentOS 7.2 和 7.3 服务器的内核已更新到 7.4 级别,尽管它们可能会被冻结到较低的释放级别。这表明冻结版本级别可能是出于应用程序支持原因(即某些第三方应用程序具有昂贵的支持协议,仅在特定版本级别上有效),并且内核更新可能是由虚拟化框架要求或缓解措施强制执行的存在严重的安全漏洞。
CentOS 7.5 及更高版本还显示 7.4 的内核版本这一事实可能只是因为这些系统在更新后尚未重新启动,因此这些系统可能有一个或多个更新的内核版本等待下次重新启动时生效。
由于 CentOS 7.4 及其内核版本 3.10.0-693 早于 Spectre/Meltdown 漏洞,需要进行相当大的内核更改才能缓解,因此内核版本表明您的系统当前容易受到一整类基于 Spectre/Meltdown 的攻击。
注意:我在尝试将 Spectre/Meltdown 之前版本的第三方驱动程序与 Spectre/Meltdown 后内核一起使用时经历过痛苦的经历。因此,如果您使用第三方驱动程序,请确保它们也得到适当更新。
如果您的虚拟化框架要求您使用虚拟化主机提供的内核,请联系主机管理员以了解您需要做什么才能让您的虚拟机运行具有 Spectre/Meltdown 修复程序的内核。