如何回滚到之前的 Ubuntu 内核? (运行Ubuntu 16.04)

如何回滚到之前的 Ubuntu 内核? (运行Ubuntu 16.04)

我在一家托管公司有一台 VPS 服务器,我拥有 ssh/root 访问权限。我最近尝试将内核升级到最新版本 (4.18.5-041805-generic)。我之前运行的是 4.4.0-169,觉得是时候升级了。

所以我运行了以下命令:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

毕竟,内核版本仍然保持不变。因此,经过搜索,我找到了这套说明:

https://www.howtoing.com/upgrade-kernel-in-ubuntu/

我按照说明尝试安装最新的内核版本。接近尾声时,它生成了一个错误,表明它未配置,但当我运行“uname -rs”时,它列出了新内核:

~$ uname -rs
Linux 4.18.5-041805-generic

但是,现在当我尝试确保其他所有内容再次更新时,我收到依赖项错误:


~$ sudo apt-get update && sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 linux-headers-4.19.0-041900rc1-generic : Depends: libssl1.1 (>= 1.1.0) but it is not installable
 linux-image-unsigned-4.19.0-041900rc1-generic : Depends: linux-modules-4.19.0-041900rc1-generic but it is not installable
E: Unmet dependencies. Try using -f.

所以,我想回到旧的 4.4.0-169-generic 内核,但我不知道如何做到这一点。我在搜索中找到的每条指令都说使用键盘快捷键来中断 grub,然后选择不同的内核。

问题是我在 VPS 云服务器上运行,并且没有连接到服务器的物理键盘。我只有通过 ssh 窗口进入服务器才能完成任何操作。

如何删除产生依赖性问题的新内核并恢复使用以前的内核启动?

答案1

看看例如这个答案,您可以从终端更改两个内核的引导顺序。该答案中获得大力支持的评论还建议使用内核的全名,而不是其数字索引,以获得更好的稳定性。

简而言之:

  1. sudo view /boot/grub/grub.cfg并复制旧内核的全名。
  2. sudo vi /etc/default/grub然后,在顶部更改GRUB_DEFAULT=0 为 read GRUB_DEFAULT=your_kernel_name_from_grub.cfg,然后保存更改(为了安全起见,您可能希望保留原始文件的副本)。
  3. sudo update-grub

然后重新启动应该会让你回到旧的内核。如果您想要快速修复,您可能只需更改GRUB_DEFAULT=0GRUB_DEFAULT=1in /etc/default/grub(然后sudo update-grub重新启动),但上述过程不那么脆弱。

答案2

您所遵循的教程在以下位置有更好的解释:内核:主线构建 - Ubuntu Wiki。另请参阅同一篇 Wiki 文章的第 4 节以获取删除说明。

笔记只因为有一个dist-upgrade并不一定意味着该升级中有内核升级。 请参阅Ubuntu 软件包存储库:linux-image-generic

相关内容