为什么卸载的内核的旧initrd文件填满/启动分区?

在几台Ubuntu机器上,我经常遇到完全启动分区的问题,尽管我总是删除所有旧内核。 问题似乎发生了,因为许多initrd文件都在启动分区上,即使实际上没有安装相关的内核。 举例来说:

 root@Jacobi:/boot# ls -lah insgesamt 202M drwxr-xr-x 3 root root 3,0K Jan 30 10:03 . drwxr-xr-x 25 root root 4,0K Jan 30 10:03 .. -rw-r--r-- 1 root root 1,2M Dez 11 15:36 abi-4.4.0-104-generic -rw-r--r-- 1 root root 1,2M Jan 9 22:28 abi-4.4.0-109-generic -rw-r--r-- 1 root root 1,2M Jan 19 14:06 abi-4.4.0-112-generic -rw-r--r-- 1 root root 187K Dez 11 15:36 config-4.4.0-104-generic -rw-r--r-- 1 root root 187K Jan 9 22:28 config-4.4.0-109-generic -rw-r--r-- 1 root root 187K Jan 19 14:06 config-4.4.0-112-generic drwxr-xr-x 5 root root 1,0K Jan 30 10:03 grub -rw-r--r-- 1 root root 10M Jan 30 10:03 initrd.img-3.13.0-39-generic -rw-r--r-- 1 root root 10M Jan 30 10:02 initrd.img-4.4.0-101-generic -rw-r--r-- 1 root root 10M Jan 30 10:02 initrd.img-4.4.0-103-generic -rw-r--r-- 1 root root 38M Jan 30 10:02 initrd.img-4.4.0-104-generic -rw-r--r-- 1 root root 38M Jan 30 10:02 initrd.img-4.4.0-109-generic -rw-r--r-- 1 root root 10M Jan 30 10:03 initrd.img-4.4.0-38-generic -rw-r--r-- 1 root root 10M Jan 30 10:03 initrd.img-4.4.0-45-generic -rw-r--r-- 1 root root 10M Jan 30 10:02 initrd.img-4.4.0-59-generic -rw-r--r-- 1 root root 10M Jan 30 10:02 initrd.img-4.4.0-77-generic -rw-r--r-- 1 root root 10M Jan 30 10:02 initrd.img-4.4.0-78-generic -rw-r--r-- 1 root root 10M Jan 30 10:02 initrd.img-4.4.0-81-generic -rw-r--r-- 1 root root 179K Jan 28 2016 memtest86+.bin -rw-r--r-- 1 root root 181K Jan 28 2016 memtest86+.elf -rw-r--r-- 1 root root 181K Jan 28 2016 memtest86+_multiboot.bin -rw------- 1 root root 3,8M Dez 11 15:36 System.map-4.4.0-104-generic -rw------- 1 root root 3,8M Jan 9 22:28 System.map-4.4.0-109-generic -rw------- 1 root root 3,8M Jan 19 14:06 System.map-4.4.0-112-generic -rw------- 1 root root 6,8M Dez 11 15:36 vmlinuz-4.4.0-104-generic -rw------- 1 root root 6,8M Jan 9 22:28 vmlinuz-4.4.0-109-generic -rw------- 1 root root 6,8M Jan 19 14:06 vmlinuz-4.4.0-112-generic 

但是只安装了linux-image-4.4.0-104-generic和linux-image-4.4.0-109-generic:

 root@Jacobi:/boot# dpkg -l linux-image-\* | grep ^ii ii linux-image-4.4.0-104-generic 4.4.0-104.127 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP ii linux-image-4.4.0-109-generic 4.4.0-109.132 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP ii linux-image-extra-4.4.0-104-generic 4.4.0-104.127 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP ii linux-image-extra-4.4.0-109-generic 4.4.0-109.132 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP 

如果我手动删除不必要的initrd文件,我会在尝试升级时再次生成它们。

可能是这个问题的原因是什么?如何永久摆脱这些文件?

您应该检查部分删除的内核

 dpkg -l linux-image-\* | grep ^rc 

并使用例如sudo apt-get purge linux-image-4.4.0-101-generic删除它们。

清除将从/var/lib/initramfs-tools/删除initramfs生成规则。

如果它没有帮助,您可以从initramfs列表中手动删除它们:

 sudo rm /var/lib/initramfs-tools/3.13.0-39-generic sudo rm /var/lib/initramfs-tools/4.4.0-101-generic sudo rm /var/lib/initramfs-tools/4.4.0-103-generic sudo rm /var/lib/initramfs-tools/4.4.0-38-generic sudo rm /var/lib/initramfs-tools/4.4.0-45-generic sudo rm /var/lib/initramfs-tools/4.4.0-59-generic sudo rm /var/lib/initramfs-tools/4.4.0-77-generic sudo rm /var/lib/initramfs-tools/4.4.0-78-generic sudo rm /var/lib/initramfs-tools/4.4.0-81-generic 

通常我运行purge-old-kernels然后sudo apt-get autoremove只有2个最近的内核。

您可以使用其initramfses重新安装已安装的内核:

 sudo apt-get install --reinstall \ $(dpkg -l linux-image-\* | grep ^ii | awk '{print $2}')