해결된 질문

순정롬에 커널을 바꿔치기하려는데 막혔어요 도와주세요!

samuro 2016.09.30 17:25 Given Points 0
추천 수 ( 0 )

기기가 갤럭시알파, 안드로이드 5.0.2 커널은 3.10입니다. 컴파일 환경은 우분투 16.04 64비트구요. 오딘은 3.10입니다.

바꾸려고 하는 커널은 https://android.googlesource.com/kernel/common/+/android-3.18 이겁니다.

3.18에 있는 기능이 필요해서 이녀석을 갤알파에 올리고자 합니다.

갤럭시알파 순정 펌웨어를받아서 압축을 푸니 boot.img, system.img cache.img hidden.img recovery.img,  modem.bin sboot.bin

총 7개의 파일이 나왔고, boot.img를 구글링해서 찾은 unmkbootimg로 푸니 다음과 같이 나왔습니다.

root@ubuntu:~/repack# unmkbootimg -i boot.img
kernel written to 'kernel' (6919232 bytes)
ramdisk written to 'ramdisk.cpio.gz' (1959520 bytes)

To rebuild this boot image, you can use the command:
  mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x10008000 --ramdisk_offset 0x11000000 --second_offset 0x10f00000 --tags_offset 0x10000100 --kernel kernel --ramdisk ramdisk.cpio.gz -o boot.img
root@ubuntu:~/repack# ls -l
total 17604
-rw-r--r-- 1 root root 9138464 Sep 30 01:16 boot.img
-rw-r--r-- 1 root root 6919232 Sep 30 01:16 kernel
-rw-r--r-- 1 root root 1959520 Sep 30 01:16 ramdisk.cpio.gz

여기서 kernel대신 제가 위에 링크한 코드를 가져가다 make한 zImage를 넣고 

mkbootimg --base 0 --pagesize 2048 --kernel_offset 0x10008000 --ramdisk_offset 0x11000000 --second_offset 0x10f00000 --tags_offset 0x10000100 --kernel zImage --ramdisk ramdisk.cpio.gz -o boot.img

를 입력하면 다시 boot.img가 만들어지긴 하는데, 이걸 다시 다른파일들과 같이 .tar로 압축해서 오딘으로 보내면 오딘에서는

<OSM> All threads completed. (succeed 1 / failed 0)
라고 나오는데, 부팅화면에서 멈춘채로 부팅이 안됩니다.

그런데 커널이미지를 zImage로 바꾸지 않고 그냥 unmkbootimg 했다가 그대로 다시 mkbootimg해도 boot.img의 용량이 약간 작아지고, 역시 똑같이 부팅이 안됩니다. 

정리하자면

1.unmkbootimg후 아무것도 바꾸지않고 그대로 mkbootimg해도 원래의 boot.img보다 용량이 작아지고, 부팅이 안됨.

2.하지만 순정 펌웨어를 그대로 오딘으로 넣으로 정상적으로 부팅이 됨.

3.직접 컴파일한 zImage의 크기는 3.4mb밖에 안되는데, 순정펌웨어의 boot.img를 분해해서 나오는 kernel 이미지의 크기는 6.9mb임. 그냥 zImage로 바꿔서 mkbootimg하는게 맞는것인지?

며칠째 헤매고 있습니다. 도와주실분을 간절히 찾습니다. 해결해주시면 피자나 치킨 보내드리겠습니다 제발...

답변등록

질문자 선택 답변 보기

답변 (1)

kykint 2016.09.30 19:02
질문자로부터 선택받은 답변입니다

일단 결론부터 말씀드리면 저거 백날 컴파일해봤자 절대 못씁니다. 구글 안드로이드 common 커널소스는 말 그대로 안드로이드에 리눅스 커널을 돌리기 위한 기반일 뿐, 저거 갖다가 제조사 기기에 올리려면 거의 처음부터 뜯어 고쳐야 합니다. 현재로선 알파에 3.18 커널 돌릴 방법 없습니다. 그래도 굳이 해보시겠다면.. https://github.com/xiaolu/mkbootimg_tools 여기있는 mkboot 스크립트 써보세요. unmkbootimg 검색해보니 되게 오래된 스크립트던데, 아마 dtb를 지원 안해서 요즘 기기에는 못 쓸 것 같네요.

1 person rated this as good