저번엔 갤럭시 넥서스기준으로 강의를 했지만 이번엔 넥서스s를 기준으로 해보고자 합니다. 솔직히 갤럭시넥서스나 넥서스s나
큰차이는 없고 전부 몇몇개만 틀릴뿐이지 어차피 뼈대는 같으니깐 갤럭시 넥서스 커널빌드를 이해하신분들은 크게 어렵지 않을듯 싶어요
*준비물
1.기존 빌드환경을 갖춘 우분투
2.테스트할 기기
3.따라할 의지와 집념
저번 갤럭시 넥서스 기준으로 강의를 하니깐 몇몇 까지를 원문에서 뺏어요. 그런데 이걸 기존에 설정안하시고 하시는 분들도 있어서
처음부터 싹 해드리지요.
1. 환경구축하기
$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo reboot |
그다음 자바를 설치 해야합니다.
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy main multiverse"$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk
이걸 쳐줍시다.
그다음 우분투 버전에 따라 각종 설치밑 패치
Ubuntu 10.04
$ 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 |
$ sudo apt-get update $ 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 git $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so $ sudo reboot |
여기 밑에 있는 reboot은 이러한 패치를 했을때 혹시 적용이 안될가봐 그걸 방지하기 위해서
리붓을 하여 확실히 적용하는 겁니다.
USB설정하기
$ sudo gedit /etc/udev/rules.d/51-android.rules
$ gksudo gedit /etc/udev/rules.d/51-android.rules |
여기 아래에서 자신의 맞는 기기제조회사를 찾아서 넣으시면 되요.
(넥서스 시리즈는 구글입니다)
# adb protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>" # fastboot protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>" # adb protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>" # fastboot protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>" # adb protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>" # fastboot protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>" # adb protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>" # fastboot protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>" # fastboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>" |
자 다됬으면 이밑줄을 쳐주세요.
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
자이제 환경은 다 구축이 됬네요 이제 소스받고 빌드(컴파일)하면 끝
2.소스받기
이제 구글에서 넥서스s 순정 커널소스를 받아야되요.
$ mkdir ~/원하는 이름/kernel $ cd ~/원하는 이름/kernel $ git clone https://android.googlesource.com/device/samsung/crespo -b ics-plus-aosp |
위의 ics-plus-aosp는 아이스크림 샌드위치 버전이고요 젤리빈은 대신에
jb-mr0-release를 쳐주시면 되겠네요.
$ cd crespo $ git clone https://android.googlesource.com/kernel/samsung.git -b android-samsung-3.0-ics-mr1 |
이것도 마찬가지로 ics소스이므로
를 쳐주시면 젤리빈 소스를 받으실수있을겁니다.
이제 툴체인을 설정하는 방법입니다
- 간단한 방법 (표준이라네요)
아래 구문을 쳐서 툴체인을 받고 패치하시면 됩니다$ git clone https://android.googlesource.com/platform/prebuilt -b ics-plus-aosp
$ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH$(pwd) 여기안에 들어갈 말은 자신이 툴체인을 받은 위치를 말합니다
예로들어 a라는 폴더안에 받아서 prebuilt라는 폴더가 a라는 폴더에 생성되면
export PATH=$a/prebuilt/linux-86/toolchain/arm-eabi-4.4.3/bin:$PATH 라고 치시면 됩니다.
그리고 위에서 소스를 젤리빈 버전으로 받으시면 여기서도 젤리빈용을 받으셔야 합니다.
- .고급설정
-
아래구문처럼 터미널에 입력해주세요(툴체인은 솔직히 위 사이트말고도 여러군데서 받을수있어요그럴 경우 아래와 같이 툴체인을 설정해주시면 사용하실수 있답니다.)
mkdir ~/Documents/toolchain
cd ~/Documents/toolchain
$ git clone https://android.googlesource.com/platform/prebuilt -b ics-plus-aosp
export PATH=~/Documents/toolchain/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH3.커널 빌드(컴파일)하기이제 작업폴더로 들어갑시다.cd ~/Documents/kernel/crespo 거기서 아래와 같이 쳐서 툴체인 경로를 설정해줍시다.
그리고 make를 통해 빌드를 해봅시다.
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd samsung
$ make ARCH=arm herring_defconfig (maybe ARCH=arm is unneeded here but added it to be sure)
$ make자그럼 이제 마찬가지로
/원하는 이름/kernel/crespo/samsung/arch/arm/boot
에 zimage가 생성될것입니다 그리고 터미널에 [m]이 앞에 붇은건
모듈로서 커널플래슁할때 같이 해주세요.
*Tip
보통 커널은 자신의 기기성능 향상을 위해하는 것입니다 그런데 단순히 순정만 빌드하면 좀 그럴가봐
팁을 하나 드리고자 합니다!! 기기의 성능을 체감있게 올릴수있는 오버클럭을 할수있는 파일경로인데요
<kernel_directory>/samsung/arch/arm/mach-s5pv210/cpu-freq.c
위의 경로를 따라가면 cpu-freq.c 파일을 수정하면 오버클럭이 가능하다고 합니다.
p.s 그런데 툴체인 설정할때 herring은 넥서스s 보드명이라네요;; crespo는 단순 넥서스s 코드네임이라고 합니다.
참고사이트
http://forum.xda-developers.com/showthread.php?t=1774035
이번엔 한사이트만 참조했네요;;
'모바일 IT > 강좌 밑 Tip' 카테고리의 다른 글
linaro toolchain을 이용하여 빌드해보자 (0) | 2014.01.18 |
---|---|
순정 (AOSP)는 질린다. 다른롬들을 한번 빌드해보자 (2) | 2013.01.27 |
한번 빌드라는것을 해보자 (0) | 2013.01.27 |
롬을 빌드해봤으면 커널도 빌드해봐야지? (0) | 2013.01.27 |