vmlinux.bin에서 파일 시스템 이미지를 추출하는 방법은 무엇입니까?

vmlinux.bin에서 파일 시스템 이미지를 추출하는 방법은 무엇입니까?

jor1k는 vmlinux.bin과 함께 제공됩니다.. 나는 그것이 어디에 있을지 모르기 때문에 거기에 initrd가 있다고 생각합니다. 변경할 수 있도록 파일 시스템 이미지를 추출하려고 하는데 방법을 모르겠습니다.

Linux 소스 배포판에서 extract-vmlinux를 사용해 보았지만 Cannot find vmlinux.

답변1

cpio newc 헤더(로 시작)를 찾을 수 있습니다 0707010.

$ grep -abo 0707010 vmlinux.bin | head -n1
2531404:0707010

-a( all 파일의 경우, 바이너리 파일도 포함), ( yte 오프셋 -b의 경우 b) 및 -o( o일치 부분만 해당(일치 부분을 포함하는 줄이 아닌 일치 부분의 바이트 오프셋을 보고))은 비표준 GNU 확장이지만 grep편리하게 사용할 수 있습니다. 파일에서 주어진 문자열의 위치를 ​​알아냅니다( grep다른 많은 구현과 달리 GNU는 grep텍스트가 아닌 파일(즉, 두 파일 사이에 임의로 긴 바이트 시퀀스가 ​​있을 수 있는 0바이트 값을 포함할 수 있는 파일)도 지원합니다) LF 문자는 LF 문자로 끝날 수 없거나 현재 로케일에서 유효한 문자를 구성하지 않는 바이트 또는 바이트 시퀀스를 포함할 수 있습니다. 이는 이와 관련된 요구 사항입니다.

$ tail -c +2531405 vmlinux.bin| cpio -t | head
bin
bin/sleep
bin/kill
bin/watch
bin/deluser
bin/getopt
bin/uname
bin/nice
bin/zcat
bin/cpio

( grep -b오프셋은 0에서 시작하고 tail -c오프셋은 1에서 시작합니다).

답변2

첫 번째 단계는 입니다 file vmlinux.bin.

죄송합니다. "vmlinux.bin:data"는 일반적으로 이에 대해 많은 의미를 갖습니다. 파일이 인식되지 않으면 file표준 유틸리티가 도움을 줄 수 없습니다.

그러나 다운로드 페이지를 보면 이는 Linux 커널의 OpenRISC 1000 버전인 것으로 보입니다. 그러므로 file그것을 인식하지 못하는 것은 완전히 의미가 있습니다.

OpenRISC 1000에 대해서는 모르지만 이 특별한 경우에는 initrd가 필요하지 않은 것 같습니다.

관련 정보