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

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

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

kgrittn@Kevin-Desktop:~$ sudo apt-get upgrade
正在读取软件包列表...完成
构建依赖关系树       
正在读取状态信息...完成
计算升级...完成
升级了 0 个,新安装了 0 个,要删除 0 个,并且未升级 0 个。
1 未完全安装或删除。
此操作后将使用0B的额外磁盘空间。
您想继续吗?[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 失败,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-*如果有,则跳过生成版本的文件版本的文件也很好。(最好是两者兼而有之,但任何一个可以节省数小时的挫败感。)

答案1

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

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

uname -r

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

sudo apt-get remove linux-image-<kernel number>
sudo apt-get remove linux-headers-<kernel number>

例如;

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

保留这些旧内核毫无用处,尤其是当您的磁盘空间不足时。我只保留当前内核和最后一个内核。

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

相关内容