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

kgr*_*ttn 3 apt kernel

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

kgrittn@Kevin-Desktop:~$ sudo apt-get upgrade
阅读包裹清单...完成
构建依赖树       
读取状态信息...完成
正在计算升级...完成
0 升级,0 新安装,0 删除,0 未升级。
1 未完全安装或拆除。
此操作后,将使用 0 B 的额外磁盘空间。
你要继续吗?[是/否]
设置 linux 固件 (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
更新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: 没有那个文件或目录
更新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: 没有那个文件或目录
更新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: 没有那个文件或目录
更新initramfs:生成/boot/initrd.img-3.13.0-73-generic
grep: /boot/config-3.13.0-73-generic: 没有那个文件或目录
更新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: 没有那个文件或目录
更新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: 没有那个文件或目录
更新initramfs:生成/boot/initrd.img-3.13.0-65-generic
grep: /boot/config-3.13.0-65-generic: 没有那个文件或目录
更新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: 没有那个文件或目录
更新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: 没有那个文件或目录
更新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: 没有那个文件或目录
更新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: 没有那个文件或目录
更新initramfs:生成/boot/initrd.img-3.13.0-46-generic
grep: /boot/config-3.13.0-46-generic: 没有那个文件或目录
更新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: 没有那个文件或目录
更新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:标准输出:设备上没有剩余空间
E: mkinitramfs 失败 cpio 141 gzip 1
update-initramfs:/boot/initrd.img-3.13.0-37-generic 失败,为 1。
dpkg: 错误处理包 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包的更新中看到过它,但我无法知道还有哪些其他包维护操作可以随意重新创建您已删除的引导文件 - 使您的空间不足。我怀疑在这种情况下创建不完整的启动映像被认为是一种“功能”,尽管我认为这是一个糟糕的设计选择。一条消息提到包名称和包所需文件丢失的事实会很好,initrd.img-*如果版本没有文件,则跳过为版本生成文件也很好。(理想情况下两者都可以,但两者都可以节省数小时的挫败感。)

hat*_*man 5

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

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

uname -r
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get remove linux-image-<kernel number>
sudo apt-get remove linux-headers-<kernel number>
Run Code Online (Sandbox Code Playgroud)

例如;

sudo apt-get remove linux-image-3.13.0-106-generic
Run Code Online (Sandbox Code Playgroud)

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

删除它们后,您以后的更新应该会再次运行,因为您将释放大量空间。

  • 如果您试图通过直接删除文件来保持引导目录上的可用空间,那么在更新 linux-firmware 软件包时最终会遇到问题——因为它会为它认为已安装的每个软件包创建一个 initrd.img 文件,包括重新创建您已删除的文件。这就是在 /boot/ 目录中存在五个内核版本和 80% 可用空间的情况下,我在更新一个软件包时空间不足的原因。 (5认同)