卷启动只剩下0字节的磁盘空间

最近更新后,我收到了一个警告提示:
The volume boot has only 0 bytes disk space remaining

但是我的电脑还有很多可用的硬盘空间。有人知道我该如何解决这个问题吗?(如果相关的话,我正在使用Ubuntu 12.04备选安装镜像的整个磁盘加密功能)。

这主要取决于您在计算机上安装Ubuntu的方式。你能否在终端中执行“sudo fdisk -l”命令,并检查是否有一个几乎已经满了的小分区? - psukys
4最好的是,不要加引号,运行命令'df -H -x tmpfs -x devtmpfs',然后将输出粘贴在这里。 - fabricator4
这个问题和答案](http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot)与该问题相关,可能会有所帮助。 - elomage
显然,对于加密分区来说这是一个已知的问题。回答https://askubuntu.com/a/230942/231504非常好-对我有效。另外,请在Ubuntu跟踪器中增加受影响用户的计数:https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1357093 - pestophagous
4个回答

列出所有内核的命令如下: ``` dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1 ```
结果大致如下:
linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic

不要删除所有内核,只删除旧的!

接下来让我们删除3.16内核,
sudo apt-get purge linux-image-3.16.0-23-generic

然后从系统中删除所有未使用的软件包:
sudo apt-get autoclean && sudo apt-get autoremove


我也有一些叫做 extra 的,例如 linux-image-3.13.0-40-genericlinux-image-extra-3.13.0-40-generic。我可以删除带有 extra 的那些吗? - Mads Skjern
1这真的非常有帮助,但并没有完全解决我的问题(清除旧内核仍然失败)。我不得不手动删除一些旧的内核文件。我使用find /boot/ -type f | xargs du | sort -n找到了一些较大的文件。我当前正在运行的内核是3.13.0-66-generic,所以我小心不要删除与它相关的任何内容,但我确实删除了以下文件:sudo rm /boot/initrd.img-3.13.0-63-generic /boot/initrd.img-3.13.0-65-generic /boot/vmlinuz-3.13.0-65-generic /boot/vmlinuz-3.13.0-63-generic。最后,对旧内核运行清除操作成功了。 - blong
5如果你真的只有0字节的可用空间,@blong所说的方法行不通。你必须手动删除一些旧的vmlinuz文件,因为清理过程需要创建一些文件,如果剩余0字节,这个过程会失败。 - pomarc
1如何知道哪些内核是旧的?我的输出是linux-image-4.10.0-42-generic linux-image-4.13.0-26-generic linux-image-4.13.0-32-generic linux-image-4.13.0-37-generic linux-image-4.13.0-38-generic linux-image-4.13.0-39-generic linux-image-4.13.0-41-generic linux-image-4.13.0-43-generic linux-image-4.8.0-36-generic - jacob
@jacob 运行uname -r命令来查看当前使用的内核版本。 - zanbri

问题确实是旧的内核镜像。
要清理所有,我只需要运行一行命令:
sudo apt-get autoclean && sudo apt-get autoremove

这个程序自动识别了旧的内核并将其删除。

可能是因为您的/boot分区在多次升级过程中积累了太多的内核版本。这个分区很可能与您的大型磁盘分区(挂载为/)是分开的。您可以像这样检查/boot分区的空间(查找带有/boot的行):
df -h

有一个关于如何删除旧内核的好网页。

简单来说,检查你当前的内核版本,获取已安装内容的列表,然后使用apt-get删除旧版本。页面上还有一个“魔法”一行命令可以为您完成所有操作。但请自行承担风险。

更详细的说明:

获取当前内核版本,您想要保留的那个
uname -r

获取已安装的所有内核列表:
dpkg -l | grep linux-image-

对您想要删除的内核运行apt-get remove命令。 不要对最新的内核运行此命令!例如:
sudo apt-get remove linux-image-2.6.32-22-generic

更多注释:
  • dpkg -l会告诉你包名之前的(内核)包的状态。 例如:

    rc  linux-image-3.13.0-39-generic  ...
    ii  linux-image-3.13.0-40-generic  ...
    
    • "rc"表示该包已被移除,并且有配置文件。这些你不需要再删除。
    • "ii"表示该包被标记为安装并且已安装

    基于此,你可以列出只安装的内核包:

    dpkg -l | grep "ii.*linux-image-"
    

另一种解决方案,使用图形用户界面工具Ubuntu Tweak

安装并打开计算机清理工具,勾选系统->旧内核和系统->不需要的软件包,然后点击清理按钮。


使用此脚本将删除所有旧内核,只保留当前版本和上一个(最后一个内核版本)。
KERNELMAGES=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-image/g'`

KERNELHEADERS=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-headers/g'`

for PURGEKERNEL in `echo $KERNELMAGES $KERNELHEADERS`; do

apt-get autoremove -y && apt-get purge $PURGEKERNEL -y

done

工作得很完美,即使我无法从命令行执行"Paradiesstaub"的答案。 - bulltorious
我得到了“权限被拒绝”的错误提示... - Richard Hardy