보관된 rootfs: initramfs와 함께 사용하기 위해 tar를 cpio로 변환

보관된 rootfs: initramfs와 함께 사용하기 위해 tar를 cpio로 변환

Tar 파일로 Debian rootfs가 있습니다. Kconfig(PetaLinux 사용)에서 initramfs 소스로 지정하고 싶지만 소스는 cpio 아카이브여야 합니다.

.tar를 .cpio로 변환하고 구조, 권한 등을 유지하는 방법은 무엇입니까?

답변1

bsd tar를 사용해 보십시오(GNU tar 아님) -마법@tarball 파일 이름 앞에 다음을 추가하세요.

bsdtar --format=cpio -cf - @root.tar.gz > root.cpio

그러나 bsdtartar 파일에 있는 하드 링크는 현재 올바르게 처리되지 않으며 해당 링크에 대한 손상된 항목을 자동으로 생성합니다(알려진 오류계획된 수정 사항은 없으며 부팅된 initramfs에 표시되지 않습니다.

답변2

bsdtar어떤 프로그램도 이러한 변환( 하드 링크가 포함된 오류 처리 아카이브) 을 안정적인 방식으로 제공하지 않으므로 다음을 사용하여 tar 아카이브의 압축을 풀어야 합니다.

tar xpf archive.tar

루트로 실행하고 추출된 디렉터리 트리에서 cpio 아카이브를 만듭니다.

압축 풀기/재포장 작업을 수행하면 루트 권한이 필요하지 않습니다.가근성세션 예:

fakeroot sh -c "cd '$ROOTFS' &&
                tar -xf input.tar.gz &&
                find . | cpio -o -H newc" > output.cpio

관련 정보