我有一些旧的 linux 映像占用了 /boot 中的空间
$ dpkg -l | grep linux-image
rc linux-image-5.4.0-70-generic 5.4.0-70.78~18.04.1 amd64 Signed kernel image generic
rc linux-image-5.4.0-71-generic 5.4.0-71.79~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-72-generic 5.4.0-72.80~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-73-generic 5.4.0-73.82~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-74-generic 5.4.0-74.83~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-77-generic 5.4.0-77.86~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-80-generic 5.4.0-80.90~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-81-generic 5.4.0-81.91~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-84-generic 5.4.0-84.94~18.04.1 amd64 Signed kernel image generic
ii linux-image-5.4.0-86-generic 5.4.0-86.97~18.04.1 amd64 Signed kernel image generic
iF linux-image-5.4.0-87-generic 5.4.0-87.98~18.04.1 amd64 Signed kernel image generic
iF linux-image-5.4.0-89-generic 5.4.0-89.100~18.04.1 amd64 Signed kernel image generic
iU linux-image-generic-hwe-18.04 5.4.0.90.101~18.04.80 amd64 Generic Linux kernel image
我正在使用 5.4.0-86-通用
$ uname -r
5.4.0-86-generic
我尝试使用清除旧的 linux 映像,sudo apt-get purge linux-image-5.4.0-{70,71,72,73,74,77,80}-generic
然后遇到错误:
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
然后尝试了 sudo apt --fix-broken install
,但是遇到了错误:
dpkg: error processing archive /var/cache/apt/archives/linux-image-5.4.0-90-generic_5.4.0-90.101~18.04.1_amd64.deb (--unpack):
cannot copy extracted data for './boot/vmlinuz-5.4.0-90-generic' to '/boot/vmlinuz-5.4.0-90-generic.dpkg-new': failed to write (No space left on device)
如何清理 /boot 上的空间?
答案1
在这种情况下,使用较低级别的工具可以提供帮助而不是引起问题。通常,今天直接使用不是一个好主意dpkg
,但在这种情况下,出于同样的原因,这将有所帮助:dpkg
不会像apt
.
您知道您不会使用安装的早期内核版本,因此您可以直接删除它们。假设bash
shell 删除了之前的所有内容:
dpkg --purge linux-image-5.4.0-{70,71,72,73,74,77,80,81,84}-generic
然后仍然要apt
修复损坏的部分。由于现在有可用空间,它应该成功创建一个或多个初始化文件系统文件来完成软件包安装。
apt --fix-broken install
现在再次检查还需要做什么:
dpkg -l 'linux-image-5.4.*generic' 'linux-image-generic*'
如果仍有软件包处于错误状态(第二列字母为大写,如dpkg
输出中所述),如果位于单独的分区中,则Err: uppercase=bad
可能不会发生这种情况,请使用并提供解决方案来重新安装它们。例如,如果最后三个仍然损坏:/boot
--fix-broken
apt-get --fix-broken reinstall linux-image-5.4.0-87-generic linux-image-5.4.0-89-generic linux-image-generic-hwe-18.04
(然后可能摆脱linux-image-5.4.0-87-generic
)。
实际上仅使用apt
orapt-get
也应该是可行的,但提供的解决方案必须完整,并且必须希望首先进行卸载以释放磁盘空间。也许这也可以工作(注意 bash 扩展中的包名称末尾的减号,告诉apt
卸载而不是重新安装):
apt-get --fix-broken --purge reinstall linux-image-5.4.0-{70,71,72,73,74,77,80,81,84}-generic- linux-image-5.4.0-87-generic linux-image-5.4.0-89-generic linux-image-generic-hwe-18.04