如何在 /boot 中释放更多空间?

如何在 /boot 中释放更多空间?

我的/boot分区几乎已满,每次重启系统时都会收到警告。我已经删除了旧内核包(linux-headers...),实际上我这样做是为了安装自动更新附带的较新内核版本。

安装新版本后,分区又快满了。那么我还能删除什么?还有其他文件与旧内核映像相关吗?

/boot以下是我的分区上的文件列表:

:~$ ls /boot/
abi-2.6.31-21-generic         lost+found
abi-2.6.32-25-generic         memtest86+.bin
abi-2.6.38-10-generic         memtest86+_multiboot.bin
abi-2.6.38-11-generic         System.map-2.6.31-21-generic
abi-2.6.38-12-generic         System.map-2.6.32-25-generic
abi-2.6.38-8-generic          System.map-2.6.38-10-generic
abi-3.0.0-12-generic          System.map-2.6.38-11-generic
abi-3.0.0-13-generic          System.map-2.6.38-12-generic
abi-3.0.0-14-generic          System.map-2.6.38-8-generic
boot                          System.map-3.0.0-12-generic
config-2.6.31-21-generic      System.map-3.0.0-13-generic
config-2.6.32-25-generic      System.map-3.0.0-14-generic
config-2.6.38-10-generic      vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic      vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic      vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic       vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic       vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic       vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic       vmcoreinfo-3.0.0-12-generic
extlinux                      vmcoreinfo-3.0.0-13-generic
grub                          vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic  vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic  vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic  vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic  vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic   vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic   vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic   vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic   vmlinuz-3.0.0-14-generic

目前我正在使用3.0.0-14-generic内核。

答案1

您有很多未使用的内核。使用以下命令删除除最后一个内核之外的所有内核:

sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}

这是简写​​:

sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8

删除该linux-image-x.x.x-x包也将删除linux-image-x.x.x-x-generic

这些头文件被安装到/usr/src构建外树内核模块(如专有 nvidia 驱动程序和 virtualbox)中,并在构建外树内核模块时使用。如果linux-image-*未安装匹配的内核包 (),大多数用户应删除这些头文件包。

要列出所有已安装的内核,请运行:

dpkg -l linux-image-\* | grep ^ii

一个命令显示所有可以删除的内核和头文件,但不包括当前的运行内核:

kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver

linux-headers-<some number>它选择所有以或开头的软件包linux-image-<some number>,打印已安装软件包的名称,然后排除当前加载/运行的内核(不一定是最新的内核!)。这符合在删除旧的、已知可以工作的内核之前测试新内核的建议。

因此,在升级内核并重新启动进行测试后,您可以使用以下命令删除所有其他内核:

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

答案2

您的启动分区已满。由于这是内核更新,这些文件将被复制到启动分区,因此您需要清理它们。下面是博客文章这将向您展示如何使用一个命令清除旧内核映像。我将给出该方法的基本概要。使用此命令打印出内核的当前版本:

uname -r

然后使用此命令打印出所有已安装的非最新内核:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

确保您当前的内核不在该列表中。请注意这是最终命令的主要内容(如下所示)。要卸载和删除这些旧内核,您需要将这些参数传递给:

sudo apt-get -y purge

现在,我们可以通过将这最后两个命令组合成这个混乱的结果来做任何我们想做的事情:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

一个命令就能帮你搞定一切。我会确认这确实能完美运行,但永远不要相信互联网上的任何人。:) 有关更多信息,博客文章对命令的每个部分都做了很好的解释,因此请仔细阅读,这样你就会满意它能完成你想要它做的事情。

答案3

sudo apt-get autoremove

该命令正在自动执行该工作。

答案4

感谢您对问题的详细阐述,这让我找到了正确的方向。虽然保留以前的内核文件很有用,但您可以一次性删除所有文件,请查看此帖子:
如何删除所有未使用的 Linux 内核头文件、镜像和模块

通过命令行完成。如果您通过远程执行此操作,请使用 WINSCP 之类的工具打开终端会话并将其粘贴进去,效果很好。

这是从文章链接复制的,我建议你阅读全文:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

相关内容