如何阻止 Ubuntu 内核版本升级和通知?
我想让我的系统不要获取或提示我进行内核升级和 DIST 升级。
但是我确实想获得所有软件包更新和安全更新。
我查看了几篇帖子,但它们都是关于“Holds”包的,对于我想要的来说太过详细了。我只想防止 Ubuntu 升级到新的发行版(如 16.10),这给我带来了问题,以及较新的内核,导致启动到恢复模式时我的鼠标和键盘无法使用。
我希望保持现有 dist. 不变,并获取任何新的软件包更新或安全更新。我不想禁用所有更新,但如果这是最简单的选择,我可以这样做。
答案1
谢谢 Mikewhatever 澄清我需要使用包裹保留。
我用的是这个邮政作为参考并运行命令:
uname -r
查找我的内核版本。它给出了输出:
4.10.0-27-generic
然后我运行命令:
sudo apt-mark hold 4.10.0-27-generic
并给出输出:
linux-cloud-tools-4.10.0-27-generic set on hold.
linux-headers-4.10.0-27-generic set on hold.
linux-image-4.10.0-27-generic set on hold.
linux-image-extra-4.10.0-27-generic set on hold.
linux-signed-image-4.10.0-27-generic set on hold.
linux-tools-4.10.0-27-generic set on hold.
我相信这应该是我想要实现的。
答案2
更新:此特定方法仅适用于某些主要内核版本;特别是 5.4.0-xx。(使用更复杂的规则可能会apt-mark hold
保留在例如 5.8.0-xx 内核上)
在过去的几次尝试中,我经常遇到这个问题,试图弄清楚如何对原始问题进行稍微修改:
如何将 Ubuntu 内核冻结在 5.4.0-x 版本(例如,专门针对 Ubuntu 20.04),以便我仍然获得小升级,但不会升级到另一个“主要”版本,例如 5.8.0-x
在这个特定案例中,诀窍是执行以下操作:
# This prevents installation of, or further upgrades of the package that results in a 5.8 kernel being installed
sudo apt-mark hold linux-generic-hwe-20.04
# This will pull in the latest 5.4 Ubuntu kernel, and receive subsequent 5.4.0-x patches too
sudo apt install linux-generic-hwe-18.04
我不确定这是否完全适用于所有情况,但至少截至 2021 年 1 月,这对 Ubuntu 20.04 有效。(在我的情况下,触发事件是我的 5.4 机器在 2021 年 1 月的第一周开始自动更新到 5.8)。另请注意,我不是专家,但对此进行过相当多的测试。我可能有一些重要的细微差别是错误的……
但如果你已经有了较新的主版本内核安装(例如通过无人值守升级),您可能也想卸载它。我使用以下命令/正则表达式没有遇到任何问题确认以下命令将删除哪些软件包:
dpkg -l | grep -o -P "^ii\s+linux-[\w]-5\.(8|11|13)\.0[\d\S]+"
删除命令也非常相似:
sudo apt remove -y $(dpkg -l | grep -o -P "\blinux-[\w]-5\.(8|11|13)\.0[\w]+\b")
最后,您需要在执行其他操作(包括执行任何操作)之前重新启动apt upgrade
。特别是如果您卸载了当前正在运行的内核软件包,则在重新启动之前运行其他软件包的安装后脚本可能会不顺利!
有关 Ubuntu 内核选择的更多信息,也就是大致了解未来会发生什么,这个页面非常有用:https://ubuntu.com/about/release-cycle
注意:为了保险起见,你可以把apt-mark hold
所有三个都放上linux-generic-hwe-20.04 linux-headers-generic-hwe-20.04 linux-image-generic-hwe-20.04
,但实际上只保留第一个似乎就足够了。
nb 就我的情况而言,虽然大多数情况下您不需要按照这篇文章描述的方式操作,但是为了使某些硬件正常工作,我需要坚持使用较旧的主要内核版本。
nb2:在 Ubuntu 20.04 中,这种“删除 5.8 内核方法”后来在 5.11 内核中失效,并且可能也会在 5.13 内核中发生。我已相应地更新了上面的正则表达式。
答案3
总结前面的答案并允许它在任何内核上运行:
sudo apt-mark hold $(uname -r)
我为什么要这样做?本质上,内核 6.2 破坏了我的操作系统所在的 NVME,如果内核升级,它将无法启动。这个问题在 6.6 中得到了修复,但硬盘所在的 raid 控制器不再起作用,因为尚未为其构建支持。这是一个临时措施,直到 High-Point 为新内核制作出可靠的驱动程序。