磁盘空间不足时的initramfs问题

我刚从10.10升级到11.04。在升级过程中,它显示出了一个设置initramfs-tools的问题,并且需要执行sudo dpkg --configure -a命令来解决。
所以,当我第一次启动11.04时,我就执行了这个命令。以下是输出结果。
Setting up initramfs-tools (0.98.8ubuntu3) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.38-8-generic

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-2.6.38-8-generic
dpkg: error processing initramfs-tools (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 initramfs-tools

在搜索了一番后,似乎这是我/boot分区空间不足的问题。它只有100MB,以前从未出现过这个问题,但尽管删除了除最新内核之外的所有内容,我仍然收到相同的消息。
2个回答

100MB足够容纳2个内核和一个init ramdisk。您可以通过执行以下命令查看当前安装的内核:

dpkg -l 'linux-image-*' | grep '^ii'

示例输出:

ii  linux-image-2.6.35-28-generic        2.6.35-28.50                               Linux kernel image for version 2.6.35 on x86/x86_64
ii  linux-image-2.6.38-8-generic         2.6.38-8.42                                Linux kernel image for version 2.6.38 on x86/x86_64
ii  linux-image-generic                  2.6.38.8.22                                Generic Linux kernel image

确认最新的内核可用后,您可以删除以前的内核。在这种情况下,只有一个多余的内核:
sudo apt-get purge linux-image-2.6.35-28-generic

如果由于先前的安装触发器而导致此过程未能完成,请尝试在"purge"之前添加"-f"(--fix-broken)命令。

2清理每个旧内核时,它给出了与我上面发布的相同错误。 - user3403
使用“-f”(强制操作)根本没有帮助。 - Sridhar Ratnakumar
-f其实并不代表强制的意思 - stew

我建议查看一下/boot/目录中占用空间的文件。
find /boot/ -type f | xargs du | sort -n

然后,如果你发现有大量的空间消耗者,你可以看到它们属于哪个包。
dpkg -S /boot/some-large-file

如果不再需要该软件包,您可以将其删除。但是,请非常小心,不要删除您需要的内容 - 特别是引导加载程序(grub)和当前正在运行的内核。