相信现在没有多少人会将 /boot 作为一个独立的分区挂载,如果你也和我一样使用独立的启动分区,并且启动分区几乎已满或没有剩余空间。

这是我第一次看到这样的错误。现在,有多种方法可以释放 Ubuntu(或基于 Ubuntu 的发行版)上的空间,但并非所有方法在这种情况下都有用。

在本教程中,我们将说明如何在 Ubuntu Linux 发行版释放 /boot 分区空间所遵循的步骤,如果您的引导分区空间不足。

使用 apt autoremove

您不必成为终端专家即可执行此操作,这只是一个命令,您将删除未使用的内核并释放 /boot 引导分区的空间。

您所要做的就是运行命令 sudo apt autoremove

sudo apt autoremove

这不仅会删除未使用的内核,还会删除系统已安装软件的不再需要的依赖。输入命令后,它将列出将要删除的内容。

您只需确认操作即可。如果您好奇,可以仔细查看它,看看它实际上删除了什么。命令的输出如下:

[sudo] password for myfreax: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  libgtkglext1 libpangox-1.0-0 linux-headers-5.15.0-43-generic
0 upgraded, 0 newly installed, 2 to remove and 8 not upgraded.
After this operation, 150 MB disk space will be freed.
Do you want to continue? [Y/n] 

您必须按Y才能继续删除。

但需要注意的是,只有当您还剩一点空间并且收到警告时,此方法才有效。但是,如果您的 /boot 分区已满,APT 可能甚至无法工作。

在下一个方法中,我将重点介绍两种不同的方法,您可以通过这些方法使用 GUI 和终端删除旧内核以释放空间。

手动删除未使用的内核

在尝试删除任何较旧的内核以释放空间之前,您需要识别当前活动的内核并确保不会删除它。

要检查您的内核版本,请在终端中运行 uname 命令并指定参数 -r

uname -r

uname 命令一般用于获取 Linux 系统信息。在这里,uname 命令显示当前正在使用的 Linux 内核。:

5.15.0-106-generic

现在,您知道当前使用的 Linux 内核是什么,您只需删除与此版本不匹配的内核即可。您应该将其标记,以确保不会意外删除它。

删除内核时要格外小心。仅识别和删除旧内核,而不是您当前使用的内核,否则您的系统将会损坏。

使用 GUI 工具删除旧的 Linux 内核

您可以使用 Synaptic Package Manager 或 Stacer 等工具来删除。就个人而言,当遇到  /boot 分区已满并且 apt 不可用时,使用 Stacer 来摆脱旧内核。

首先,您需要启动“ Stacer ”,然后导航至软件包卸载程序,如下面的屏幕截图所示。

stacer

在这里,搜索“ image ”,您将找到您所拥有的 Linux 内核的镜像。您只需删除旧的内核版本,而不是当前的内核镜像。

在上面的屏幕截图中指出当前的内核和旧内核,因此您必须小心系统上的内核版本。您不需要删除其他内容,只需删除较旧的内核版本即可。

同样,只需在包列表中搜索“ headers ”并删除旧的,如下所示。

stacer

在这里您不需要删除“linux-headers-generic”。仅关注那些带有版本号的文件。至此,你的引导分区完成空间的释放。

apt 将再次可以正常工作,并且你已经成功地从 /boot 分区释放一些空间。同样,您可以使用您熟悉的其他包管理器来执行此操作。

使用命令行删除旧内核

这是同样的事情,但只是在终端执行操作。因此,如果您无法选择使用 GUI(如果它是远程计算机/服务器)或者您比较喜欢在终端做事,则可以按照以下步骤操作。

首先,运行 ls 命令列出已安装的所有内核:

ls -l /boot

那些被称为“old”或与您当前的内核版本不匹配的内核是您可以删除并未使用的内核。

现在,您可以运行 rm 命令从引导分区删除指定内核,请务必检查您的系统的版本,它可能与您的系统不同。

sudo rm /boot/vmlinuz-5.4.0-7634-generic

如果您有很多未使用的内核,这将需要多点时间。因此,您还可以使用 rm 命令正则表达式删除多个内核。

建议先运行 ls 命令的正则表达式查看是否与要删除的文件匹配再运行 rm 命令删除旧的内核,避免删除不可或缺的文件。

sudo ls /boot/*-5.4.0-{7634}-*
sudo rm /boot/*-5.4.0-{7634}-*

为了说明这一点,您需要编写以逗号分隔的内核版本号的最后部分,以一次性删除它们。

假设我有两个旧内核 5.4.0-7634-generic 和 5.4.0-7624,命令将是:

sudo rm /boot/*-5.4.0-{7634,7624}-*

如果您不想在 grub 启动菜单中看到旧的内核版本,您可以运行 sudo update-grub 命令简单的更新 grub :

sudo update-grub

至此。你完成引导分区空间的释放。如果是在 /boot 分区没有空间后出现问题,你还可能需要修复损坏的 APT。

在某些情况下,您可能需要运行以下命令来修复损坏的 apt。请注意,除非您发现 APT 损坏,否则不需要运行以下命令:

sudo dpkg --configure -a
sudo apt install -f

结论

当你的引导分区 /boot 还有空间并且收到警告时,你可以尝试运行明明  apt autoremove 删除不需要内核释放空间。如果引导分区 /boot 没有任何剩余空间并且 Apt已损坏则需要手动释放  /boot 分区的空间并修复 Apt命令。