얼렁뚱땅 근근히 오류하나하나 넘어가는 강의지요 ㅎㅎ;; (아나 반드시 컴퓨터언어 배우고만다...)
아무튼 이번시간에는 커널을 빌드해보도록하지요. 저번에 한 롬빌드에 비하면 굉장히 간단한 편이지요.
자 그럼 시작해볼까요.
*우선 저는 갤넥이기에 갤넥 기준으로 한답니다.(롬빌드도 그래요)
준비물
1.롬빌드할때 했던 환경구축 안지우기
2.따라 읽을 의지
자 그럼 소스 받기 부터 시작하도록 하지요. 우선 구글에서 배포하는 기본커널소스를 받아야되요.
터미널을 실행시키세요
$ mkdir ~/원하는 이름/kernel $ cd ~/원하는 이름/kernel $ git clone https://android.googlesource.com/device/samsung/maguro -b jb-release |
자 이렇게 폴더를 만든후 들어가서 git을 해주면 소스를 쭉쭉 받습니다. done이 떠서 다시 명령어를 칠수있을때까지
기다리시면 되요.
$ cd maguro $ git clone https://android.googlesource.com/kernel/omap.git -b android-omap-tuna-3.0-jb-pre1 |
이렇게 쳐주시면 이젠 OMAP소스를 받기 시작하지요 역시나 done이 될때까지 기다림.....
자 이렇게 필요한 소스를 다 받으면 이제 빌드(컴파일)을 하면되는데 커널은 컴파일을 하려면 툴체인이라는 놈이 필요합니다.
툴체인이란?
툴체인
툴체인(toolchain)은 주로 다른 컴퓨터 또는 시스템의 소프트웨어 제품을 만드는 데 사용되는 컴퓨터 프로그램 개발 도구들의 집합이다. 일반적으로 여기에 포함된 개발 도구들은 연쇄적으로 사용된다. 즉 어느 한 개발 도구의 출력은 다른 개발 도구의 입력이 된다. 그러나 이 용어는 서로 관련 있는 개발 도구들의 집합을 가리키는 의미로도 널리 사용된다.
간단한 툴체인은 소스 코드 편집을 위한 문서 편집기와 소스 코드를 실행 프로그램으로 변환하는 컴파일러와 링커, 그리고운영 체제의 기능을 제공하는 라이브러리로 구성된다. 비디오 게임과 같은 복잡한 제품에서는 소리 효과와 음악, 텍스처,3차원 모델, 애니메이션 등을 위한 개발 도구가 필요하며, 이를 한데 모아 완성된 제품으로 만드는 개발 도구도 있어야 한다.
라고 위키 백과사전에는 나와있네요... 뭔소린지.... 아무튼 커널을 컴파일하는데 필요한 각종 툴들을 뭉쳐논 개발도구라고 보시면되요.(그래도 이해가안갈려나..?)
아무튼 툴체인을 받고 또 툴체인 설정을 해줘야하는데 쉬운방법과 고급방법이 있네요.
$ git clone https://android.googlesource.com/platform/prebuilt -b jb-release $ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH |
$(pwd) 여기에 들어갈건 현제 자신의 폴더 경로를 써주시면 되요.
고급방법
쉬운방법과 다른점은 툴체인을 커널 폴더 내부에 넣지않고 외부로 빼는 방법입니다
mkdir ~/Documents/toolchain cd ~/Documents/toolchain $ git clone https://android.googlesource.com/platform/prebuilt -b jb-release export PATH=~/Documents/toolchain/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH |
이렇게 툴체인 다운로드와 환경설정까지 해주었으면 이제 빌드를 해보도록 하지요.
cd ~/원하는 이름/kernel/maguro |
이렇게 쳐줍시다. 그래서 작업할곳으로 돌아가요.
자 이제 대망의 빌드인가요 ㅋㅋ. 암튼 이렇게 쳐주시면 위의 과정대로 잘따라 오셨다면 오류없이
빌드가 됩니다.
$ cd omap $ export ARCH=arm $ export SUBARCH=arm $ export CROSS_COMPILE=arm-eabi- $ make tuna_defconfig $ make |
이건 금방걸려요 롬빌드에 비하면 매우 빨라요.
이렇게 빌드가 되고나면 (갤넥기준)
/원하는 이름/kernel/maguro/omap/arch/arm/boot
경로에 zimage가 생성됩니다.
그리고 터미널을 보시면 [m]이렇게 옆에 있는파일이 보이는건 모듈입니다 터미널에서 나온
해당경로에 따라들어가서 파일을 구하시면 됩니다.
그다음 플래시집을 구합니다.
전 스크립트를 짤지 몰라서 그냥 다른분의 커널플래시집을 사용한답니다.
만약 다른커널을 기반으로하고싶다 그러면 아래의 git주소를 repo를 이용하여
다운받으신후 빌드하시면 됩니다.
*이 강좌는 최종판이 아니므로 제가 뭔가 알아내면 계속 업데이트 됩니다.
커널 소스 주소
구글 순정 : git clone https://android.googlesource.com/device/samsung/maguro -b jb-release
zenseries : git://github.com/AndroidDeveloperAlliance/ZenKernel_TUNA.git
popcorn : git://github.com/sonicxml/Popcornkernel-Tuna.git (갤넥)
Glados : git://github.com/Ezekeel/GLaDOS-nexus-prime.git
franco : https://github.com/franciscofranco/Tuna_JB_pre1.git
air : git://github.com/edoko/AirKernel_GN_JB.git
linux kernel : http://www.kernel.org/ (이건 git아니예요)
참고사이트
http://forum.xda-developers.com/showthread.php?t=1829037
http://ko.wikipedia.org/wiki/%ED%88%B4%EC%B2%B4%EC%9D%B8
다음에 강좌할 사이트??(예정)
http://forum.xda-developers.com/showthread.php?t=1686310 & http://forum.xda-developers.com/showthread.php?t=1442870
http://wiki.cyanogenmod.org/wiki/Building_Kernel_from_source
잘못된 점있으면 댓글로 써주세요.
'모바일 IT > 강좌 밑 Tip' 카테고리의 다른 글
linaro toolchain을 이용하여 빌드해보자 (0) | 2014.01.18 |
---|---|
순정 (AOSP)는 질린다. 다른롬들을 한번 빌드해보자 (2) | 2013.01.27 |
한번 빌드라는것을 해보자 (0) | 2013.01.27 |
넥서스s(crespo)기준 커널을 빌드해보자 (0) | 2013.01.27 |