如何释放Ubuntu中`/boot`分区的空间

不久前,我收到了一个警告,提示我的/boot分区几乎已满或没有剩余空间了。是的,我使用的是一个独立的/boot分区,这在如今并不常见,但我相信它在某些情况下仍然非常有用。

这是我第一次遇到这样的错误,让我感到困惑。虽然在Ubuntu(或基于Ubuntu的发行版)上有多种方法可以释放空间,但并不是所有方法都在这种情况下有用。

因此,我决定编写这篇文章,介绍我采取的步骤来释放/boot分区中的一些空间。

方法一:使用apt autoremove

你不必是一个终端专家来执行这个操作,只需一个命令,你就可以删除未使用的内核,以释放/boot分区中的空间。

你只需输入以下命令:

sudo apt autoremove

这不仅会删除未使用的内核,还会清理掉你不需要的依赖项,或者那些没有被任何已安装工具所需要的依赖项。

一旦你输入这个命令,它会列出将要被删除的内容,然后你只需要确认操作。如果你感到好奇,你可以仔细查看它删除了什么。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-5.4.0-81 linux-headers-5.4.0-81-generic linux-image-5.4.0-81-generic linux-modules-5.4.0-81-generic linux-modules-extra-5.4.0-81-generic
0 upgraded, 0 newly installed, 5 to remove and 29 not upgraded.
After this operation, 470 MB disk space will be freed.
Do you want to continue? [Y/n]

你需要按下Y来继续。

需要注意的是,这个方法只在你的/boot分区仍有一点空间并出现警告时才有效。但如果你的/boot分区已满,APT甚至可能无法工作。

在下一个方法中,我将介绍两种不同的方法,通过这两种方法,你可以使用图形界面和终端来删除旧的内核以释放空间。

方法二:手动删除未使用的内核(如果apt autoremove不起作用)

在尝试删除旧内核以释放空间之前,你需要确定当前正在使用的内核,并确保你不删除它。

要检查你的内核版本,可以在终端中输入以下命令:

uname -r

uname命令通常用于获取Linux系统的信息。在这里,这个命令会显示当前正在使用的Linux内核版本。它应该看起来像这样:

5.4.0-81-generic

现在,你知道了你当前使用的Linux内核是什么,你只需要删除与这个版本不匹配的内核。你应该把它记下来,以确保你不会意外删除它。

使用图形界面工具删除旧的Linux内核

你可以使用Synaptic Package Manager或类似的工具(如Stacer)来开始。个人而言,当我遇到/boot分区已满且APT无法正常工作时,我使用了Stacer来删除旧的内核。让我展示你Stacer的使用方法。

首先,你需要启动“Stacer”,然后在界面中导航到软件包卸载器,如下面的截图所示。

stacer

在这里,搜索“image”,你将找到Linux内核的镜像文件。你只需删除旧的内核版本,而不是你当前正在使用的内核镜像。

linux-image-5.4.0-80-generic
linux-image-5.4.0-81-generic

我在上面的截图中标出了我当前使用的内核和旧的内核版本,因此你必须对你系统上的内核版本要小心。

你不需要删除其他任何东西,只需删除那些旧的内核版本。

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

linux-headers-5.4.0-80-generic
linux-headers-5.4.0-81-generic

警告:不要删除“linux-headers-generic”。只关注带有版本号的那些。

这样,你就完成了,APT将恢复工作,你已成功释放了/boot分区的一些空间。同样,你可以使用任何你熟悉的其他软件包管理器来执行此操作。

使用命令行删除旧的内核

这与使用图形界面相同,只是使用终端而已。因此,如果你无法使用图形界面(例如,如果是远程机器/服务器)或者你更喜欢使用终端,你可以按照以下步骤操作。

首先,使用以下命令列出所有已安装的内核。

ls -l /boot

它应该看起来像这样:

total 285380
-rw-r--r-- 1 root root  24838092 Jul 19  2021 config-5.4.0-77-generic
-rw-r--r-- 1 root root  24838092 Oct  7  2021 config-5.4.0-88-generic
-rw-r--r-- 1 root root  24838092 Jan 20 13:16 config-5.4.0-91-generic
-rw-r--r-- 1 root root      3181 Mar  1  2021 grub.cfg
-rw-r--r-- 1 root root  19604448 Jul 19  2021 initrd.img-5.4.0-77-generic
-rw-r--r-- 1 root root  19604448 Oct  7  2021 initrd.img-5.4.0-88-generic
-rw-r--r-- 1 root root  19604448 Jan 20 13:17 initrd.img-5.4.0-91-generic
-rw-r--r-- 1 root root   1827048 Mar  1  2021 memtest86+_multiboot.bin
-rw-r--r-- 1 root root   1839672 Mar  1  2021 memtest86+.elf
-rw-r--r-- 1 root root   1843712 Mar  1  2021 memtest86+_lpia.bin
-rw-r--r-- 1 root root      2058 Jul 19  2021 System.map-5.4.0-77-generic
-rw-r--r-- 1 root root      2058 Oct  7  2021 System.map-5.4.0-88-generic
-rw-r--r-- 1 root root      2058 Jan 20 13:16 System.map-5.4.0-91-generic
-rw-r--r-- 1 root root  67297200 Jul 19  2021 vmlinuz-5.4.0-77-generic
-rw-r--r-- 1 root root  67297200 Oct  7  2021 vmlinuz-5.4.0-88-generic
-rw-r--r-- 1 root root  67297200 Jan 20 13:17 vmlinuz-5.4.0-91-generic

标记为“old”的或与当前内核版本不匹配的内核就是你可以删除的未使用内核。

现在,你可以使用rm命令从/boot分区中删除特定的内核,使用以下命令中的每一个(每个命令删除一个内核):

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

确保检查你系统的版本 - 它可能与你的系统不同。

如果你有很多未使用的内核,这将需要一些时间。因此,你也可以使用以下命令一次性删除多个内核:

sudo rm /boot/*-5.4.0-{77}-*

需要澄清的是,你需要将内核版本的最后部分/代码用逗号分隔,以一次性删除它们。

例如,如果我有两个旧的内核版本5.4.0-77-generic和5.4.0-88-generic,那么命令将是:

sudo rm /boot/*-5.4.0-{77,88}-*

如果你不想在grub启动菜单中看到旧的内核版本,你可以使用以下命令简单地更新grub:

sudo update-grub

就这样。你完成了。你已经释放了空间,如果你的/boot分区已满并导致APT出现问题,你也可能已经修复了它。

在某些情况下,你可能需要输入以下命令来修复损坏的apt(我在论坛上注意到有些人这样做):

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

请注意,除非你发现APT出现问题,否则不需要输入上述命令。个人而言,我没有需要这些命令,但我发现它们对一些人在论坛上很有用。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

释放Ubuntu Linux中`/boot`分区的空间

2023-10-28 23:37:29

指数词

让你的Linux终端变得有趣:Cmatrix命令

2023-10-28 23:43:32

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索