Adicionar arquivos ao initrd faz com que o Linux não consiga lê-lo

Adicionar arquivos ao initrd faz com que o Linux não consiga lê-lo

Estou usando o clonezilla-1.2.12 e preciso adicionar o firmware Broadcom ao initrd para que ele possa inicializar pela rede.

(o clonezilla é baseado em debian e o debian não inclui mais os blobs de firmware, pois eles não são livres. Naturalmente, o clonezilla também não.)

(Não posso usar o clonezilla baseado no Ubuntu, pois o Ubuntu tem um bug onde o chipset Broadcom 5708 simplesmente não funciona.)

Eu tenho o que parece ser um bom processo para fazer isso:

~# 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

MAS o Linux se recusa a reconhecer o initrd refeito:

falha de inicialização

Também tentei fazer um único arquivo cpio (sem usar --append) e obtive o mesmo resultado.

Se eu pular completamente a modificação do arquivo e apenas descompactar/recompactar, ainda obterei o mesmo resultado.

o que há de errado aqui?

Responder1

O culpado aqui foi o xzpasso. Parece que a versão do xzmeu desktop estava fazendo algo incompatível com o descompressor no kernel do clonezilla.

Mudar para o gzip faz com que funcione perfeitamente.


De acordo comSteven Shiau, é necessário usar --check=crc32ao recomprimir o initrd com xz. Depois de fazer isso, tudo funciona bem!

informação relacionada