내 cpio 명령의 오류는 무엇을 의미합니까?

내 cpio 명령의 오류는 무엇을 의미합니까?

내 임베디드 대상 장치에 대한 initramfs를 생성하기 위해 내 시스템에서 다음 명령을 사용하여 .cpio 아카이브를 생성했습니다.

sudo find . | cpio -H newc -oc > ~/initramfs.cpio

이것은 항상 아무런 문제 없이 나에게 효과적이었습니다. 어제 새 아카이브를 생성하는 중 다음 오류가 발생했습니다.

cpio: Archive format multiply defined: Operation not permitted
cpio: ./etc/shadow: Function open failed: Permission denied
cpio: ./usr/lib/ssh-keysign: Function open failed: Permission denied
64842 blocks

저는 과거에 이러한 오류가 발생한 적이 없으며, 열 수 없다고 언급된 파일을 건드리지 않았으므로 왜 이런 일이 발생하는지 이해할 수 없습니다. Ubuntu 패키지 관리자를 사용하여 호스트 시스템을 업데이트했으므로 패키지 cpio도 업데이트되었을 수 있습니다. 분명히 나는 ​​모든 오류가 나를 매우 혼란스럽게 하기 때문에 여기서 생성된 initramfs에 대해 확신이 없습니다. 제가 생각할 수 있는 유일한 옵션은 내 버전이 변경되었는지 알아보고 cpio, 변경된 경우 삭제하고 이전 버전으로 교체하는 것입니다. 내 시스템(Ubuntu 12.04)에서 이 정보를 찾을 수 있는 방법이 있습니까? 아니면 이 문제를 해결할 수 있는 다른 방법이 있나요?

답변1

-H newc첫 번째 오류는 및 를 모두 통과했기 때문에 발생합니다 -c. 생성하려는 아카이브의 형식을 결정해야 합니다. 이것"작업이 허용되지 않습니다"이 오류 메시지를 출력하는 함수에 잘못된 인수를 전달하고 거기서 종료해야 하는 GNU cpio의 버그입니다.

다른 오류는 수퍼유저로 명령을 실행하지 않았거나 올바른 위치에서 명령을 실행하지 않았기 때문에 발생합니다. 슈퍼유저만 /etc/shadow중요한 정보가 포함된 파일을 읽을 수 있습니다. 또한 생성한 아카이브는 슈퍼유저만 읽을 수 있도록 해야 합니다. initramfs당신이 만들고 있는 것이 완전한 운영 체제를 포함 /etc/shadow하지 않는 한 비즈니스는 아마도 없을 것입니다.initramfs

관련 정보