我的/ boot分区达到100%,现在我无法升级。 无法删除旧内核以腾出空间

我的第一个问题是当我尝试apt-get updateapt-get upgrade 。 在升级时,我收到以下错误:

 You might want to run 'apt-get -f install' to correct these. The following packages have unmet dependencies: linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed E: Unmet dependencies. Try using -f. 

我试过运行apt-get install -f这是输出(在提示后说是的)

 (Reading database ... 186183 files and directories currently installed.) Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ... Done. dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack): failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': 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.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic Errors were encountered while processing: /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1) 

我尝试运行apt-get autoremove ,它给了我与apt-get upgrade相同的错误。

当我运行df ,我得到/boot

 /dev/sda1 233191 230297 0 100% /boot 

所以,我在别处读到我应该尝试清除旧内核。 我检查了我的内核:

 $ dpkg -l linux-image-\* | grep ^ii ii linux-image-2.6.38-13-server 2.6.38-13.52 Linux kernel image for version 2.6.38 on x86_64 ii linux-image-3.0.0-13-server 3.0.0-13.22 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-14-server 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-15-server 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-16-server 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-17-server 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.2.0-24-generic 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 bit x86 SMP ii linux-image-3.2.0-25-generic 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 bit x86 SMP ii linux-image-3.2.0-26-generic 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 bit x86 SMP 

当我尝试删除最老的时候:

 $ sudo apt-get purge linux-image-2.6.38-13-server Reading package lists... Done Building dependency tree Reading state information... Done You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies: linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be installed E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution). 

如何在不弄乱我的安装的情况下释放或扩展启动?

释放根文件系统上的空间

要释放根文件系统上的空间,您可以尝试执行apt-get clean

如果这不起作用,您可以转到/var/cache/apt/archives并从缓存中手动删除一些文件以获得一些空间,例如:

 sudo rm linux-headers-* 

如果需要,删除所有.deb文件也不会有什么坏处 – 这就是apt-get clean作用。 如果再次需要,它们将被apt重新下载。

释放/ boot文件系统上的空间

原始海报有一个单独的/boot分区,这是充分的,并阻止apt系统工作。 他有必要在那里腾出空间。

如果有足够的空间,请转到/boot并删除一个或两个配置文件:

 sudo rm config-3.2.0-19-generic-pae 

例如,但使用您打算删除的内核版本之一的名称。 这将释放一点空间(每个约144K)。

如果您需要更多空间,请单独删除旧的vmlinuzinitrdabiSystem.map文件,直到您有足够的空间(对于我的一个i386内核版本大约22M)。

无论你做什么, 都不要将它们全部删除 。 对于您使用的每种内核,您至少应保留每种文件的最新两个匹配版本。

然后继续执行apt-get install命令。 如上所述,他们可能不得不重新下载你删除的一些deb,但如果是这样的话会自动发生。 当你再次使用apt时,使用apt-get清除与你删除的文件相对应的包 – 所以一切都匹配。


/boot的配置文件是内核团队用来构建同名内核的内核配置。 删除它应该是无害的,除非您想要它作为参考或帮助您构建自己的内核。

最后,您手动从/boot分区中删除一个或两个旧内核包,以便为新内核创建更多空间。

就我而言, apt命令和dpkg命令无法完成,无法删除。 autoupdate在安装2.6.32-56-server失败。

我的第一步是确定要使用的空间,

 cd /boot du -sk *|sort -n 

我有大约30个内核和支持文件。

我做了一个uname -a来获取正在运行的内核,我发现我在Linux备用2.6.32-43-server并且做了6个没有运行的版本的tar ,并且已经老了。

 tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server 

然后我做了我备份的rm -rf

 rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server 

我将这些命令作为示例显示,您必须根据自己的情况决定使用哪些命令。

现在我在/boot上有一些空间,我能够运行

 apt-get -f install 

清理2.6.32-56-server的失败安装。

然后我做了一个

 apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server 

这让我有空间放回我备份的内容。

 tar -xf ~username/boot.tar rm ~username/boot.tar 

为了清理,我可以运行:

 apt-get autoremove 

我重新启动,现在使用4%的/boot

您可以使用dpkg而不是apt-get来删除旧内核:

 sudo dpkg -r linux-image-3.2.0-29-generic 

我注意到引导目录中仍然存在旧版本的一些文件:

 $ ls /boot vmcoreinfo-2.6.31-17-server 

包管理器会列出旧版本:

 dpkg -l | grep linux-image 

因此我使用了这个命令( autoremove也会删除我不想删除的更新的图像)

 sudo apt-get purge linux-image-2.6.31-17-server 

我还有一些标题:

 dpkg -l | grep linux-headers 

所以我这样做了:

 sudo apt-get purge linux-headers-2.6.32-34 

最后有一个包我无法用apt-get purge删除:

 $ dpkg -l | grep linux-image rc linux-image-2.6.28-11-server 

来源: 删除dpkg标记为rc的包

 sudo dpkg --purge linux-image-2.6.28-11-server 

这是我用过的:

 sudo apt-get autoremove linux-image-xxxx 

为所有旧内核执行此操作并仅保留最新的内核。

如果要自动删除旧内核并更新GRUB,请参阅: Ubuntu文档

您无法对包执行操作,但您可以对其他文件执行操作。 首先,浏览您的主文件夹,看看是否有任何可以删除的内容。 如果没有,尝试将大量文件移动到另一个分区(或闪存驱动器),然后尝试sudo apt-get install -f来清除程序包依赖性问题(很可能你通过dpkg安装了.deb文件),然后清除任何旧内核。 一旦您安全地拥有至少10 MB,请尝试清除不需要的软件或文件。

使用Synaptic Package Manager。 只需选择要删除的包,它将提示您还删除依赖它的包。 根据我的经验,内核包总是以两个为一组(或更多,取决于你如何计算)相互依赖。 您通常可以使用“本地/过时”filter快速找到旧的。

简单地运行sudo apt-get -f autoremove解决了我的问题。

我发现唯一对我有用的是使用Aptitude。

 sudo aptitude 

然后当它打开时,它通常会说明底部的未满足依赖关系。 你可以点击字母g继续建议删除。 它将带您进入一个页面,列出将要发生的事情。

应该有一个减号-在破碎的内核旁边。 再次按g ,它将删除损坏的内核。 按q退出。 然后你应该能够使用sudo apt-get autoremove来摆脱旧内核并释放空间。

检查/var/tmpdu -sh /var/tmp/ 。 可以删除该文件夹中的所有文件以腾出空间。

然后,您可以运行以下命令来删除旧内核:

 sudo apt-get clean sudo apt install byobu sudo purge-old-kernels sudo apt autoremove sudo update-grub 

运行这个:

 sudo apt-get autoremove sudo apt-get --purge remove && sudo apt-get autoclean sudo apt-get -f install sudo dpkg-reconfigure -a 

来源: upgade后我收到此错误。 请帮忙