如何避免更新包linux-firmware创建initrd.img文件?

在Ubuntu 14.04 LTS上,每次尝试更新我的linux-firmware软件包都会在我的/ boot / mount点填充名为initrd.img-3.13.0-*-generic ,阻止成功更新。

 kgrittn @ Kevin-Desktop:〜$ sudo apt-get upgrade
阅读包裹清单......完成
构建依赖树       
阅读国家信息......完成
计算升级......完成
 0升级,0新安装,0删除,0未升级。
 1未完全安装或删除。
执行此操作后,将使用0 B的额外磁盘空间。
你想继续吗?  [Y / N] 
设置linux-firmware(1.127.23)......
 update-initramfs:生成/boot/initrd.img-3.13.0-106-generic
 update-initramfs:生成/boot/initrd.img-3.13.0-105-generic
 update-initramfs:生成/boot/initrd.img-3.13.0-103-generic
 update-initramfs:生成/boot/initrd.img-3.13.0-101-generic
 update-initramfs:生成/boot/initrd.img-3.13.0-100-generic
 update-initramfs:生成/boot/initrd.img-3.13.0-98-generic
 grep:/boot/config-3.13.0-98-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-96-generic
 grep:/boot/config-3.13.0-96-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-95-generic
 grep:/boot/config-3.13.0-95-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-93-generic
 grep:/boot/config-3.13.0-93-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-92-generic
 grep:/boot/config-3.13.0-92-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-91-generic
 grep:/boot/config-3.13.0-91-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-88-generic
 grep:/boot/config-3.13.0-88-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-87-generic
 grep:/boot/config-3.13.0-87-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-86-generic
 grep:/boot/config-3.13.0-86-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-85-generic
 grep:/boot/config-3.13.0-85-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-83-generic
 grep:/boot/config-3.13.0-83-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-79-generic
 grep:/boot/config-3.13.0-79-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-77-generic
 grep:/boot/config-3.13.0-77-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-76-generic
 grep:/boot/config-3.13.0-76-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-74-generic
 grep:/boot/config-3.13.0-74-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-73-generic
 grep:/boot/config-3.13.0-73-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-71-generic
 grep:/boot/config-3.13.0-71-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-70-generic
 grep:/boot/config-3.13.0-70-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-68-generic
 grep:/boot/config-3.13.0-68-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-67-generic
 grep:/boot/config-3.13.0-67-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-66-generic
 grep:/boot/config-3.13.0-66-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-65-generic
 grep:/boot/config-3.13.0-65-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-63-generic
 grep:/boot/config-3.13.0-63-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-62-generic
 grep:/boot/config-3.13.0-62-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-61-generic
 grep:/boot/config-3.13.0-61-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-59-generic
 grep:/boot/config-3.13.0-59-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-58-generic
 grep:/boot/config-3.13.0-58-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-57-generic
 grep:/boot/config-3.13.0-57-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-55-generic
 grep:/boot/config-3.13.0-55-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-53-generic
 grep:/boot/config-3.13.0-53-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-52-generic
 grep:/boot/config-3.13.0-52-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-51-generic
 grep:/boot/config-3.13.0-51-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-49-generic
 grep:/boot/config-3.13.0-49-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-48-generic
 grep:/boot/config-3.13.0-48-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-46-generic
 grep:/boot/config-3.13.0-46-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-45-generic
 grep:/boot/config-3.13.0-45-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-44-generic
 grep:/boot/config-3.13.0-44-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-43-generic
 grep:/boot/config-3.13.0-43-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-40-generic
 grep:/boot/config-3.13.0-40-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-39-generic
 grep:/boot/config-3.13.0-39-generic:没有这样的文件或目录
 update-initramfs:生成/boot/initrd.img-3.13.0-37-generic
 grep:/boot/config-3.13.0-37-generic:没有这样的文件或目录

 gzip:stdout:设备上没有剩余空间
 E:mkinitramfs失败cpio 141 gzip 1
 update-initramfs:/boot/initrd.img-3.13.0-37-generic with 1失败。
 dpkg:error handling包linux-firmware( -  configure):
 安装后的子进程安装后脚本返回错误退出状态1
处理时遇到错误:
  Linux的固件
 E:子进程/ usr / bin / dpkg返回错误代码(1)

这些文件各约19MB。

最初它只有initrd.img-3.13.0-51-generic并且失败了,我删除了一些旧的内核版本,它现在在失败之前到达initrd.img-3.13.0-39-generic 。 我不舒服删除任何更多的版本,而不确定释放一些特定的空间将允许成功。


注意:(我会将此作为答案,但问题是以阻止它的方式锁定。)

永远不要直接删除/boot/目录中的旧操作系统版本,尽管您可以在其他地方找到建议。 这可能会工作多年(或几十年),然后突然导致上述问题。 每个操作系统版本,无论是否使用,都有一个或多个相关的包,这可能会导致此处描述的问题(或其他问题也是如此)。

我只是在linux-firmware软件包的更新中才看到它,但我无法知道其他软件包维护操作可能会随意重新创建您已删除的引导文件 – 让您无法运行。 我怀疑在这种情况下创建不完整的启动映像被认为是一个“function”,虽然我认为这是一个糟糕的设计选择。 提示包名称的消息以及包缺少所需文件的事实将是很好的,并且如果没有该版本的文件,则跳过生成版本的initrd.img-*文件也将非常好。 (理想情况下, 两者都可以节省数小时的挫折感。)

initrd.img文件是初始的ramdisk。 它是操作系统的基本组件,需要引导系统。 每个内核都有自己的initrd.img文件。

我肯定会删除你所有的旧内核。 首先,找出您当前正在运行的内核;

 uname -r 

然后,卸载所有旧内核和旧标头;

 sudo apt-get remove linux-image- sudo apt-get remove linux-headers- 

例如;

 sudo apt-get remove linux-image-3.13.0-106-generic 

保留那些旧内核没有任何用处,特别是当你的磁盘空间不足时。 我只保留当前内核和最后一个内核。

删除后,您的未来更新应该再次工作,因为您将释放大量空间。