update-initramfs:/boot/initrd.img-4.15.0-112-generic 失败,值为 1

update-initramfs:/boot/initrd.img-4.15.0-112-generic 失败,值为 1

说明:

当我运行 dist-upgrade 时,我遇到了以下详细信息的问题

1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_US:",
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LC_TERMINAL = "iTerm2",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Setting up initramfs-tools (0.136ubuntu6.6) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.136ubuntu6.6) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-112-generic
W: Possible missing firmware /lib/firmware/ast_dp501_fw.bin for module ast
Error 24 : Write error : cannot write compressed block
E: mkinitramfs failure lz4 -9 -l 24
update-initramfs: failed for /boot/initrd.img-4.15.0-112-generic with 1.
dpkg: error processing package initramfs-tools (--configure):
 installed initramfs-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

任何人都可以解决这个问题吗?

答案1

隐藏在所有输出中的真正错误消息Write error : cannot write compressed block绝大多数是由于可用于创建新 initramfs 映像的可用空间不足而导致的。请记住,您的文件夹中需要足够的空间来容纳未压缩的图像/boot,然后将其替换为压缩版本,但由于您使用的是 lz4 压缩算法,因此可能不会有很大的大小差异(我猜 < 20%,我)。

我看到了几种不同的方法来改善你的问题,除了用细齿梳理/boot目录并寻找可以安全地重新定位/删除的东西之外,这应该是你的第一种方法。

  1. 如果没有足够的额外可用空间来允许生成新的 initrd 文件,那么应该查看您的系统上是否携带任何可以清除的旧内核软件包,并使用它们的 initrd 文件他们。启动终端模拟器并检查 的输出dpkg --list | grep '^linux-',查找版本字符串与您当前启动的内核不匹配的版本字符串,这可以从 的输出中快速验证uname -r。如果您有一些符合该标准的软件包,并且为了成功完成软件包更新而愿意放弃它们,只需在 后提供这些软件包名称作为参数sudo dpkg --purge
  2. 如果您只为正在运行的内核版本安装了软件包,您可能需要将当前的 initrd 文件从 /boot 目录中重新定位出来,然后查看是否可以完成软件包更新,这当然会为您提供帮助使用闪亮的新 initramfs,然后您可以安全地删除您重新定位的旧 initramfs。看起来像这样,假设正在使用的 shell 实例的工作目录位于与 /boot 不同的文件系统上(简单的英语:确保cd首先到不同分区上的某个文件夹,或者如果不可能的话,您的 / tmp文件夹是挂载的tmpfs分区,然后cd /tmp),然后执行:
# This'll provide a useful report of the files that get moved incase the package
# update fails and you need to put them back where you found them
sudo mv -iv /boot/*initrd "$(pwd)"

# Now time to do a little housekeeping on the package manager and see if
# the update will complete successfully
sudo apt autoremove
sudo apt autoclean
sudo apt --fix-broken install
sudo dpkg --configure -a

如果您仍然遇到相同的错误并且您确定可用空间问题已解决,那么结论一定是 initramfs-tools 软件包确实出了问题,因为它当前存在于您的系统上,因此请尝试将其返回使用以下命令序列恢复原始状态:

sudo apt remove initramfs-tools
sudo apt clean
sudo apt -y install initramfs-tools

相关内容