我开始使用 Ubuntu,到目前为止我很喜欢它。
我得到第一个系统时,问题已经非常严重。
通常我会apt-get upgrade
花很多心思来做这些事情,但是这件事却让我感到有点不确定。
The following packages were automatically installed and are no longer required:
linux-headers-4.15.0-29 linux-headers-4.15.0-29-generic linux-image-4.15.0-29-generic linux-modules-4.15.0-29-generic linux-modules-extra-4.15.0-29-generic
Use 'sudo apt autoremove' to remove them.
我相信这个模块的新版本已经安装并使用,旧版本可以删除。但这只是我的理论。运行 autoremove 时,它显示将释放 335 MB。
这安全吗?
更新:我选择了自动清除(即使我有足够的空间),但我似乎太贪心了。然后它弹出一个紫色屏幕问我:
/boot/grub/menu.lst 有新版本可用,但当前安装的版本已被本地修改。
您想对 menu.lst 做什么?
- 安装软件包维护者的版本
- 保留当前安装的本地版本
- 显示版本之间的差异
- 并排显示版本之间的差异
- 显示可用版本之间的三种差异
- 在可用版本之间进行三向合并(实验性)
- 列表项启动一个新 shell 来检查情况
如果我选择选项 2:保留本地版本,它会继续恢复到 4.15.0-29 吗?我该怎么办。我确信这只是一件小事,但我不希望这个系统出现短期或长期问题。
更新: 我比较了两个版本:一个是 grub 列表,另一个是一些 tmp 列表。一个是版本 29,另一个是版本 34。我按了:保留当前安装的本地版本两次并重新启动。
$ uname -r
4.15.0-34-generic
希望 grub 列表没有问题并且不是 tmp 列表。
尽管如此,我还是想感谢你们所有人提供的大量非常详细的答案。我为你们花费这么多时间来回答我最初的问题感到有点遗憾。但这似乎代表了一个体面的社区。
答案1
是的,很安全。
以下是如何使用命令自己确定答案uname
:
$ uname -r
4.15.0-34-generic
在这种情况下,您可以看到我运行的系统是 4.15.0-34,比 -29 高几个版本。因此,如果我的硬件在 -34 上正常工作,那么可以安全地删除 -29。Ubuntu 保留了较旧的内核版本,因此,如果新内核导致问题(这种情况非常罕见,但确实发生过),您仍然可以启动系统
让我们退一步来看并更仔细地看一下建议的删除内容:
linux-headers-*
linux-image-*
图像软件包就是你的系统运行的东西 - 它们是二进制文件。这些是最重要的。
标题软件包用于编译内核和模块。它们不可执行,并且可以随时删除。
最后,我们来解释一下内部发生了什么:有一些包管理魔法,以及一个将它们全部联系在一起的非常聪明的脚本。
Apt 管理你的内核图片使用元包,通常是linux-image-generic
元包。
当发布新内核时,元包会使用新的依赖项进行更新,然后 apt 会下载该新依赖项(新内核包)。
安装后脚本会触发 GRUB 更新,并让您收到“您应该重新启动”的通知。
另一个安装后脚本将一些(并非全部)旧内核标记为可删除。
下次 apt 运行时,它会注意到那些较旧的内核包已成为孤立的并且适合自动删除,并告诉您这一情况。
Ubuntu 已经使用该安装后脚本来标记较旧的内核包好几年了,取得了巨大的成功。它保留最新的内核和当前正在运行的内核(以防万一),有时还会保留一个较旧的内核。该脚本可防止您的 /boot 被大量旧映像填满 - 一个映像可能超过 300 MB!在空间受限、LLVM 和加密系统上,/boot 通常是一个单独的分区,因此保持该空间可用非常重要!
答案2
是的,Michael - 删除这个旧内核是完全安全的。默认情况下,Ubuntu 保留两个内核 - 当前内核和之前的内核。一组内核包使用大约 335 MB 的磁盘空间,这就是您收到有关释放空间的信息的原因。要完全删除这些旧内核包(包括所有配置文件),请执行此命令(purge
而不是autoremove
):
sudo apt purge linux-headers-4.15.0-29 linux-headers-4.15.0-29-generic linux-image-4.15.0-29-generic linux-modules-4.15.0-29-generic linux-modules-extra-4.15.0-29-generic
答案3
在尝试回答您的问题之前,我将解释 Ubuntu 如何管理内核。
APT 将始终只保留系统中安装的 2 个最新内核。Ubuntu 在最新内核上运行,并保留另一个内核作为备份。
例如,假设您当前安装了 4.15.0-29 和 4.15.0-33。除非您修改了 grub,否则将默认激活最新版本。因此,您将在 4.15.0-33 上运行 Ubuntu,而 4.15.0-29 则作为备用。
当您安装较新的版本(例如 4.15.0-34)时,使用apt upgrade
apt 将看到系统中现在有 3 个版本,并将最旧的版本标记为“不再需要”。
由于在升级之前您没有在该内核上运行 Ubuntu,因此删除旧内核是相当安全的,因为sudo apt autoremove
4.15.0-33 现在将成为备份。
提示:您可以添加--purge
到命令中以完全删除旧内核并且不留下任何痕迹并节省更多空间。
sudo apt autoremove --purge
答案4
是的,它非常安全,它旨在清理未使用的内核。如果你这样做:
ls /boot
在终端中,你可以看到内核有两个以上版本。Ubuntu 通常保留 2 个版本,因此你可以返回一个版本。如果你有超过 2 个版本,
sudo apt autoremove
将清理最旧的包,因为其他包由于依赖关系的改变而剩下并且不再使用。