일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Google App Engine
- 나르왈프레오
- 물걸레자동세척로봇청소기
- hopfield network
- 갤럭시탭S8울트라
- 삼성
- 동아리
- 인공지능
- BAM
- Python
- NarwalFreo
- 패턴인식
- 파이썬
- Friendship
- 고려대학교
- 삼성전자 소프트웨어멤버십 SSM
- 패턴 인식
- 구글 앱 엔진
- 멤버십
- 하이퍼바이저
- 빅데이터
- 가상화
- 신경회로망
- 증강현실
- Neural Network
- 신경망
- 삼성소프트웨어멤버십
- 물걸레로봇청소기추천
- SSM
- Bidirectional Associative Memory
- Today
- Total
정보공간_1
[6기 강남 윤재석] 안드로이드 리눅스 커널 빌드 & 포팅 (Nexus S) 본문
[6기 강남 윤재석] 안드로이드 리눅스 커널 빌드 & 포팅 (Nexus S)
알 수 없는 사용자 2014. 10. 27. 15:02안드로이드용 리눅스 커널 빌드는 우분투에서 진행하도록 하겠습니다. 만약 우분투가 설치되어있지 않다면 아래 포스팅의의 전반부를 읽고 우분투를 설치합니다.
첫번째 단계로 먼저 리눅스 커널 빌드를 위해 사용되는 툴체인을 설치해야합니다. 툴체인은 빌드를 위해 사용되는 컴퓨터 (Host라고 함)와 빌드된 결과물을 사용할 컴퓨터 (Target이라고 함)인 넥서스 S 스마트폰이 사용하는 환경이 다르지만 사용할 수 있도록 해주는 것을 말합니다. 툴체인이라는 말에는 빌드를 위한 컴파일러 뿐만아니라 빌드를 위한 각종 유틸리티와 라이브러리를 모두 포함하여 말하는 것으로 일반적으로 Assembler, Linker, C Compiler, C Library, Utility 로 구성되어 있습니다.
안드로이드 스마트폰에 적재되는 리눅스 커널을 빌드하기 위한 툴체인으로는 크게 2가지 종류가 있습니다.
1) 구글이 제공하는 arm-eabi-4.4.3
2) ARM 계열에 최적화된 linaro-4.7.3
이 중에서 저희는 구글이 제공하는 arm-eabi-4.4.3 를 사용하여 빌드하도록 하겠습니다.
toolchain 폴더를 생성하고 다운로드 받습니다.
$ mkdir ~/toolchain
$ cd ~/toolchain
$ wget https://www.dropbox.com/s/6s3f57wd4zie8ah/arm-eabi-4.4.3.zip
만약에 wget이 없을 경우 아래의 명령어를 입력해서 wget을 설치해줍니다.
$ sudo apt-get install wget
이어서 다운로드 받은 압축파일을 풀고 권한을 줍니다.
$ unzip arm-eabi-4.4.3.zip
$ chmod 777 -R arm-eabi-4.4.3
툴체인에 접근이 용이하도록 bashrc에 환경변수를 등록해줍니다. 먼저 bashrc를 열고
$ vi ~/.bashrc
아래와 같은 내용을 추가한 뒤
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=$HOME/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
export PATH=$HOME/toolchain/arm-eabi-4.4.3/bin:$PATH
이제 툴체인의 설치가 완료되었습니다. 이어서 안드로이드 리눅스 커널을 다운로드 받도록 하겠습니다. 넥서스 S용 리눅스 커널은 https://android.googlesource.com/kernel/samsung.git 에 관리되고 있으며, 만약 다른 기기에 포팅할 경우 해당 디바이스에 맞는 리눅스 커널을 다운로드 받아야합니다. 대부분의 리눅스 커널 소스는 https://android.googlesource.com 에서 구할 수 있습니다.
git을 통해 안드로이드용 리눅스 커널을 다운로드 받을 수 있으므로 git을 설치해줍니다.
$ sudo apt-get install git
git을 이용해 안드로이드용 리눅스 커널 소스를 다운로드 받습니다.
$ mkdir ~/kernel
$ cd ~/
kernel
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git checkout remotes/origin/android-samsung-3.0-jb-mr0
$ cd samsung
make를 이용해 안드로이드용 리눅스 커널을 컴파일 합니다. 컴파일에 앞서 configuration을 위한 모델명을 넣는데 넥서스 S는 herring_defconfig로 입력합니다. 수많은 로그와 함께 컴파일 되는 것을 확인할 수 있습니다.
$ make herring_defconfig
$ make -j4
컴파일의 결과 파일은 arch/arm/boot/zImage에 생성됩니다.
이제부터는 빌드한 안드로이드용 리눅스 커널을 넥서스 S에 포팅하는 것을 소개하도록 하겠습니다.
빌드한 안드로이드용 리눅스 커널을 핸드폰으로 전송하기 위해서는 fastboot라는 프로그램을 사용해야합니다. fastboot는 안드로이드 프레임워크 빌드시 얻을 수 있으며, http://d.android.com/sdk 에서 android sdk를 통해 fastboot 를 다운로드 받을 수도 있습니다. fastboot는 tools 폴더에 들어있습니다.
이제 넥서스 S를 fastboot 모드로 부팅시켜야합니다. fastboot 모드란 fastboot 명령어를 통해 안드로이드 이미지를 플래싱 받을 수 있는 모드를 말하며, 전원을 끈 상태에서 각 핸드폰마다 아래와 같은 방법으로 fastboot 모드에 진입할 수 있습니다.
Booting into fastboot mode
Device | Keys |
---|---|
hammerhead | Press and hold both Volume Up and Volume Down, then press and hold Power |
flo | Press and hold Volume Down, then press and hold Power |
deb | Press and hold Volume Down, then press and hold Power |
manta | Press and hold both Volume Up and Volume Down, then press and hold Power |
mako | Press and hold Volume Down, then press and hold Power |
grouper | Press and hold Volume Down, then press and hold Power |
tilapia | Press and hold Volume Down, then press and hold Power |
phantasm | Power the device, cover it with one hand after the LEDs light up and until they turn red |
maguro | Press and hold both Volume Up and Volume Down, then press and hold Power |
toro | Press and hold both Volume Up and Volume Down, then press and hold Power |
toroplus | Press and hold both Volume Up and Volume Down, then press and hold Power |
panda | Press and hold Input, then press Power |
wingray | Press and hold Volume Down, then press and hold Power |
crespo | Press and hold Volume Up, then press and hold Power |
crespo4g | Press and hold Volume Up, then press and hold Power |
fastboot 모드로 진입하면 아래와 같은 화면을 볼 수 있습니다.
이 상태에서 USB를 통해 PC와 넥서스 S를 연결합니다.
부분적으로(선택적으로) 이미지를 플래싱하는 방법
$ su root
# cd ~/kernel/samsung/arch/arm/boot
# fastboot flash zimage zImage
이렇게 플래싱을 할 수 있으며, 플래싱 완료 후 REBOOT 메뉴를 선택하면, 포팅 성공한 안드로이드를 확인할 수 있습니다.
아래의 스크린 샷은 본인의 넥서스 S로, 환경설정->휴대전화 정보에서 확인할 수 있는 화면입니다.
수고하셨습니다. 짝짝짝!!
관련글 : [6기 강남 윤재석] 안드로이드 프레임워크 빌드 & 포팅 (Nexus S)
Written By Jaeseok Yoon, email : yjaeseok@gmail.com
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[6기 수원 최웅엽] WebGL 기초 (0) | 2014.10.31 |
---|---|
[6기 강남 윤재석] SOAP Implementation in Java (0) | 2014.10.30 |
[6기 강남 조유석] Convex Hull (0) | 2014.10.20 |
[6기 전주 황규하] TizenProject/platform/kernel/u-boot/drivers/serial/serial_s3c24x0.c 분석 (0) | 2014.10.20 |
[6기 강남 윤재석] 안드로이드 프레임워크 빌드 & 포팅 (Nexus S) (0) | 2014.10.20 |