如何在Ubuntu,Debian或Linux Mint上的/ boot分区中释放空间

本文介绍了如何释放Ubuntu,Debian,Linux Mint,Pop!_OS,基本OS以及其他基于Debian或Ubuntu的Linux发行版上/引导分区中的空间。

解决方案1:当apt工作时,释放/引导分区中的空间

如果apt工作正常,通常可以通过运行以下命令删除未使用的旧内核:

sudo apt autoremove

范例:

$ sudo apt autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.18.0-15 linux-headers-4.18.0-15-generic
  linux-image-5.0.0-11-generic linux-modules-4.18.0-15-generic
  linux-modules-extra-4.18.0-15-generic
0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded.
After this operation, 334 MB disk space will be freed.
Do you want to continue? [Y/n]

您会在网上找到各种复杂的命令来删除旧内核,但我不建议您使用它们,因为它们可能会删除一些不需要的东西(请参阅Andreas Jansson的 评论这个答案 例如)。 apt autoremove 可以正常工作一段时间,甚至 清除旧内核 实用程序现在建议使用 apt autoremove如果要使用旧的 purge-old-kernels 与Byobu捆绑在一起的实用程序(在较新的版本中,它仅指向 apt autoremove),您可以找到它 在这里。删除旧的未使用内核的另一种简便易用的方法是使用Synaptic软件包管理器搜索“ linux-image”和“ linux-header”,并删除除当前正在使用的版本以外的所有版本。更不稳定的是,您可以保留正在运行的版本和以前的版本,而仅删除较旧的内核。通过运行,您可以看到当前正在使用的内核:

uname -r

您可能感兴趣的另一个常见的Debian / Ubuntu / Linux Mint问题(和解决方案):如何修复“无法获取锁/ var / lib / dpkg / lock-open(11资源暂时不可用)”错误

解决方案2:当分区已满且apt损坏时,释放/ boot中的空间。

在某些情况下,您可能会注意到/ boot分区在系统更新过程中已满,尝试使用apt时会出错。 No space left on device发生这种情况时,您无法使用apt删除旧的未使用的内核。作为解决此问题的方法,您可以从/ boot手动删除内核映像。本指南包含一个示例,您必须将该示例适应当前正在运行的内核。版本和未使用的旧内核版本。
如果由于磁盘已满而无法再引导Ubuntu,请按照以下步骤操作 恢复模式 (重新启动计算机,按住Shift(使用BIOS)或Esc(使用UEFI),键进入grub菜单,然后选择恢复模式,最后选择“ Drop to root shell提示”选项)。
首先列出/ boot中所有可用的内核:

ls -l /boot

样本输出:

$ ls -l /boot
total 242072
-rw-r--r-- 1 root root   217065 Feb  7 11:10 config-4.18.0-15-generic
-rw-r--r-- 1 root root   218068 Mar 14 16:01 config-4.18.0-17-generic
-rw-r--r-- 1 root root   218350 May  8 09:14 config-4.18.0-20-generic
drwxr-xr-x 5 root root     4096 Jun  3 13:07 grub
-rw-r--r-- 1 root root 59618395 May 17 13:25 initrd.img-4.18.0-15-generic
-rw-r--r-- 1 root root 39897502 Jun  3 13:05 initrd.img-4.18.0-17-generic
-rw-r--r-- 1 root root 39897454 Jun  3 13:05 initrd.img-4.18.0-20-generic
-rw-r--r-- 1 root root   182704 Jan 28  2016 memtest86+.bin
-rw-r--r-- 1 root root   184380 Jan 28  2016 memtest86+.elf
-rw-r--r-- 1 root root   184840 Jan 28  2016 memtest86+_multiboot.bin
-rw------- 1 root root  4268435 Feb  7 11:10 System.map-4.18.0-15-generic
-rw------- 1 root root  4268612 Mar 14 16:01 System.map-4.18.0-17-generic
-rw------- 1 root root  4270411 May  8 09:14 System.map-4.18.0-20-generic
-rw------- 1 root root  8543992 Feb  7 13:27 vmlinuz-4.18.0-15-generic
-rw------- 1 root root  8548088 Mar 14 14:39 vmlinuz-4.18.0-17-generic
-rw------- 1 root root  8556280 May  8 09:16 vmlinuz-4.18.0-20-generic

您还需要知道当前使用的内核版本,因此不要删除它。此命令应列出您当前正在运行的内核版本:

uname -r

输出示例:

$ uname -r
4.18.0-20-generic

在这种情况下,计算机运行的是Linux版本4.18.0-20,因此我们可以删除较旧的版本4.18.0-15和4.18.0-17(这些版本可以在 ls -l /boot 您可以从/ boot手动删除每个文件,这些文件包含比当前正在运行的内核版本更旧的版本(在我的示例中为4.18.0-20之前的版本),或者您可以运行命令以删除较早版本的内核的所有文件。使用此命令,确保您没有将当前内核包含在要删除的文件列表中!如果删除了错误的文件,计算机将无法启动!!要删除所有内核版本为4.18.0-15和更高版本的文件,请执行以下操作:一次性执行4.18.0-17(使命令适应所使用的任何内核以及要删除的较旧版本),请使用:

sudo rm /boot/*-4.18.0-{15,17}-*

修复部分或部分升级,以使其再次起作用:

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

接下来,更新Grub2,以使旧内核不再显示在Grub引导菜单中:

sudo update-grub

现在,您可以自动删除未使用的软件包,以清除所有可以删除的内核,然后继续进行升级(如果您以前曾尝试升级,但是没有可用磁盘空间/ apt损坏):

sudo apt autoremove
sudo apt upgrade
Sidebar