启动分区已满,无法删除旧内核。 破包

很抱歉询问什么可能很简单,但我已经谷歌搜索了一个星期,我已经尝试了很多东西没有成功。

首先,每次启动时都会弹出一个弹出窗口,说我的/ boot分区已满,而且Synaptic Manager说linux-image-generic破了,但是无法重新安装它们(linux-image-extra- 3.13.0-54-generic和linux-image-generic)。

我的终端告诉我尝试使用install -f来解决问题所以我已经尝试过了,这就是它返回的内容。 可悲的是,我还在学习,我无法破解代码,我想要一些帮助

aksel@aksels-PC:~$ sudo apt-get install -f Reading package lists... Done Building dependency tree Reading state information... Done Correcting dependencies... Done The following extra packages will be installed: linux-image-3.13.0-54-generic Suggested packages: fdutils linux-doc-3.13.0 linux-source-3.13.0 linux-tools The following NEW packages will be installed: linux-image-3.13.0-54-generic 0 upgraded, 1 newly installed, 0 to remove and 344 not upgraded. 5 not fully installed or removed. Need to get 0 B/14,7 MB of archives. After this operation, 32,8 MB of additional disk space will be used. Do you want to continue? [Y/n] y (Reading database ... 431129 files and directories currently installed.) Preparing to unpack .../linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb ... Done. Unpacking linux-image-3.13.0-54-generic (3.13.0-54.91) ... dpkg: error processing archive /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb (--unpack): cannot copy extracted data for './boot/vmlinuz-3.13.0-54-generic' to '/boot/vmlinuz-3.13.0-54-generic.dpkg-new': failed to write (No space left on device) No apport report written because the error message indicates a disk full error dpkg-deb: error: subprocess paste was killed by signal (Broken pipe) Examining /etc/kernel/postrm.d . run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic Errors were encountered while processing: /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb E: Sub-process /usr/bin/dpkg returned an error code (1) 

通过使用linux-purge

我已经为此创建了一个帮助脚本。 它被称为linux-purge ,其项目页面在Launchpad.net中。 在公告部分,这里有安装说明。

在这种特定情况下,您将运行

 sudo linux-purge --fix 

有关脚本的更多问题和反馈,请回复此Ubuntuforums.org主题 。

手动方法

作为替代方案,有关于如何在Communiy Wiki帮助中手动完成任务的说明 (我作为jarnos)。

无论如何,这是我的手册说明作为档案:

首先从先前的内核更新中删除任何剩余的临时文件。

 sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-* 

(可能有一些是由于Ubuntu 16.04及更早版本中的错误 。)

按命令列出已成功安装的内核(不包括引导内核):

 dpkg-query -W -f='${Status} ${Package}\n' | awk '/^[^ ]+ ok installed linux-image-[0-9]+/{print $4}' | grep -Fv $(uname -r) 

删除不需要的内核的initrd.img文件(由于bug ); 这里选择的内核版本是4.2.0-23-generic:

 sudo update-initramfs -d -k 4.2.0-23-generic 

清除内核

 sudo dpkg --purge linux-image-extra-4.2.0-23-generic linux-image-4.2.0-23-generic 

在/ boot中释放一些空间。 如果命令失败,则某些已安装的软件包取决于内核。 dpkg的输出告诉包的名称。 首先清除它。

您也可以清除相应的标头包

 sudo dpkg --purge linux-headers-4.2.0-23-generic 

甚至是通用的标头包

 sudo dpkg --purge linux-headers-4.2.0-23 

如果没有其他包依赖它; 否则命令将失败,但运行安全。

然后跑

 sudo apt-get install -f 

修复破坏的依赖。 如果由于磁盘空间不足而失败,则必须按照上述方式删除另一个内核。

请注意,系统中可能还安装了太多内核,但现在您应该可以通过sudo apt-get purge和内核程序包名称来清除多余的内核。

删除旧内核的最快捷最简单的方法是:

 sudo apt-get autoremove 

这通常会将安装的内核数量减少到两个或三个。 在每次安装新内核的软件更新之后执行此操作以防止问题再次发生。

如果/ boot分区已满,apt-get函数失败也就不足为奇了。 你只需要释放你/ boot中的空间,你可以用图形方式或通过terminal / ssh来做你喜欢的事情。 你可以清除(不删除!)占用空间的不需要的软件包(自你的/ boot部分以来的内核),或者你可以扩展/ boot分区使它更大,然后你可以再次运行-f命令。 如果所有这些都是与您不同的语言,我将需要更多信息来为您提供运行所需的确切命令。

  1. 使用以下命令列出已安装的内核: dpkg -l | grep linux-image- dpkg -l | grep linux-image-
  2. 系统分区是如何布局的( cat /etc/fstab输出是什么)?
  3. 使用以下命令列出光盘空间: df命令。

这是一个应该有助于删除旧内核的链接

您的启动分区上的空间不足。 这就是apt-get失败的原因,它甚至会告诉你

没有写入apport报告,因为错误消息表明磁盘已满错误

在(重新)安装之前删除旧内核,离开最近和之前的内核。

#dpkg -l | grep linux-image-

将列出所有已安装的内核

sudo apt-get autoremove linux-image-##fill-in-with-result-from-previous-command##

将删除它们

$apt-get install --reinstall linux-image-generic

会做其余的事情

关于删除旧内核的官方Ubuntu页面