如何在错误更新后降级内核 (16.04)

Ala*_*met 24 upgrade grub2 kernel 16.04

最近升级到 Ubuntu 16.04 内核(4.4.0-89 和 -91)在我的笔记本电脑上失败了。令人高兴的是,我仍然安装了以前的工作版本(4.4.0-57)。现在我已经将 Grub 配置为向我显示菜单,并且我在启动时手动选择 -57,但这似乎很脆弱,将来可能会中断sudo apt upgrade

我想我想要:

  • 删除 -89 和 -91,因为它们对我没有任何好处。
  • 使 -57 成为 Grub 的默认值,以通过升级持续存在的方式。
  • 确保 -57 保持安装状态,即使我安装了以后的内核升级
  • 能够轻松尝试稍后的内核更新,但如果失败则恢复为 -57。我主要担心的是 -57 会被自动删除。
  • 如果我发现以后有一个功能正常的更新,一个简单的路径来返回撤消所有这些并返回到后续内核更新。

尝试删除 -91 withsudo apt remove linux-image-4.4.0-91-generic需要我删除 linux-generic 和 linux-headers-generic。感觉不好,所以没试过。

我可以找到关于一般问题的各种问题,但似乎没有一个能解决我的所有目标,而且大多数都足够老了,我认为它们不再适用。

做到这一点的最佳方法是什么?

附录:这被标记为如何防止更新特定包?. 该答案可能会解决我的问题的一部分,但并不能解决更大的问题。

从广义上讲,问题在于内核的处理方式不寻常。它是通过 linux-generic 安装的,它只是对 linux-image-generic 和 linux-image-headers 的依赖。那些反过来只是依赖于 linux-linux-image-VERSION-generic 和 headers-VERSION-generic,值得注意的是将版本号放入包名中的包(大概是为了便于并行安装多个)。

该答案中没有特别提到的是:

  • 不解决如何删除 -89 和 -91。
  • 没有解决如何使 -57 成为 Grub 的默认值,即使我安装了以后的更新。
  • 没有解决如何确保 -57 保持安装,即使我安装了以后的更新。即使答案是持有一个或多个包裹,鉴于涉及的几个包裹,我会持有哪些?如果是持有 linux-generic 的问题,我该如何先将其降级?

Pil*_*ot6 26

删除最新的内核

sudo apt remove linux-image-4.4.0-91-generic linux-headers-4.4.0-91-generic
Run Code Online (Sandbox Code Playgroud)

这将卸载元包linux-genericlinux-image-genericlinux-headers-generic. 内核永远不会升级。

要恢复它,你可以运行

sudo apt install linux-generic
Run Code Online (Sandbox Code Playgroud)

这将安装最新的内核,内核将得到升级。

linux-generic是一个元包。它是空的,但取决于另外两个元包:linux-image-genericlinux-headers-generic.

最后两个指向最新的内核映像和头文件。

如果删除元软件包,Linux 将不会删除任何内容,但内核映像和头文件不会得到更新。您可以随时安装它们。他们将拉取最新的“真实”内核包。

因此,解决方案是手动删除您不想要的内核包以及元包。