티스토리 뷰

안녕하세요~


제가 "나도 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로 받게되면 몇몇 기기정보가 누락되어 받아집니다

그래서 제가 직접 누락된것을 보충하여 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버전으로 빌드됨)






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