每当我尝试安装/卸载任何软件时,都会收到类似的错误消息,提示“设备上没有剩余空间”。我尝试删除旧内核,但遇到了类似的错误。
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)
| 归档时间: |
|
| 查看次数: |
15755 次 |
| 最近记录: |