将文件添加到initrd使linux无法读取

Mik*_*eyB 5 linux initrd clonezilla

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

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

启动故障

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

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

这里出了什么问题?

Mik*_*eyB 2

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

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


根据Steven Shiau 的--check=crc32说法,用 xz 重新压缩 initrd 时需要使用它。这样做之后,一切正常!