向initrd添加文件导致linux无法读取

向initrd添加文件导致linux无法读取

我使用的是clonezilla-1.2.12,需要将Broadcom 固件添加到initrd 中,以便它可以进行网络引导。

(clonezilla 是基于 debian 的,debian 不再包含固件 blob,因为它们不是免费的。当然,clonezilla 也不包含。)

(我无法使用基于Ubuntu的clonezilla,因为Ubuntu有一个错误,导致Broadcom 5708芯片组无法工作。)

我有一个看起来不错的流程:

~# mkdir /tmp/cz-newinitrd 
~# cd /tmp/cz-newinitrd
/tmp/cz-newinitrd# xzcat /media/CLONEZILLA/live/initrd.img.orig > initrd
/tmp/cz-newinitrd# (cd /; find lib/firmware/bnx2 | cpio -o -H newc --append -O /tmp/cz-newinitrd/initrd)
/tmp/cz-newinitrd# xz -c initrd > /media/CLONEZILLA/live/initrd.img

但是 linux 拒绝识别重做的 initrd:

启动失败

我还尝试制作单个 cpio 存档(不使用 --append)并得到相同的结果。

如果我完全跳过修改存档并仅解压缩/重新压缩,我仍然会得到相同的结果。

这里出了什么问题?

答案1

这里的罪魁祸首是xz步骤。看起来xz我桌面上的版本正在执行与 Clonezilla 内核中的解压缩器不兼容的操作。

切换到 gzip 就可以正常工作了。


根据史蒂文·肖--check=crc32,用xz重新压缩initrd时需要使用。这样做之后,一切正常!

相关内容