Answers:
当然,只要检查是否dpkg
知道就可以了。
首先检查您正在运行的内核版本。
uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
然后告诉dpkg
在dpkg
数据库中搜索内核映像文件。
dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
或者,最好dlocate
从dlocate
包装中使用。dlocate
首先从dpkg
数据库构建一个缓存,然后使用它。所以它很快。
dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
最后,检查Debian档案文件是否包含此软件包。
apt-cache policy linux-image-3.2.0-4-amd64
linux-image-3.2.0-4-amd64:
Installed: 3.2.68-1+deb7u1
Candidate: 3.2.68-1+deb7u1
Version table:
*** 3.2.68-1+deb7u1 0
500 http://security.debian.org/ wheezy/updates/main amd64 Packages
100 /var/lib/dpkg/status
3.2.65-1 0
500 http://httpredir.debian.org/debian/ wheezy/main amd64 Packages
如果他们不这样做,则它是一个自定义程序包。当然,如果dpkg不了解映像文件,那么您的内核根本就不是软件包的一部分,而是已经本地编译的。
请注意,这apt
可以区分Debian归档文件中的软件包与本地编译的同名软件包之间的区别。我认为它会检查软件包的md5sum,但我忘记了它如何执行的细节。二进制软件包包含有关哈希的信息apt-cache show linux-image-3.2.0-4-amd64
,例如,请参见的底部。例如
Package: linux-image-3.2.0-4-amd64
Source: linux
Version: 3.2.68-1+deb7u1
Installed-Size: 105729
[...]
Size: 23483788
MD5sum: f9736f30f8b68ae79b2747d8a710ce28
SHA1: 64bfde903892801dccd04b52b12316901a02cd96
SHA256: 775814b3eff4a964b593c0bdeaac20587a4e3ddb1257a9d2bfcf1e9d3b9bfd15
apt-cache show ...
有效。我看错了。现在纠正。
至少,uname -r
将给出内核版本,例如3.18.6
。但是,在编译内核时,可以在其中配置并附加一个字符串,发行版通常会这样做以指示其自己的补丁程序级别(连字符后)和风味,例如3.18.6-32-generic
。这是一个线索。很明显,在创建自定义内核时使用自己的字符串可能是另一种方法。
uname -v
给出一个默认情况下是这样的字符串
#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015
从某种意义上讲,该数目是任意的,即该数目是使用特定的源树构建而未重置该树的内核数,这在您构建自己的树时可能很有用。 SMP
表示多任务(即非实时)内核,而PREEMPT是与调度程序的“抢占模型”相关的另一个配置选项。但是这里最重要的线索可能是它的构建时间。请记住,可以使用它来与内核本身的修改/更改时间戳进行匹配,例如可以使用进行更改touch
。例如,stat
在该内核上如下所示:
File: ‘3.19-goldilocksSpecial’
Size: 6858880 Blocks: 13400 IO Block: 4096 regular file
Device: 801h/2049d Inode: 3156605 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-02-15 15:32:29.000000000 -0500
Modify: 2015-03-03 13:55:21.000000000 -0500
Change: 2015-03-03 14:02:26.767045553 -0500
Birth: -
这与差不多Mon Mar 9 13:55:25 EDT 2015
。
和其他一样
sudo apt-cache policy linux-generic
是通过软件包管理器安装的版本,
uname -r
比较版本
对我来说
linux-generic:
Installed: 3.19.0.15.14
Candidate: 3.19.0.15.14
和
3.19.0-15-generic
表示相同的版本
/boot
。我的观点是,我不明白为什么uname
您只是在更改某些选项时重新编译才能期望输出的变化。在这种情况下,我期望apt-cache
和uname -r
将返回相同的信息,尽管您在本地重新编译。