‘uname -a’ 显示的两个内核版本有啥区别?

Posted

技术标签:

【中文标题】‘uname -a’ 显示的两个内核版本有啥区别?【英文标题】:What's the difference between two kernel version shown by ‘uname -a’?‘uname -a’ 显示的两个内核版本有什么区别? 【发布时间】:2018-09-04 03:12:22 【问题描述】:

我使用的是debian 9.4,uname -a显示的内核版本不同,实际的内核版本是多少? '4.9.82-1+deb9u3' 是什么意思?

Linux debian 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux

apt-get source linux可以得到当前内核的源代码,然后我可以得到原始内核的tar文件和debian补丁。

$ls     
linux-4.9.82                         linux_4.9.82-1+deb9u3.dsc
linux_4.9.82-1+deb9u3.debian.tar.xz  linux_4.9.82.orig.tar.xz 

linux_4.9.82-1+deb9u3.debian.tar.xz 包含很多文件,它们是做什么用的?如何将它修补到linux_4.9.82.orig.tar.xz

linux-4.9.82apt-get source命令输出的内核源码文件夹,可以编译成vmlinux。但是,我通常无法使用 vmlinux 调试故障转储文件,因为“崩溃”命令会给出错误消息:版本不匹配。我应该从 kernel.org 下载 kernel 4.9.0 而不是 linux-4.9.82 来调试我当前正在运行的内核吗?

【问题讨论】:

【参考方案1】:

你有包版本。名称由:

4.9.82:上游版本 -14.9.82 上游包的分隔符和 Debian 版本。注意:如果 Debian 也是软件包的上游,则跳过此字段。 +deb9u3:这是一种微版本。 +deb 用于安全建议,因此与4.9.82-1 相比变化很小。 9 是 Debian 版本,u3 是第三个安全版本。

但是内核是不同的(与大多数其他软件包相比):一个可以并行安装许多(但它只会使用一个)。所以在包名中你可能有linux-image-4.9.0-3-amd64。在我的系统中,这个包的版本是4.9.30-2+deb9u1。所以4.9 是内核版本。 -amd64 是架构,这是4.9(.0) 系列的第三个主要Debian 版本(-3),它基于4.9.30

命令uname 将在kernel-release 字段中为您提供内核(作为软件包名称,如此接近功能)和在字段kernel-version 中提供软件包版本(如此精确地引用源代码)。

对于主要问题:我会使用原始内核,并使用上游方法编译(如果我认为该错误与内核相关,因此更容易与内核维护者讨论),或者我会使用 Debian 源代码(ev 和补丁),并使用 Debian 工具构建内核(并安装软件包以安装内核),如果我认为问题出在 Debian 中,或者只是在旧内核版本上。

【讨论】:

非常感谢。所以你的意思是 4.9.82 是我系统中从 kernel.org 获得的原始真实内核版本? @Giacomo Catenazzi

以上是关于‘uname -a’ 显示的两个内核版本有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

命令分析_uname

信息显示和搜索命令

linux系统中参数-和--有啥区别?

VMware vSphere 和ESXI主机有啥区别和联系

内核 API 中的 __class_create() 和 class_create() 有啥区别?

如何修改Linux内核来改变uname返回的版本字符串?