gzip:stdout:设备上没有剩余空间 E​​:mkinitramfs 失败 cpio 141 gzip 1

gzip:stdout:设备上没有剩余空间 E​​:mkinitramfs 失败 cpio 141 gzip 1

每当我尝试安装/卸载任何软件时,我都会收到类似的错误,提示“设备上没有剩余空间”。我尝试删除旧内核,但遇到了类似的错误。

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-3.19.0-56-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-extra-3.19.0-56-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
E: Sub-process /usr/bin/dpkg returned an error code (1)

我按照网上的建议尝试过sudo apt-get autoremove --purge,但没有帮助。我也读过之前关于类似问题的帖子,但它们也没有帮助。

因此,我根本无法安装/卸载任何东西。

sourav@Valkyrie:~$ ls /boot
abi-3.19.0-56-generic                  initrd.img-4.4.0-34-generic
abi-3.19.0-61-generic                  initrd.img-4.4.0-34-generic.old-dkms
abi-3.19.0-64-generic                  lost+found
abi-3.19.0-65-generic                  memtest86+.bin
abi-4.4.0-34-generic                   memtest86+.elf
config-3.19.0-56-generic               memtest86+_multiboot.bin
config-3.19.0-61-generic               System.map-3.19.0-56-generic
config-3.19.0-64-generic               System.map-3.19.0-61-generic
config-3.19.0-65-generic               System.map-3.19.0-64-generic
config-4.4.0-34-generic                System.map-3.19.0-65-generic
grub                                   System.map-4.4.0-34-generic
initrd.img-3.19.0-56-generic           vmlinuz-3.19.0-56-generic
initrd.img-3.19.0-56-generic.old-dkms  vmlinuz-3.19.0-61-generic
initrd.img-3.19.0-61-generic           vmlinuz-3.19.0-64-generic
initrd.img-3.19.0-64-generic           vmlinuz-3.19.0-65-generic
initrd.img-3.19.0-65-generic           vmlinuz-4.4.0-34-generic
sourav@Valkyrie:~$ df -h
Filesystem                   Size  Used Avail Use% Mounted on
udev                         2.0G     0  2.0G   0% /dev
tmpfs                        396M  6.4M  390M   2% /run
/dev/mapper/ubuntu--vg-root  913G  215G  652G  25% /
tmpfs                        2.0G  248K  2.0G   1% /dev/shm
tmpfs                        5.0M  4.0K  5.0M   1% /run/lock
tmpfs                        2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda1                    236M  228M     0 100% /boot
cgmfs                        100K     0  100K   0% /run/cgmanager/fs
tmpfs                        396M   64K  396M   1% /run/user/1000

答案1

我看到你那里有一些旧内核,似乎是来自 Ubuntu 的旧版本。我思考autoremove无法对具有不同主版本号的内核采取行动——至少我以前见过类似的情况。

您的分区也非常小/boot。从长远来看,或者即使现在可以选择,我建议您重新安装,不要创建单独的启动分区,或者如果要创建,请确保分区更大。我的经验是,安装程序默认不会创建一个启动分区;在 UEFI 系统上,会创建一个小型 EFI 系统分区,并安装到该分区上,/boot/efi不会干扰/boot存储内核的空间。

短期内,您可以通过自行删除内核来腾出空间。如果 APT 无法删除内核,您可以使用版本字符串手动删除内核的所有痕迹。

首先使用命令检查哪个内核正在运行

uname -r

它将输出版本字符串,例如4.4.0-34-generic

不要删除该内核

选择您在中看到的其他版本之一ls /boot;从最旧的版本开始3.19.0-56-generic,查找属于它的所有文件:

locate -b -e 3.19.0-56-generic

现在你可以使用以下方法删除它们xargs

locate -b -e 3.19.0-56-generic | xargs -p sudo rm -r

您将看到要删除的文件列表,系统会要求您确认。如果列表看起来没问题,请键入y,然后文件将被删除。

检查文件是否已被删除:

sudo updatedb && locate -b -e 3.19.0-56-generic

用下一个最旧的内核重复此操作。始终保留一个备用内核是非常明智的,但我认为那些旧内核对你来说没什么用,而且你当前的内核大概是稳定的,因此你可以继续,直到你只有当前正在运行的内核版本(由 表示uname -r)或只有两个内核版本/boot,然后运行

sudo update-grub
sudo apt update
sudo apt upgrade

祝你好运,update-initramfs应该能够正常运行。为了保持这种情况,每次获得新内核时,请运行

sudo apt autoremove

答案2

当 /boot 分区上的空间已满时,卸载旧内核的干净方法是卸载旧的 linux-image 包。

[I] ~ ❯❯❯ dpkg -l | grep linux-image
rc  linux-image-4.19.0-6-amd64                       4.19.67-2+deb10u1                             amd64        Linux 4.19 for 64-bit PCs (signed)
rc  linux-image-5.10.0-2-amd64                       5.10.9-1                                      amd64        Linux 5.10 for 64-bit PCs (signed)
rc  linux-image-5.10.0-5-amd64                       5.10.24-1                                     amd64        Linux 5.10 for 64-bit PCs (signed)
rc  linux-image-5.10.0-6-amd64                       5.10.28-1                                     amd64        Linux 5.10 for 64-bit PCs (signed)
rc  linux-image-5.14.0-1-amd64                       5.14.6-3                                      amd64        Linux 5.14 for 64-bit PCs (signed)
rc  linux-image-5.14.0-2-amd64                       5.14.9-2                                      amd64        Linux 5.14 for 64-bit PCs (signed)
rc  linux-image-5.14.0-3-amd64                       5.14.12-1                                     amd64        Linux 5.14 for 64-bit PCs (signed)
rc  linux-image-5.14.0-4-amd64                       5.14.16-1                                     amd64        Linux 5.14 for 64-bit PCs (signed)
ic  linux-image-5.15.0-2-amd64                       5.15.5-2                                      amd64        Linux 5.15 for 64-bit PCs (signed)
rc  linux-image-5.15.0-3-amd64                       5.15.15-2                                     amd64        Linux 5.15 for 64-bit PCs (signed)
rc  linux-image-5.16.0-3-amd64                       5.16.11-1                                     amd64        Linux 5.16 for 64-bit PCs (signed)
rc  linux-image-5.17.0-1-amd64                       5.17.3-1                                      amd64        Linux 5.17 for 64-bit PCs (signed)
ii  linux-image-5.18.0-4-amd64                       5.18.16-1                                     amd64        Linux 5.18 for 64-bit PCs (signed)
ii  linux-image-5.19.0-2-amd64                       5.19.11-1                                     amd64        Linux 5.19 for 64-bit PCs (signed)
rc  linux-image-5.2.0-3-amd64                        5.2.17-1                                      amd64        Linux 5.2 for 64-bit PCs (signed)
rc  linux-image-5.3.0-2-amd64                        5.3.9-3                                       amd64        Linux 5.3 for 64-bit PCs (signed)
rc  linux-image-5.3.0-3-amd64                        5.3.15-1                                      amd64        Linux 5.3 for 64-bit PCs (signed)
rc  linux-image-5.4.0-1-amd64                        5.4.6-1                                       amd64        Linux 5.4 for 64-bit PCs (signed)
rc  linux-image-5.4.0-2-amd64                        5.4.8-1                                       amd64        Linux 5.4 for 64-bit PCs (signed)
rc  linux-image-5.4.0-3-amd64                        5.4.13-1                                      amd64        Linux 5.4 for 64-bit PCs (signed)
rc  linux-image-5.4.0-4-amd64                        5.4.19-1                                      amd64        Linux 5.4 for 64-bit PCs (signed)
rc  linux-image-5.5.0-2-amd64                        5.5.17-1                                      amd64        Linux 5.5 for 64-bit PCs (signed)
rc  linux-image-5.6.0-1-amd64                        5.6.7-1                                       amd64        Linux 5.6 for 64-bit PCs (signed)
rc  linux-image-5.6.0-2-amd64                        5.6.14-2                                      amd64        Linux 5.6 for 64-bit PCs (signed)
rc  linux-image-5.8.0-1-amd64                        5.8.7-1                                       amd64        Linux 5.8 for 64-bit PCs (signed)
rc  linux-image-5.8.0-2-amd64                        5.8.10-1                                      amd64        Linux 5.8 for 64-bit PCs (signed)
rc  linux-image-5.8.0-3-amd64                        5.8.14-1                                      amd64        Linux 5.8 for 64-bit PCs (signed)
rc  linux-image-5.9.0-1-amd64                        5.9.1-1                                       amd64        Linux 5.9 for 64-bit PCs (signed)
rc  linux-image-5.9.0-2-amd64                        5.9.6-1                                       amd64        Linux 5.9 for 64-bit PCs (signed)
rc  linux-image-5.9.0-4-amd64                        5.9.11-1                                      amd64        Linux 5.9 for 64-bit PCs (signed)
ii  linux-image-amd64                                5.19.11-1                                     amd64        Linux for 64-bit PCs (meta-package)

然后使用以下命令获取当前内核版本

[I] ~ ❯❯❯ uname -r
5.19.0-2-amd64 

现在,您需要安装旧内核,只需使用 清除软件包名称即可sudo apt purge <package-name>。如果要卸载大量软件包,您可以使用一些 bash magic。

sudo apt purge linux-image-5.{2,3,4,5,6,8,9,18}*

请注意,该模式不应与您正在运行的内核的当前版本匹配。

删除旧内核后,您将能够释放大量空间/boot

相关内容