티스토리 뷰

저번에 저는 베가 아이언2의 루팅용 boot.img만들기를 시도하였습니다

참고글 : [Ubuntu] - [Dev] 루팅용 Boot.img 만들기 강좌



루팅용 boot.img만들기는 베가레이서2 젤리빈때 만들고 처음이므로 많이 지났내요 ㅎㅎ;


그런대 모든 과정을 정상적으로 따랐지만 fastboot boot에서 failed (remote : dtb not found)라는 메세지와 함께 부팅이 되지 않았습니다

원본 boot.img는 잘 됬는대 말이죠.. <-- 이를통해 fastboot가 막힌건 아니라는 사실을 알수 있습니다



구글링을 해보면 dtb에 대해 아래와 같은 정보를 알아낼수 있었습니다

http://forum.xda-developers.com/showthread.php?t=2428117 등등



그리고 mkbootimg 바이너리를 업데이트해서 '--dt' 옵션을 만드신 한분의 github도 발견했습니다

https://github.com/osm0sis/mkbootimg




아래는 .c파일에서 볼수 있는 mkbootimg의 사용방법 설명 입니다


usage: mkbootimg"

       --kernel <filename>"

       --ramdisk <filename>"

       [ --second <2ndbootloader-filename> ]"

       [ --cmdline <kernel-commandline> ]"

       [ --board <boardname> ]"

       [ --base <address> ]"

       [ --pagesize <pagesize> ]"

       [ --kernel_offset <base offset> ]"

       [ --ramdisk_offset <base offset> ]"

       [ --second_offset <base offset> ]"

       [ --tags_offset <base offset> ]"

       [ --dt <filename> ]"

       -o|--output <filename>"


https://github.com/osm0sis/mkbootimg/blob/master/mkbootimg.c


처음보는 옵션들이 많네요..

https://github.com/osm0sis 의 파일을 make하면 unpackbootimg도 나오는대 이때 offset도 알려주더라고요

직접 해본 결과입니다


Page size: 2048 (0x00000800)

Kernel size: 6373800 (0x006141a8)

Ramdisk size: 969088 (0x000ec980)

Second size: 0 (0x00000000)

Board name: 

Command line: console=NULL,115200,n8 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x37 ehci-hcd.park=3 vmalloc=260M loglevel=0

Writing boot.img-kernel ... complete.

Writing boot.img-ramdisk.gz ... complete.

whdghks913@Ubuntu:~/바탕화면/iron2root2222$ ./unpackbootimg -i boot.img

BOARD_KERNEL_CMDLINE console=NULL,115200,n8 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x37 ehci-hcd.park=3 vmalloc=260M loglevel=0

BOARD_KERNEL_BASE 00000000

BOARD_PAGE_SIZE 2048

BOARD_KERNEL_OFFSET 00008000

BOARD_RAMDISK_OFFSET 01000000

BOARD_TAGS_OFFSET 00000100

BOARD_DT_SIZE 223232


특이하게 베가 아이언2의 커널 base값이 '00000000' 이더라고요;;;



그럼 dt.img는 어떻게 만드냐??

일단 이 img는 파티션은 아닙니다 부탁드려서 확인해보니 파티션은 아니더라고요


그리고 구글링 결과 이 dt.img파일은 커널소스에서 만들어 내는듯 합니다

만들어 내는 툴의 이름은 dtbTool입니다


http://forum.xda-developers.com/showthread.php?t=2469510


./dtbTool -o ~/dt_files/dt.img -s 2048 -p ./scripts/dtc/ ./arch/arm/boot/



이렇게 만들어진 dt.img는 mkbootimg와 함께 아래 처럼 쓰입니다


./mkbootimg --base 0x00000000 --kernel zImage --ramdisk_offset 0x02000000 --tags_offset 0x01E00000 --pagesize 2048 --cmdline "androidboot.hardware=qcom user_debug=31 maxcpus=2 msm_rtb.filter=0x3F ehci-hcd.park=3 msm_rtb.enable=0 lpj=192598 dwc3.maximum_speed=high dwc3_msm.prop_chg_detect=Y" --ramdisk initrd.img --dt dt.img -o boot.img




그렇지만 dt.img가 뭔지는 모르겟습니다...


http://forum.xda-developers.com/showthread.php?t=2428117



위 링크에서 받을수 있는 split_bootimg_dtb.pl 내용을 보면


+-----------------+

|    boot header     |

+-----------------+

|    kernel             |

+-----------------+

|    ramdisk           |

+-----------------+

|    second stage  |

+-----------------+

|    dtb                 |

+-----------------+


이렇게 나와 있습니다

기존까지 쓰던 split_bootimg.pl 파일은 dtb가 없는 second stage까지만 있었습니다



커널소스로 부터 얻을수 있고(dtbTool) fastboot boot가 안되게 하고, mkbootimg 바이너리의 수정이 필요하며, 추가된 dtb는 무엇일까요?


베가 아이언2의 루팅 펌웨어는 커널소스가 나온후 dt.img를 만들고 나서 다시 시도해 봐야 겠습니다





저작자 표시 비영리 변경 금지
신고
댓글
  • Favicon of http://saebyeol.tistory.com saebyeol 안녕하세요 미르님 미르님 글 보고 잠시 질문하나 하고싶어서 그래요

    saebyeol@ubuntu:~$ cd '/home/saebyeol/Desktop/tst'
    saebyeol@ubuntu:~/Desktop/tst$ chmod 777 unpackbootimg
    saebyeol@ubuntu:~/Desktop/tst$
    saebyeol@ubuntu:~/Desktop/tst$ chmod 777 split_bootimg_dtb.pl
    saebyeol@ubuntu:~/Desktop/tst$
    saebyeol@ubuntu:~/Desktop/tst$ chmod 777 mkbootimg
    saebyeol@ubuntu:~/Desktop/tst$ chmod 777 dtbTool
    saebyeol@ubuntu:~/Desktop/tst$
    saebyeol@ubuntu:~/Desktop/tst$ ./split_bootimg_dtb.pl boot.img
    Page size: 2048 (0x00000800)
    Kernel tags address: 31457280 (0x01e00000)
    Kernel size: 8281424 (0x007e5d50)
    Kernel address: 32768 (0x00008000)
    Ramdisk size: 1114442 (0x0011014a)
    Ramdisk address: 33554432 (0x02000000)
    Second size: 0 (0x00000000)
    Second address: 15728640 (0x00f00000)
    dtb size: 874496 (0x000d5800)
    dtb address: 0 (0x00000000)
    Board name:
    Command line: console=null androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x37 ehci-hcd.park=3
    Writing boot.img-kernel ... complete.
    Writing boot.img-ramdisk.gz ... complete.
    Writing boot.img-second.gz ... complete.
    saebyeol@ubuntu:~/Desktop/tst$ ./unpackbootimg -i boot.img
    bash: ./unpackbootimg: cannot execute binary file: Exec format error

    이런오류가 뜨는데 왜이러는 걸까요
    2014.06.08 18:26 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) unpackbootimg: cannot execute binary file: Exec format error 이부분이 문제라 생각합니다

    바이너리 파일을 다시 또는 다른곳에서 받아보세요
    2014.06.09 23:59 신고
  • Favicon of http://naver.ehzk99n.com 김홍진 미르님 안녕하세요^^뜬금없이 이런소리해서 죄송하지만...킷캣상단바를 노루팅에서 가능하게 어플타입으로 만들어주실수 있으신가요??가능하다면 꼭꼭 부탁드리겟습니다.^^ 2014.06.08 23:55 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 그건 불가능 합니다.............
    전기종용 어플로 만들수 있는건 극히 드믈어서요...
    2014.06.10 00:00 신고
  • Favicon of http://www.lifey.live unifiedh 음... 외국 리눅스 커널 관련 문헌을 찾아보니 dtb가 device tree binary의 약자로 기존에 커널 내부에 저장되어 있던 기기 관련 정보들을 밖에다 떼어놓은 거랍니다. 2014.06.09 18:23 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 아하 그렇군요 ㅎㅎ 정보 감사드립니다~~ 2014.06.10 00:00 신고
  • nindi dt라는게 디바이스 트리 정도 되는듯 하더군요.
    기기 정보를 담고있어서
    커널의 디바이스 트리 정보와 기기정보가 일치할때만 부팅시키는듯합니다.
    2014.06.14 18:40 신고
  • 궁금해요 베가아이언2 커널에서 cpu 오버클럭을 해보고 싶은데 찾아보니 클럭 조절 하는 부분이 kernel/arch/arm/boot/dts에 있더라고요... 그 안에 있는 msm8974.dtsi를 열어보면 qcom,speed2 - pvs4-bin-v0 이런 항목이 많고 클럭도 제각각 인데 어느 부분을 수정해야 베가아이언2를 오버클럭 할수 있을까요??

    엑시노스 5410에 비해 클럭 조정하는 곳이 어려워 져서 뭐가 뭔지 모르겠네요 ㅠㅠ
    2014.12.19 19:58 신고
댓글쓰기 폼