“卷启动仅剩余0字节磁盘空间”


32

最近更新之后,我收到一条警报,说:

The volume boot has only 0 bytes disk space remaining

但是我的计算机有足够的可用高清空间。有谁知道我如何解决这个问题。(如果相关,我正在使用Ubuntu 12.04的备用安装映像的整个磁盘加密功能)。


这实际上取决于您如何在计算机上安装Ubuntu。您可以在终端中“ sudo fdisk -l”并检查是否有一个几乎满的小分区吗?
PauliusŠukys,2012年

4
更好的是,请运行不带引号的命令'df -H -x tmpfs -x devtmpfs',并将输出粘贴到此处。
fabricator4

此问题和解答与问题有关,可能会有所帮助。
2015年

显然是加密分区的已知问题。答案askubuntu.com/a/230942/231504很棒-对我有用。另外,尽管如此,请在ubuntu跟踪器中增加受影响用户的数量:bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/…–
有害

Answers:


48

列出所有内核:
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 2015年

这非常有用,但是并不能完全解决我的问题(清除旧内核仍然失败)。我必须手动删除一些旧的内核文件。我发现有一些大的使用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。最终,在旧内核上运行清除操作成功。
2015年

4
如果您确实有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-通用linux-image-4.13.0-39-通用linux-image-4.13.0-41-通用linux-image-4.13.0-43-通用linux-image-4.8.0-36 -generic
jacob

25

原因确实是旧的内核映像。
要清理所有我要做的事情,请运行一行:

sudo apt-get autoclean && sudo apt-get autoremove

这会自动识别旧内核并将其删除。


9

/boot随着时间的推移,您的分区可能累积了太多的内核版本。该分区可能与磁盘分区(安装为/)分开。您可以/boot像这样检查分区空间(使用/ boot查找行):

df -h

关于如何删除旧内核,有一个不错的页面。

简而言之,请检查您当前的内核版本,获取已安装版本的列表,然后apt-get删除旧版本。页面上还有一个“魔术”单线命令,它将为您完成所有操作。但是使用它需要您自担风险。

详细说明:

  1. 获取当前的内核版本,即您要保留的版本

    uname -r
    
  2. 获取所有已安装内核的列表:

    dpkg -l | grep linux-image-
    
  3. 在要删除的内核上运行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”是指该包装是- [R emoved并且具有Ç onfiguration文件。这些您不需要再删除。
    • “II”意味着该包被标记为型挡板,并且 nstalled

    基于此,您可以仅列出已安装的内核软件包:

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

使用GUI工具Ubuntu Tweak的替代解决方案

安装并转到“计算机管理员”,检查“系统”->“旧内核”和“系统->不需要”软件包,然后按“清理”。


3

使用此脚本,以便删除所有其他具有当前版本和先前版本(最后1个内核版本)的旧内核。

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”答复,也可以完美地工作。
令人鼓舞的

我正在收到“权限被拒绝” ...
理查德·哈迪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.