/boot 分区空间不足时如何清理

来源:互联网 发布:孙俪长相知乎 编辑:程序博客网 时间:2024/04/23 17:30

Linux 中 /boot 是存放系统启动文件的地方,安装 ubuntu 时单独分区给 200M 足够,但是系统内核更新后,老的内核依然保存在 /boot 分区内,几次升级后,就会提示 /boot 空间不足。

我们只要删掉老的内核,将空间释放出来就可以了。

先查看系统当前使用的什么版本的内核 uname -a

$ uname -aLinux ubuntu-ThinkPad-Edge 4.8.0-38-generic #41-Ubuntu SMP Wed Feb 8 14:27:17 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

这里显示当前内核是 4.8.0-38

查看系统中安装已经安装的内核 dpkg --get-selections | grep Linux-image

$ dpkg --get-selections | grep linux-imagelinux-image-4.8.0-22-generic            deinstalllinux-image-4.8.0-34-generic            installlinux-image-4.8.0-37-generic            installlinux-image-4.8.0-38-generic            installlinux-image-extra-4.8.0-22-generic      deinstalllinux-image-extra-4.8.0-34-generic      installlinux-image-extra-4.8.0-37-generic      installlinux-image-extra-4.8.0-38-generic      installlinux-image-generic             install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 7

后面显示 deinstall 的表示已经删除了的, install 表示没有删除的
这时可以看到除了当前的 4.8.0-38 之外,还有 4.8.0-34 4.8.0.37 这几个过期的版本

删除这几个版本 sudo apt-get remove linux-image-xxx 这里的 xxx 就是上面过期版本的版本号

还有没有删除干净的内容可以用 sudo apt-get autoremove 来清理

执行完毕之后,可以看到 /boot 分区里的空间又空出来了



在按照以上方法进行处理的时候,执行命令sudo apt-get purge 内核名称  出现了以下错误:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包将被【卸载】:
  linux-image-4.8.0-36-generic* linux-image-extra-4.8.0-36-generic
  linux-signed-image-4.8.0-36-generic*
升级了 0 个软件包,新安装了 0 个软件包,要卸载 3 个软件包,有 110 个软件包未被升级。
有 7 个软件包没有被完全安装或卸载。
解压缩后将会空出 234 MB 的空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 261630 个文件和目录。)
正在卸载 linux-image-extra-4.8.0-36-generic (4.8.0-36.36~16.04.1) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.8.0-36-generic /boot/vmlinuz-4.8.0-36-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.8.0-36-generic /boot/vmlinuz-4.8.0-36-generic
update-initramfs: Generating /boot/initrd.img-4.8.0-36-generic

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.8.0-36-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: 处理软件包 linux-image-extra-4.8.0-36-generic (--remove)时出错:
 子进程 已安装 post-removal 脚本 返回错误状态 1
在处理时有错误发生:
 linux-image-extra-4.8.0-36-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)


删除旧的内核失败,没办法,接着百度


子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2

本篇文章主要介绍了"子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2 ",主要涉及到子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2 方面的内容,对于子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2 感兴趣的同学可以参考一下。

一、子进程 已安装 pre-removal 脚本 返回了错误号 1或2 解决办法:

sudo gedit /var/lib/dpkg/status

找到Package: <package name>,比如Package: vsftpd

删除这部分的描述,删到下个Package: XXX前就好。存档后,再进行操作就OK了。

二、子进程 已安装 post-installation 脚本 返回了错误号 1或2 解决办法:

sudo rm /var/lib/dpkg/info/<package name>.*

比如sudo rm /var/lib/dpkg/info/vsftpd.*,存档后,再进行操作就OK了

解决 在升级内核过程中安装新版本内核系统依赖混乱问题,安装时已存在,卸载不掉

子进程 已安装 post-removal 脚本 返回了错误号 1
在处理时有错误发生:



按照一的步骤进行操作

sudo gedit /var/lib/dpkg/status

找到Package: <package name>,比如Package: vsftpd删除这部分的描述,删到下个Package: XXX前就好


这里我出错的地方是: linux-image-extra-4.8.0-36-generic , 所以ctrl F 搜索到这一行,

删除Package  : linux-image-extra-4.8.0-36-generic  到下个Package: XXX前就好。

强烈建议删除前先备份一下/var/lib/dpkg/status 这个文件,不起作用的话还能恢复原来的状态。



下来按照文章开头的内容 就可以清理成功了。
原创粉丝点击