initrd.img에는 ​​많은 파일이 포함되어 있습니다.

initrd.img에는 ​​많은 파일이 포함되어 있습니다.

저는 여기에 처음 왔고 올바른 섹션에 게시하고 있기를 바랍니다.

글쎄, 나는 debian 3.16.0-4-686-pae의 initrd.img를 얻었습니다(전체 iso를 다운로드하고 태웠습니다). 디스크나 LAN initrd에서 문제 없이 부팅하면 모든 것이 정상적으로 부팅됩니다.

문제는 initrd에 드라이버를 추가하려고 할 때 시작됩니다. initrd.img 파일을 구해 압축을 푼다. 나는 kernel이라는 이름의 디렉토리를 1개만 얻습니다. 검색 후 동일한 문제가 있는 스레드를 발견하고 그의 해결 방법을 시도했습니다(스레드 링크:내 initrd에 "kernel"이라는 하나의 디렉토리만 있는 이유는 무엇입니까?).

cpio를 사용하여 1410개의 블록만 추출해 보았습니다. 1410부터 아카이브 끝까지 dd를 수행한 후 아카이브를 얻었습니다(중요한 경우 이름을 지정해야만 읽을 수 있음).이름.tar.gz )에는 모든 폴더와 모든 항목이 포함되어 있지만 다소 손상되었으며 일부 파일의 크기는 0입니다(예: initrd를 만드는 sh 및 bash와 같이 이 쓸모없고 부팅할 수 없는 오류에서 생성하려고 합니다. Shfound 그러나 실행할 수 없습니다. 쉘과 동일).

동일한 스레드에서 binwalk 솔루션을 사용하는 경우 initrd에서 아카이브를 추출할 수 있지만 아카이브에는 모든 파일이 아닌 3개의 폴더(bin 등, lib)만 포함되어 있습니다. (예: sh 또는 bash 없음)

참고 - binwalk에 따르면 initrd에는 다음이 포함됩니다.

1 - ASCII 아카이브

1 - xz 압축 데이터

30 - binwalk에 따르면 gzip 압축 데이터 아카이브 예

NTFS 파일 시스템(NT)에서 NULL 날짜: 1970년 1월 1일 목요일 00:00:00

모두 1MB 미만입니다.

따라서 형식 때문에 이 initrd.img 파일에 드라이버를 추가할 수 없을 정도입니다... 어떤 도움이라도 대단히 감사하겠습니다. 더 많은 정보가 필요하면 알려주시면 제공하도록 노력하겠습니다.

Tl;dr 이상한 initrd.img 파일이 있는데 드라이버를 추가할 수 없는 것 같습니다.

Binwalk 출력:

ASCII 아카이브의 파일로 시작하도록 파일을 편집했으며, 내가 제거한 모든 항목은 gzip 압축 아카이브의 날짜입니다. 모두 명시된 바와 같습니다. Thu 1 Jan 00:00:00 1970(나는 그 이후로 그렇게 믿습니다. 이것은 획기적인 날짜입니다. 아마도 이상한 이유로 실제 날짜를 읽을 수 없을 수도 있습니다...)

어떤 도움이라도 대단히 감사하겠습니다. 더 많은 정보가 필요하시면 알려주시면 제공하도록 노력하겠습니다. 감사합니다 :)

언급하는 것을 잊었습니다. 제가 실행하고 사용하는 모든 명령은 Ubuntu 3.16.0-30-generic(신뢰할 수 있다고 생각합니다)에 있습니다.

답변1

먼저 정상적으로 부팅이 된다면 img 파일을 어떻게 추출하는지 살펴보도록 하겠습니다. 이미지는 그대로 유지됩니다.

Redhat/Fedora initrd 이미지의 경우 다음을 사용합니다.

# This should confirm it is a gziped image    
file initrd0.img 

# This should leave you with unzipped initrd0 (no .img)
# The -d is decompress, the -S is to expect the .img suffix not the usual .gz
gzip -dS .img 

# This should show confirm it is now a cpio archive
file initrd0

# Create a directory to unpack to
# and unpack inside the new directory
mkdir new-init 
cd new-init
cpio -id < ../initrd0

위의 "덜 분명한" 줄에 대한 설명을 추가했습니다. 아이디어는 추출을 시도하기 전에 올바른 파일 형식이 있는지 확인하는 것입니다. 각 파일 명령의 출력이 예상과 다른 경우(gzip 파일, 그 다음 cpio) 적절한 도구를 사용하여 압축을 풀어야 합니다.

관련 정보