当我跑
uname -r
我在我的 Debian7 上得到 3.2.0-4-686-pae,在我的 Gentoo 上得到 4.4.26-gentoo。
但是我在任何地方都找不到这些发行版使用的 Linux 内核源代码版本。如果我理解正确,所有发行版都从这里https://www.kernel.org获取内核源代码。那么,例如,我如何从该站点找出哪些 Linux 内核版本使用 4.4.26-gentoo 或 3.2.0-4-686-pae?
当我跑
uname -r
我在我的 Debian7 上得到 3.2.0-4-686-pae,在我的 Gentoo 上得到 4.4.26-gentoo。
但是我在任何地方都找不到这些发行版使用的 Linux 内核源代码版本。如果我理解正确,所有发行版都从这里https://www.kernel.org获取内核源代码。那么,例如,我如何从该站点找出哪些 Linux 内核版本使用 4.4.26-gentoo 或 3.2.0-4-686-pae?
尝试man uname
为使用的内核版本查找 -v。;)
因此,uname -v
或者uname -a
如果您只是不关心细节并希望看到这一切。:p
$ uname -v
#1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19)
$ uname -a
Linux Phobos 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
uname -r
查看part和uname -v
part中的区别uname -a
(-a中的第一个版本号)
$ uname -r
3.16.0-4-amd64
uname -r
是最简单的方法。
尽管有像 screenfetch 或 neofetch 这样的实用程序可以以清晰漂亮的方式为您提供更多信息。
只需运行screenfetch
它就会显示详细信息。(如今,大多数发行版通常都预装了 screenfetch)。
如果未安装,只需运行sudo apt install screenfetch
(在基于 debian 的发行版上,如 ubuntu)或sudo pacman -S screenfetch
(在基于 Arch 的发行版上。
如果您正在寻找匹配可浏览的原始 Linux 内核版本
https://elixir.bootlin.com/linux/vx.y.z/
或者你在开发内核代码时检查的LINUX_KERNEL_CODE,“uname”不是正确的答案!
有两种方法(我以我的 Ubuntu 16.04 为例):
dmesg
dmesg | grep "Linux\ 版本"
[0.000000]Linux 版本 4.4.0-210-generic (buildd@lgw01-amd64-009) (gcc 版本 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12))#242-Ubuntu SMP Fri Apr 16 09 :57:56 UTC 2021 (Ubuntu 4.4.0-210.242-generic 4.4.262 )
原来的内核版本是4.4.262!而 4.4.0-210-generic 是 Ubuntu 的内核编号。
安装内核源代码使用命令,如
sudo apt-get install linux-source
查看新安装的文件('uname -r' => 4.4.0-210-generic)
/lib/modules/4.4.0-210-generic/build/include/generated/uapi/linux/version.h
#define LINUX_VERSION_CODE 263423
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
该版本代码是 0x0404FF,表示 4.4.[>=255](其中 FF 表示补丁超过 255)。
--------下面有趣的阅读--------
看文件很有趣
/lib/modules/4.4.0-210-generic/build/include/generated/utsrelease.h
#define UTS_RELEASE "4.4.0-210-generic"
#define UTS_UBUNTU_RELEASE_ABI 210
现在我们知道 uname 和 /proc/version 从哪里得到它们的编号。
在我的 Ubuntu 20.04 5.4.0-80-generic
dmesg | grep "Linux\ versin"
[ 0.000000] Linux version 5.4.0-80-generic (buildd@lcy01-
amd64-030) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))
#90-Ubuntu SMP Fri Jul 9 22:49:44 UTC 2021
(Ubuntu 5.4.0-80.90-generic **5.4.124**)
和 LINUX_KERNEL_CODE 是
$ cat /lib/modules/5.4.0-80-generic/build/include/generated/uapi/linux/version.h
#define LINUX_VERSION_CODE 328828
其中 328828 = 0x05047C,表示5.4.124。
您有一些方法可以了解 linux 内核版本:
好办法
uname -r
查看内核版本的坏方法(如果它们具有内核版本号,您应该看到 vmlinu* initrd 文件的版本)
ls /boot | grep "vmlinu*"; ls /boot | grep "initrd*"
您可以尝试这种方式来了解您机器上的所有内核版本:
ls /lib/modules/