티스토리 뷰

안녕하세요~


제가 "나도 CM7을 포팅해 보자" 라는 종류의 글을 몇번 적어보려 합니다

일단 포팅의 맛보기로 CWM을 포팅하는 방법을 적은 강좌를 작성해 보도록 하겠습니다


어디까지나 초보자를 위한 글이기 때문에 어려운 용어는 되도록 사용하지 않도록 하겠습니다

이 블로그는 마우스 오른쪽을 지원하지 않을 예정이기 때문에 명령어는 첨부해 두도록 하겠습니다


CWM Porting.txt


또한 이글은 부족한 자료가 있을경우 보충될 예정입니다 ㅎㅎ


시작하기전 손가락 한번만 눌러주시면 감사드리겟습니다 ㅠㅠ



그럼 시작하겠습니다 잘따라와 주세요!


※주의: 이방법은 일반적인 Ramdisk를 사용하는 스마트폰에 가능하며 initramfs를 사용하는 일부 삼성폰에는 적용되지 않습니다



1. 우분투 설치/빌드환경을 구축하자!

일단 우분투를 설치하셔야 합니다

설마 CWM을 포팅하시는대 우분투를 모르시는 분은 없겠죠?...


우분투를 설치할수 있는 방법은 다양합니다

가상머신에 설치, Wubi로 설치, 멀티부팅으로 설치 등이 있는대요

다른 블로그에 아주 자세하게 포스팅 되어 있기 때문에 살짝 넘어가려 합니다 ㅎㅎ

설치하실때 꼭 64비트로 설치해 주세요 (빌드 오류가 적습니다)



우분투를 설치하셨으면 부팅해 주세요

그다음 터미널을 열어주시면 됩니다


이제 버전에 따라 각각 명령어를 입력해 주세요


(1) 우분투 10.10~11.10버전 분들이 공통으로 입력하셔야 하는 구문

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \

  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \

  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \

  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \

  libxml2-utils xsltproc


(2) 우분투 10.10 을 쓰시고 계시면 다음을 추가로 입력해 주세요

$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so


(3) 우분투 11.10 사용하시고 계시면 위 명령어와 다음을 추가로 입력해 주세요

$ sudo apt-get install libx11-dev:i386


(4) 우분투 12.10을 이용하시고 계신다면 위 명령어는 필요없고 아래 명령어를 입력해 주세요

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \

  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \

  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \

  libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \

  python-markdown libxml2-utils xsltproc zlib1g-dev:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so



2. Repo를 다운받아 소스를 다운받기 위한 준비를 하자!

이제 소스를 다운받아야 하는대요

우리가 cm의 소스등을 받기위해 repo라는 것을 사용합니다


위와 마찬가지로 터미널에 입력해 주시면 됩니다

mkdir -p ~/bin

export PATH=$PATH:~/bin

cd ~/bin

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

chmod a+x ~/bin/repo


그럼 /home/(사용자 계정명)/bin/repo가 생기게 됩니다

이제 소스를 받을 폴더를 만들어 줘야 겠지요?

대부분의 사람들이 ~/android/system이라는 폴더에 소스를 받게 됩니다

(여기서 게속 나오는 ~/은 내폴더(홈폴더)를 줄여서 나타낸것입니다 원래는 /home/(사용자 계정명)/android/system이 되겠죠?)


그냥 마우스 오른쪽으로 android/system을 만드셔도 되지만 폼나게 명령어로 처리하는 방법은

mkdir ~/android/system

을 입력하시면 됩니다



3. 소스를 받아볼까?

이제 repo에게 소스를 어디서 받을지 알려줘야 됩니다

그래야 착한 아이가 소스를 가져오죠 ㅋㅋ


2에서 만들어둔 android/system폴더에 터미널로 들어가야 합니다

아시다 싶이 폴더를 이동하는 명령어는 cd입니다..


cd ~/android/system

명령어로 이동해 주세요


repo를 통한 소스 다운로드


단 repo로 받게되면 몇몇 기기정보가 누락되어 받아집니다

그래서 제가 직접 누락된것을 보충하여 cm7소스를 배포하고 있습니다

http://itmir.tistory.com/43

위 게시글을 들어가셔서 cm7소스를 다운받으시길 추천드립니다



4. 진짜로 빌드 해볼까? - 아니

자 이제 소스를 모두 다운받으셨을듯 합니다

그렇다면

make -j4 otatools

를 입력해 주세요

(지금부터 나오는 대부분의 명령어는 cd ~/android/system에서 작업하셔야 합니다)


본격적으로 빌드 준비하기전 unpackbootimg를 설정해 줘야 합니다


unpackbootimg


이 파일을 /bin에 넣어야 합니다

넣는 방법은 sudo를 통한 넣기 또는 루트계정으로 들어가서 넣기가 있는대요

그냥

sudo cp unpackbootimg /bin

sudo chmod 777 /bin/unpackbootimg

를 해주시면 됩니다


또한 자바를 깔으셔야 오류가 덜난다고 합니다

http://itmir.tistory.com/51

이글의 중간부분쯤 java설치부분을 따라해 주시고

http://deviantcj.tistory.com/373

이 블로그의 java추가방법을 참고해 주세요

(thanks 삽질)


(원래 빌드하기 까다롭습니다 절반정도 왔으니 힘내세요!)


그다음 cwm을 포팅할 기기의 순정 boot.img와 순정recovery.img를 준비해 주세요

(adb로 추출하는 방법이 http://itmir.tistory.com/91 에 간략하게 기록되어 있군요)


더보기


5. 언제 빌드하지? - 벤더생성

이제 자신의 폰에 맞게 디바이스 소스를 생성해 주어야 합니다


순정 boot.img를 ~/android폴더에 넣어주세요

다른분들은 mydroid에 넣으시라 하는대 상관 없습니다 ㅋㅅㅋ


그다음

. build/envsetup.sh

를 입력하셔서 빌드 환경을 업데이트 해주세요

(모든(?) 빌드 명령어들은 . build/envsetup.sh을 입력하신 다음부터 사용하실수 있습니다

그러니 터미널을 한번 닫고 새로 열으시면 다시 실행해 줘야 하는 명령어 입니다)


이제 mkvendor.sh를 이용하여 boot.img를 분해합시다

build/tools/device/mkvendor.sh 제조사 기기명 ~/android/boot.img


제조사와 기기명을 입력하신다음 타이팅 해주세요 ㅎㅎ

(이때 한글또는 -을 넣으시면 오류나니 넣지마세요)


이제 조금만 더 가시면 됩니다..


터미널이 아닌 폴더로 이동해 주세요

~/android/system/device/제조사/기기명

위 폴더로 들어가 주세요

그럼 recovery.fstab 파일과 boardconfig.mk 가 있습니다

이제 이것을 cwm에 맞게 또는 자신의 기기에 맞게 수정하셔야 합니다


먼저 약간 간단한(?) recovery.fastab을 수정해 봅시다

이것은 순정 recovery.img를 뜯어 주시면 램디스크 파일안 etc/recovery.fastab에 있습니다...

뜯는 방법은 http://itmir.tistory.com/48를 참고해 주시면 됩니다

본문에 추가하면 길이가 너무 길어지므로 추가하지 못하는점 이해해 주세요...


recovery.fstab을 수정하셨으면 boardconfig.mk를 열어주세요


BOARD_KERNEL_BASE := 0x10000000

BOARD_KERNEL_PAGESIZE := 2048


# fix this up by examining /proc/mtd on a running device

BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00800000

BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x1400000

BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x22400000

BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000

BOARD_FLASH_BLOCK_SIZE := 131072


위와 같은 구문을 보실수 있습니다


이제 이것을 기기에 맞게 수정하시면 됩니다

adb shell cat /proc/mtd 또는 터미널 에뮬레이터 어플에서

su

cat /proc/mtd

을 입력하시면 위 PARTITION_SIZE를 알수 있는 화면이 나옵니다

mtd의 내용과 같게 boardconfig.mk를 수정해 주세요

BOARD_FLASH_BLOCK_SIZE는 감이 잘 안오시는 분들이 계실탠대요 mtd를 보시면 erasesize가 있습니다

이 값은 16진수입니다 이것을 10진수로 변환해 주신다음 넣어 주시면 됩니다


그다음 부트이미지를 분해할때 나오는 KERNEL BASE값과 PAGESIZE값이 boardconfig에 기록된 값과 같은지 확인해 주시면 됩니다 ㅎㅎ



6. 본격적 빌드를... 흐흐

우린 방금 BoardConfig.mk를 수정했습니다..

이 mk를 한글자라도 수정했으면 다음 명령어를 실행해야 합니다

make clobber


이제 리커버리 이미지를 만드는 준비과정을 해줍시다!

lunch full_기기명-eng


이제 마지막 입니다!!

진짜 리커버리 이미지를 생성해 봐요!

make -j4 recoveryimage


수고하셨습니다 ㅎㅎ..

이제 ~/android/system/out/target/product/기기명 폴더안에 recovery.img가 생성되었습니다 ㅎㅎ


이 이미지를 fastboot등을 이용해 부팅해 확인해 주시면 됩니다!


↑ 직접 포팅한 CWM 리커버리 (CM7소스로 작업할경우 5.0.2.8버전으로 빌드됨)



리커버리의 화면이 비정상 일경우



Recovery.img를 빌드하며 발생하는 몇몇 오류 해결법


신고
크리에이티브 커먼즈 라이선스
Creative Commons License
댓글
  • CCP 10.04는요 쿨럭.. 2013.01.28 19:59 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 10.04=10.10으로 작업하시면될듯 합니다 2013.01.28 21:43 신고
  • optimustic 10.04는 어디서 다운받나요? 2013.04.02 19:07 신고
  • optimustic 10.04는 어디서 다운받나요? 2013.04.02 19:07 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 같은 댓글이 두개가 달려있기에 하나는 삭제했습니다

    http://ftp.daum.net/ubuntu-releases/
    이곳은 daum에서 운영하는 서버인대요 여기서 원하는 버전의 iso를 받으실수 있습니다 ㅎ
    2013.04.03 17:26 신고
  • optimustic 감사합니다
    다운받을 수있겠네요 ㅋ
    근에 10.04랑 10.04.4는 같은 건가요?
    2013.04.03 18:19 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 잘 모르겠습니다만 제생각에는 .4가 더 안정적이지 않을까요?
    어디까지나 제 생각일뿐 찾아보시면 있을겁니다 자료가..
    2013.04.03 19:02 신고
  • optimustic 알겠습니다 ㅋ
    근데 10.04.자료에 들어가면 10.04.4라고 나오네요 ㅋ
    2013.04.03 20:51 신고
  • optimustic 제가 해본 결과
    ~/android/system 만들때 mkdir하니까 오류가 나서 수동으로 해야한다는 거구요

    그리고 cwm은 다른 사람들이 만들어논거 직접 올리면 리커버리 이미지 짜고 하는건 넘어가도 될듯 합니다
    다음 강좌도 봐야겠네요 ㅋ

    ps. 근데 원래 이렇게 소스다운하는데 하루종일 걸리나요? 전 한시간정도 걸린것 같읃데요...
    2013.04.08 23:55 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) mkdir -p였나요..? -p옵션을 주면 한번에 생성이 되더라고요
    아니면
    mkdir ~/android
    mkdir ~/android/system
    이렇게 단계적으로 해도 되죠 ㅋ
    2013.04.11 15:09 신고
  • optimustic 이건 개인적인 의견이지만...

    전 이거 못하겠네요...

    여러 오류도 많고 그리고 이해안가는 부분도 많고 특히 소스 받을 때는 똑같은 내용만 터미널에서 반복되서
    다운도 무한 다운이고 속터질거 같네요...

    그냥 다른 롬 포팅이나 해야죠...
    2013.04.09 00:01 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) github에서 소스를 받는게 원래 오래걸립니다
    무한 다운이 아니라 소스 크기가 좀 커요 그러므로 오래 기다리셔야 합니다
    2013.04.10 15:16 신고
  • optimustic 근데 밤늦게 한거라 기다리기는 좀 힘들었네요 ㅋ
    한 한시간쯤 걸리나요?
    소스크기가 얼마나 되길래?
    2013.04.14 10:49 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) github서버 상태에 따라 시간이 자유자재로 바뀝니다..
    어떤 글에서 일본으로 오는 git서버가 터져서 수리하는 동안 중국의 git을 사용하게 설정해 뒀다는대요 이것때문에 더 느려진것이 아닐까 생각됩니다..
    소스크기는 한 3~4기가 정도 됩니다 만 다르죠 모두 ㅋ cm7와 cm9도 다르고..
    2013.04.14 13:28 신고
  • optimustic 여러모로 감사했습니다

    나중에 모르는 거 생기면 여기다 물어봐도 되죠?
    2013.04.14 10:50 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 네ㅎ 제가 아는 한에서 답변해 드리겠습니다~ 2013.04.14 13:28 신고
  • NewWorld 강좌 감사합니다
    백아연에서 이 방법으로 리커버리 이미지를 빌드 시, 검은 화면만 나오며, 아무런 동작을 하지 않습니다 ㅇㅅㅇ;;
    혹시 해결 법 아시나요?
    2013.08.04 11:47 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) RECOVERY_GRAPHICS_USE_LINELENGTH := true
    이거 추가후 빌드해 보세요

    그래픽.c문제일수도 있습니다
    2013.08.04 18:04 신고
  • Favicon of http://blog.naver.com/rlawoehd187 풀파워 graphics.c가 정확히 어디있는지 모르겠네요 2013.12.13 22:19 신고
  • udx cat /proc/mtd 라고 치니깐 그런 파일이 없다고 나오네요;; 사용 기기는 g3 cat6이고 실제고 /proc/경로로 들어가 보니 mtd 도 없네요 ㅠㅠ 도와주세요 2015.03.19 13:47 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 최신기기부터는 cat /proc/mtd이 안됩니다..ㅠㅠ
    이 파일 자체가 없습니다
    다른 파일로 이름이 바뀐것 같기도 한데 아주 오래된 기억이라 가물가물하네요...

    이 게시글은 조금 많이 오래된 기기를 기준으로 작성한 글이므로 최신글을 찾아서 다시 시도해보시길 바랍니다
    2015.03.19 23:22 신고
  • Favicon of http://github.com/cloud9350 구르미 mtd값 대신에 파티션 크기 비트값을 써도 됩니다 ^^ 2015.03.20 09:50 신고
댓글쓰기 폼