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)并得到相同的结果。
如果我完全跳过修改存档而只是解压缩/重新压缩,我仍然会得到相同的结果。
这里出了什么问题?
这里的罪魁祸首是xz
步骤。看起来xz
我桌面上的版本正在执行与 Clonezilla 内核中的解压缩器不兼容的操作。
切换到 gzip 就可以正常工作了。
根据Steven Shiau 的--check=crc32
说法,用 xz 重新压缩 initrd 时需要使用它。这样做之后,一切正常!