uname -r
我的系统上的输出是4.19.0-kali1-amd64
.我注意到在存储库列表有多个linux-image-4.19.0-kali#
,每个都有不同的编号,从 kali1 到 kali5。
这个数字有什么意义呢?为什么其中一些号码没有所有版本包?可以换号码吗?
有关更多上下文:我的 vmware-workstation 的最近更新正在我的系统上查找,linux-headers-4.19.0-kali1-amd64
但在存储库中找不到这些。我可以找到 kali3、4 和 5 的这些图像。
答案1
它是从 Debian 复制的。在 Debian 上,数字发生变化,例如从4.19.0-4-amd64到4.19.0-5-amd64意味着打包器声明(内部内核)ABI 发生变化,需要重新编译外部模块等。当没有进行 ABI 更改时,内核更新将在之前的版本上完成,并且其所有模块将更新到较新的版本。虽然需要重新启动才能使用新内核,但即使以前未加载的模块也可以在新版本中使用。外部模块不会看到差异,因为 ABI 保持不变。
所以假设你有这个模块nat-rtsp-dkms需要像任何 DKMS 模块一样从源代码构建。如果内核升级被认为不会破坏 ABI,则无需重新构建此模块。如果现在升级被认为破坏了 ABI,则名称的更改(由元包的依赖关系暗示)linux-image-amd64)将安装新的内核版本,这将触发此外部模块的重新编译。这同样适用于 VMware 的外部内核模块。
从最近的linux-image-amd64变更日志:
linux-latest (105+kali1) kali-experimental; urgency=medium * Sync with Debian * Rebuild for 4.19.0-kali5 -- Sophie Brun <[email protected]> Thu, 09 May 2019 11:01:17 +0200 linux-latest (105) unstable; urgency=medium * Update to 4.19.0-5 -- Ben Hutchings <[email protected]> Tue, 07 May 2019 16:33:50 +0100
视实际情况而定linux-image-4.19.0-kali5-amd64,其变更日志记录了 ABI 变更,以及有时解释了原因。以下是最后一部分中对 ABI 2 更改的一些摘录和解释:
linux (4.19.37-2kali1) kali-experimental; urgency=medium * Sync with Debian -- Sophie Brun <[email protected]> Wed, 15 May 2019 09:08:08 +0200 linux (4.19.37-2) unstable; urgency=high * debian/bin: Fix Python static checker regressions (Closes: #928618)
[...]
linux (4.19.37-1kali1) kali-experimental; urgency=medium * Sync with Debian -- Sophie Brun <[email protected]> Thu, 09 May 2019 10:41:49 +0200 linux (4.19.37-1) unstable; urgency=medium
[...]
[ Ben Hutchings ] * debian/bin/abiupdate.py: Automatically select the correct archive to fetch from * debian/bin/abiupdate.py: Change default URLs to use https: scheme * [powerpc*] vdso: Make vdso32 installation conditional in vdso_install (Closes: #785065) * Bump ABI to 5
[...]
linux (4.19.16-1kali1) kali-experimental; urgency=medium * Sync with Debian -- Sophie Brun <[email protected]> Mon, 21 Jan 2019 13:41:42 +0100 linux (4.19.16-1) unstable; urgency=medium
[...]
[ Yves-Alexis Perez ] * Bump ABI to 2 because of changes in struct sock_common from 60f05dddf1eb
注意linux-标头-*软件包来自同一来源,因此与linux-图像-*包。通常需要更换相关的linux-标头-*包使其与目标内核匹配,以便能够成功构建外部模块。对于非打包的外部模块也是如此(其中一些模块,可能是 VMware 的,只查看当前运行的内核而不是目标内核)。
如果 Kali 包再也找不到了(这在 Debian 上不会发生,因为快照.debian.org),您可以将内核升级到标头和内核都可用的通用版本:您应该安装两者linux-image-4.19.0-kali5-amd64和linux-headers-4.19.0-kali5-amd64(并且可能在构建之前重新启动,以使 VMware 满意)。如果您构建自己的内核,请不要忘记保留关联的linux-标头-同时构建的包。
尽管如此,如果在重新启动到较新的内核后,VMware 确实坚持使用特定的 kali1,而不是与正在运行的内核匹配的 kali1,那么您就不走运了,必须等待 VMware 的更新或找到解决方法。