相信现在没有多少人会将 /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 ”,然后导航至软件包卸载程序,如下面的屏幕截图所示。
在这里,搜索“ image ”,您将找到您所拥有的 Linux 内核的镜像。您只需删除旧的内核版本,而不是当前的内核镜像。
在上面的屏幕截图中指出当前的内核和旧内核,因此您必须小心系统上的内核版本。您不需要删除其他内容,只需删除较旧的内核版本即可。
同样,只需在包列表中搜索“ headers ”并删除旧的,如下所示。
在这里您不需要删除“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命令。