我使用的是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时需要使用。这样做之后,一切正常!