initrd에 파일을 추가하면 Linux가 파일을 읽을 수 없게 됩니다.

initrd에 파일을 추가하면 Linux가 파일을 읽을 수 없게 됩니다.

저는 clonezilla-1.2.12를 사용하고 있으며 netboot가 가능하도록 initrd에 Broadcom 펌웨어를 추가해야 합니다.

(clonezilla는 데비안 기반이며 데비안은 무료가 아니기 때문에 더 이상 펌웨어 blob을 포함하지 않습니다. 당연히 clonezilla도 마찬가지입니다.)

(Ubuntu에는 Broadcom 5708 칩셋이 작동하지 않는 버그가 있으므로 Ubuntu 기반 clonezilla를 사용할 수 없습니다.)

그렇게 하기 위한 좋은 프로세스가 있는 것 같습니다.

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

그러나 리눅스는 다시 실행된 initrd를 인식하지 않습니다:

부팅 실패

또한 --append를 사용하지 않고 단일 cpio 아카이브를 만들려고 시도했지만 동일한 결과를 얻었습니다.

아카이브 수정을 완전히 건너뛰고 압축을 풀거나 다시 압축해도 여전히 동일한 결과를 얻습니다.

여기서 무엇이 잘못되고 있습니까?

답변1

여기서 범인은 바로 그 xz단계였습니다. 내 데스크탑 의 버전이 xzclonezilla 커널의 압축 해제기와 호환되지 않는 작업을 수행하고 있는 것 같습니다.

gzip으로 전환하면 잘 작동합니다.


에 따르면스티븐 시아우--check=crc32, xz로 initrd를 다시 압축할 때 사용해야 합니다 . 그렇게 하고 나면 모든 것이 잘 작동합니다!

관련 정보