当我跑步时apt-get dist-upgrade
,我得到
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.142) ...
update-initramfs: Generating /boot/initrd.img-6.0.0-6-amd64
zstd: error 25 : Write error : No space left on device (cannot write compressed block)
E: mkinitramfs failure zstd -q -9 -T0 25
update-initramfs: failed for /boot/initrd.img-6.0.0-6-amd64 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)
那个它说生成失败的文件,在这里,,/boot/initrd.img-6.0.0-6-amd64
你可以看到它是70M。
$ exa -l /boot/initrd.img-6.0.0-6-amd64
.rw-r--r-- 73M root 22 Dec 10:51 /boot/initrd.img-6.0.0-6-amd64
它说生成这个文件失败,但是文件在那里。此外,如果我跳转到启动,我可以看到还有 69 MB 的空间,
# dd if=/dev/zero of=zero bs=1MB
dd: error writing 'zero': No space left on device
70+0 records in
69+0 records out
69255168 bytes (69 MB, 66 MiB) copied, 0.0888701 s, 779 MB/s
为什么我会收到磁盘上没有空间的错误,并且在以下情况下/boot/initrd.img-6.0.0-6-amd64
无法生成,
- 在那
- 磁盘上剩余 69 MB。
我可以用这个重现这个错误
update-initramfs -u -k 6.0.0-6-amd64
这实际上是在幕后调用它来产生错误,
mkinitramfs -o /boot/initrd.img-6.0.0-6-amd64.new 6.0.0-6-amd64
mkinitramfs
尝试写入具有.new
不存在的扩展名的临时文件。如果它需要 73MB 而你只有 69MB 那么失败是有道理的。我不确定这里发生了什么,但我在启动时删除了所有带有该版本号的东西
然后我重新运行
dist-upgrade
,它只为我运行的内核 6.0.0-4 生成了 initramfs,有趣的是,使用
dpkg -l
我可以看到,即使我使用 rm 删除6.0.0-6
了系统认为包linux-image-6.0.0-6-amd64
已成功安装的所有内容:无论 initramfs 生成是否有效,该包都必须安装内核并将其视为成功。我所做的是运行
把整个事情再试一次,它奏效了……
在上面提到的操作之后,这是
/boot
,(将删除它,除非它被证明是相关的)