问题描述
最近更新之后,我收到一条警报,说:
The volume boot has only 0 bytes disk space remaining
但是我的计算机有足够的可用高清空间。有谁知道我如何解决这个问题。 (如果相关,我正在使用Ubuntu 12.04的备用安装映像的整个磁盘加密功能)。
最佳方案
列出所有内核: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
次佳方案
原因确实是旧的内核映像。要清理所有我要做的事情,请运行一行:
sudo apt-get autoclean && sudo apt-get autoremove
这会自动识别旧内核并将其删除。
第三种方案
随着时间的推移,您的/boot
分区可能累积了太多的内核版本。该分区可能与大磁盘分区(安装为/
)分开。您可以像这样检查/boot
分区空间(查找带有/boot的行):
df -h
how to remove old kernels上有一个漂亮的页面。
简而言之,检查您当前的内核版本,获取已安装版本的列表,然后apt-get删除旧版本。页面上还有一个”magic” one-liner命令将为您完成所有操作。但是使用它需要您自担风险。
详细说明:
-
获取当前的内核版本,您要保留的版本:
uname -r
-
获取所有已安装内核的列表:
dpkg -l | grep linux-image-
-
在要删除的内核上运行apt-get remove。不是最新的!例如:
sudo apt-get remove linux-image-2.6.32-22-generic
更多说明:
-
dpkg -l
会在软件包名称前告诉您status of the (kernel) package。例如:rc linux-image-3.13.0-39-generic ... ii linux-image-3.13.0-40-generic ...
-
“rc”表示该软件包已删除并具有配置文件。这些您不需要再删除。
-
“ii”表示该软件包已标记为已安装并已安装
基于此,您可以仅列出已安装的内核软件包:
dpkg -l | grep "ii.*linux-image-"
-
使用GUI工具Ubuntu Tweak的替代解决方案。
安装并转到“计算机管理员”,检查“系统”->“旧内核”和“系统->”不需要的软件包,然后按“清理”。
第四种方案
使用此脚本,以便删除所有其他具有当前版本和先前版本(最后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