boot空间不足解决办法

问题介绍

系统提示boot空间不足。

造成原因

关键在于安装ubuntu的时候,boot分区设置的太小。

每当系统升级的时候,旧的内核版本并不会被清理,升级几次就提示boot内存不足了。

思路就是卸载旧的版本内核,腾出空间。

解决方案

查看系统已经安装的内核版本

  1. dpkg --get-selections | grep linux-image

boot空间不足解决办法 - 图1

  • install说明:系统已经安装了相应的内核, 使用purge命令删除相应的内核
  • deinstall说明:系统没有安装此内核, 但是在配置文件中还残留它的信息(有可能是以前卸载的时候不彻底)

查看系统当前使用的内核版本(我的是4.4.0-72-generic)

uname -a

boot空间不足解决办法 - 图2

删除旧的内核

删除旧的内核版本(分别针对不同标识)。

  • 针对install
sudo apt purge linux-image-4.4.0-66-generic

boot空间不足解决办法 - 图3

  • 针对deinstall
sudo dpkg -P linux-image-extra-4.4.0-31-generic

boot空间不足解决办法 - 图4

最后看下效果

boot空间不足解决办法 - 图5

执行过程中可能出现的错误以及解决办法

这个依据个人实际情况而定,有的人按照上面的步骤就成功了。如果出现错误请继续往下看。

执行卸载命令sudo apt purge linux-image-4.4.0-66-generic时报错

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
您可能需要运行“apt-get -f install”来纠正下列错误:
下列软件包有未满足的依赖关系:
linux-image-extra-4.4.0-66-generic : 依赖: linux-image-4.4.0-66-generic 但是它将不会被安装
linux-image-extra-4.4.0-78-generic : 依赖: linux-image-4.4.0-78-generic 但是它将不会被安装
linux-image-generic : 依赖: linux-image-4.4.0-78-generic 但是它将不会被安装
E: 有未能满足的依赖关系. 请尝试不指明软件包的名字来运行“apt-get -f install”(也可以指定一个解决办法). 123456789

错误提示很明显了, 有的软件包缺少依赖关系, 建议我们修复。那我们就执行命令:sudo apt -f install

执行修复命令sudo apt -f install时报错:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
 .......
gzip: stdout: No space left on device
E: mkinitramfs failure find 141 cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.4.0-75-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: 处理软件包 linux-image-extra-4.4.0-75-generic (--configure)时出错:
 子进程 已安装 post-installation 脚本 返回错误状态 1
在处理时有错误发生:
 linux-image-extra-4.4.0-71-generic
 linux-image-extra-4.4.0-72-generic
 linux-image-extra-4.4.0-75-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

解决办法:

针对gzip: stdout: No space left on device,这句话是说在/boot空间下没有足够的空间了。

原因是这样:在修复的时候需要下载依赖包,然而在/boot下本来就没有多余的空间了,所以无法修复依赖的问题。这就产生死循环了。为了省出更多boot空间需要删除旧的内核,删除旧的内核时又需要修复一些依赖,修复依赖就需要下载依赖包,而boot空间下本来就满了。

解决办法就是先把boot下几个比较大的文件暂存到别的文件夹,腾出来足够的空间来修复依赖,等依赖修复好了并且删除了旧的内核后再迁移回来(如果文件没什么用处就不用迁移回来了)。

修复好了,再次执行卸载命令sudo apt purge linux-image-xxx),把没用的旧内核都删掉,一切都OK了。

参考链接