boot.img를 추출하는 방법?


15

boot.imgAndroid 이미지에서 파일 의 내용을 보려고합니다 .

Google 에서이 기사 를 추출 하여 찾았 system.img지만 작동하지 않습니다 boot.img. 에 대해이 작업을 수행하려고 boot.img하면 다음이 표시됩니다.

Invalid sparse file format at header magi
Failed to read sparse file

되어 simg2img추출에만 사용 system.img?

  1. 그렇다면 추출 할 다른 방법이 boot.img있습니까?
  2. 그렇지 않다면 추출하지 않는 문제는 무엇 boot.img입니까?

특정 리눅스 배포판과 커널 버전을 확인하십시오.
mdpc

Android.SE 사이트에 비슷한 질문이 있습니다 : ROM 포팅 을 풀고 편집하는 방법은 boot.img무엇입니까?
WhiteWinterWolf

답변:


19

boot.img는 두 개의 주요 부분을 포함하는 작은 (ish) 파일입니다.

          * kernel(important for android)
          * ramdisk( a core set of instruction & binaries)

boot.img의 압축을 풉니 다 :

다음 단계가 포함됩니다.

  1. 다음을 사용하여 도구를 다운로드하십시오. wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. 을 사용하여 파일을 추출하십시오 tar xvzf android_bootimg_tools.tar.gz.

    two바이너리 가 포함되어 있습니다 :

           * unpackbootimg
           * mkbootimg
    

3. 그런 다음 실행 ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

           * boot.img-zImage     ----> kernel
           * boot.img-ramdisk.gz ----> ramdisk

다음 명령을 사용하여 램 디스크도 추출 할 수 있습니다

gunzip -c boot.img-ramdisk.gz | cpio -i

파일을 변경 한 후에는 해당 파일을 boot.img로 다시 압축 할 수 있습니다 mkbootimg

즐기세요!


1
세 번째 단계에서 오류가 발생했습니다. 도와주세요 ... 터미널 unpackbootimg 명령을 찾을 수 없음
Rahul Matte

1
여기에서 민트 17의 3 단계에 대해 동일한 오류가 발생합니다. sudo와 chmod 755 이후에 실행하려고 시도했습니다.
Nisse

3 단계에서 output_path이미 존재 하는지 확인하십시오 unpackbootimg. 그렇지 않으면 segfault입니다.
Aldaviva

2
공구 연결이 끊어졌습니다.
애디슨 크럼

1
수정 : "unpackbootimg 명령을 찾을 수 없음", 32 비트 종속성이없는 64 비트 시스템에서 32 비트 바이너리를 실행 중입니다. "apt-get install gcc-multilib"로 설치
WHol

6

boot.img와 같은 압축 파일 시스템 이미지가 아닙니다 system.img. 부트 로더가 읽으며 커널 이미지와 램 디스크 이미지를 포함합니다.

일부 바이너리 배포판은 커널 및 램 디스크 이미지를 별도로 제공합니다. 이 경우을 (를) 사용하여 아무 것도 할 필요가 boot.img없으며을 사용하여 새 것을 재생성하십시오 mkbootimg.

에서 정보를 추출해야하는 경우 ( Android Wiki 를 통해 William Enck 작성)boot.img 사용해보십시오 .split_bootimg


에 대한 링크 split_bootimg가 더 이상 유효하지 않습니다.
Nathan Osman

@NathanOsman William Enck 페이지의 복사본에 대한 링크로 대체되었습니다.
Gilles 'SO- 악마 그만'

4

opensuse를 사용합니다. abootimg를 설치했습니다. (boot | recovery) .img를 추출하려면 다음을 실행하십시오.

abootimg -x (boot|recovery).img

그런 다음 다음 파일을 얻습니다 : bootimg.cgf, zImage 및 initrd.img 이미지를 압축하려면 다음과 같이 실행하십시오

abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img

그러면 (boot | recovery) .img가 나타납니다.

즐겨


1

다음 도구를 사용하여 Android 부팅 이미지를 추출하고 다시 압축 할 수 있습니다

$ git clone https://github.com/cfig/Android_boot_image_editor.git

boot.img를 복제 된 자식 저장소에 복사하십시오. 운영:

$ ./gradlew unpack

처음 실행하려면 인터넷에서 필요한 라이브러리를 다운로드해야합니다. 인내심을 가지십시오. 다음과 같이 "build / unzip_boot /"에서 내용을 얻을 수 있습니다.

build/unzip_boot/
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
├── boot.img.avb.json (AVB only)
└── root

이 코드와 프로젝트가 최신 상태이며 유지 관리되기 때문에 이것이 정답입니다.
Gabriel Fair
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.