바이너리 재생산이 가능한 CPIO(initramfs) 아카이브를 만드는 실용적인 방법이 있습니까?

바이너리 재생산이 가능한 CPIO(initramfs) 아카이브를 만드는 실용적인 방법이 있습니까?

파일의 내용이 동일한 경우(그리고 루트가 소유하고 동일한 권한을 갖는 경우) 언제 어디서 빌드하든 내 initramfs가 동일한 해시를 갖기를 원합니다. 아카이브에 있는 파일의 타임스탬프를 제거하거나 설정하는 옵션이 GNU cpio에 표시되지 않습니다. 재현 가능한 제품을 얻을 수 있도록 cpio 및 기타 아카이브 프로그램에 대한 입력을 처리하는 비교적 표준적인 방법이 있습니까?

이와 함께 일반적인 "날짜를 제공하지 않습니다" 타임스탬프가 있습니까? 대부분의 소프트웨어가 문제를 해결하지 못하는 부분이 있나요? 예를 들어 0 에포크초?

예를 들어, initramfs에 대한 입력 디렉터리에서 찾기 패스를 수행하고 모든 타임스탬프를 수동으로 0으로 설정한 경우 해당 아카이브를 빌드하고 다른 시스템에서 추출한 다음 프로세스를 반복하고 다시 빌드하여 비트가 동일해질 수 있습니까? 파일?

답변1

최신 버전의 GNU에는 요구 사항에 맞는 플래그가 cpio있습니다 . --reproducible내 이해는스트립 비결정론 도구사실 이후에 타임스탬프 요구 사항을 처리합니다. touch물론 패키지하기 전에 시간을 설정할 수 있습니다.

답변2

를 사용하여 이 작업을 수행할 수 star있으며 .findlibfind

전화 예:

star -c H=cpio -find somedir -chmtime 2020-05-20T12:10:12 > archive.cpio

물론 find원하는 경우 다양한 타임스탬프에 대해 복잡한 규칙을 사용할 수도 있습니다.

확인하다http://sourceforge.net/projects/schilytools/files/star최신 tarball의 최신 소스를 확인하세요 schilytools.

참고: 다음 내용은 광고처럼 보일 수 있지만 정보가 요청되었으며 처음부터 OpenSource입니다. 가장 오래된 무료 구현이기 때문에 star잘 알려져 있어야 합니다 . 1982년에 시작되어 2020년에 38년이 되었습니다.UNIXtar

startar내가 알고 있는 가장 성숙하고 기능이 완전한 구현입니다 . 다른 구현에서는 일반적으로 다른 사람 이 소개하고 사용하는 속성 접두사 star로 식별되는 아카이브 형식 향상에 대한 개념을 복사합니다 .SCHILY.*star

32년 이래로 최대 속도를 위해 구성 가능한 FIFO를 공유하는 두 개의 프로세스로 분기됩니다. star -copy다른 알려진 UNIX 트리 복사 방법보다 빠릅니다.

30년 동안 다양한 아카이브 형식을 지원하고 자동 감지합니다.

17년 이래로 와 같은 다양한 UNIX 아카이버 및 심지어 호환되지 않는 tar.cpio paxGNU tar

16년 이후 find부터 libfind. 모든 사람이 사용법을 알아야 하므로 불필요한 새로운 사용법 개념을 배우는 것을 피하는 데 도움이 됩니다 find.

2년 이후부터 경로 이름 길이 제한이 완전히 제거되었습니다.

보다http://cdrtools.sourceforge.net/private/star.html그리고http://schilytools.sourceforge.net/man/man1/star.1.html자세한 내용은

관련 정보