티스토리 뷰

저번에 저는 베가 아이언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를 만들고 나서 다시 시도해 봐야 겠습니다





댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
Blogger Info