gzip:标准输出:设备 E 上没有剩余空间:mkinitramfs 失败 cpio 141 gzip 1

Sou*_*Das 6 dpkg

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

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)
Run Code Online (Sandbox Code Playgroud)

我已经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
Run Code Online (Sandbox Code Playgroud)

Zan*_*nna 16

我看到您那里有一些旧内核,似乎来自以前版本的 Ubuntu。我认为autoremove对具有不同主要版本号的内核不起作用 - 至少我以前见过这样的情况。

您还有一个非常小的/boot分区。从长远来看,甚至现在,如果这是一个选项,我建议您重新安装而不是创建单独的引导分区,或者如果您确实确保它更大。我的经验是安装程序默认不创建;在 UEFI 系统上/boot/efi,会创建一个小的 EFI 系统分区,该分区不会干扰/boot存储内核的空间。

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

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

uname -r
Run Code Online (Sandbox Code Playgroud)

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

不要删除那个内核

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

locate -b -e 3.19.0-56-generic
Run Code Online (Sandbox Code Playgroud)

现在您可以使用删除它们 xargs

locate -b -e 3.19.0-56-generic | xargs -p sudo rm -r
Run Code Online (Sandbox Code Playgroud)

您将看到将被删除的文件列表,并要求您确认。如果列表看起来不错,请键入y,文件将被删除。

检查文件是否已删除:

sudo updatedb && locate -b -e 3.19.0-56-generic
Run Code Online (Sandbox Code Playgroud)

对下一个最旧的内核重复此操作。始终保留备用内核是非常可取的,但我认为这些旧内核无论如何对您没有多大用处,而且您当前的内核大概是稳定的,因此您可以继续直到只有当前正在运行的内核内核版本(由 表示uname -r)或中只有两个内核版本/boot,然后运行

sudo update-grub
sudo apt update
sudo apt upgrade
Run Code Online (Sandbox Code Playgroud)

并且,十指相扣,update-initramfs应该可以正常运行。为了保持这种情况,每次获得新内核时,运行

sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)