最近更新后,我收到一条警告:
The volume boot has only 0 bytes disk space remaining
但是我的电脑有很多可用硬盘空间。有人知道我该如何解决这个问题吗?(如果相关的话,我正在使用 Ubuntu 12.04 备用安装映像的整个磁盘加密功能)。
答案1
列出所有内核:
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
答案2
原因确实是内核映像太旧。
要清理它,我只需运行一行:
sudo apt-get autoclean && sudo apt-get autoremove
这会自动识别旧内核并将其删除。
答案3
可能是您的/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” 表示该包是r已移除并C配置文件。您不需要再删除这些文件。
- “ii” 表示包装上标明我安装和我已安装
基于此,您可以仅列出已安装的内核包:
dpkg -l | grep "ii.*linux-image-"
替代解决方案,使用 GUI 工具Ubuntu 调整。
安装并进入 Computer Janitor,检查系统->旧内核和系统->不需要的包,然后按清理。
答案4
使用此脚本将删除所有其他旧内核,只保留当前版本和前一个版本(最后一个内核版本)
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