在 Debian Stretch 发行版上,如果我运行uname -a
,我会获得:
Linux index 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
如果我运行dpkg -s linux-image-amd64 | grep Version
,我会获得:
Version: 4.9+80+deb9u6
上述命令打印了三个不同的内核版本:
- 4.9.0-8
- 4.9.144-3.1
- 4.9+80+deb9u6
我的问题是:这些不同的版本是什么,它们的含义是什么?
“80+deb9u6”是源码包的
linux-latest
版本;这会构建为每个平台提取当前内核包的元包,例如linux-image-amd64
您拥有的,并使用基本内核版本进行版本控制,从而产生 4.9+80+deb9u6。“4.9.0-8”是内核的ABI版本;它出现在特定内核的包名中,例如
linux-image-4.9.0-8-amd64
. 版本代表内核系列的基数,并且每次内核 ABI 以不兼容的方式更改时都会增加一个数字 - 就用户而言,每当需要重新编译树外模块时。“4.9.144-3.1”是内核的包版本。这遵循标准的 Debian 版本控制方案:4.9.144 是上游内核版本,您可以匹配上游内核版本,3.1 是打包的版本。给定上游版本的第一个包,通常给定打包的版本1,然后每次上传新包(不改变对应的上游),打包版本递增。您可以在Debian 特定的更改日志中查看每个版本中更改的详细信息。
所有这些结合起来提供了许多对最终用户有用的功能:
linux-image-amd64
,并确保他们始终拥有最新的可用内核包 - 目前元包是 4.9+80+deb9u6 版本,它会引入 ,linux-image-4.9.0-8-...
并且当内核版本或 ABI版本更改,将上传一个新的元包;