안드로이드 삼성 기기의 커널을 빌드해보자! #1

DY34132017.10.14 21:5910.14조회 수 85댓글 0

AA

안녕하세요. DY3413입니다.
여러분께 커널 빌드 하는 방법을 알려드리려 글을 씁니다.
기초 지식은 알고 있어야 하고 리눅스가 설치되어있는 상태여야 합니다 (우분투 16.04 LTS 기준)

1. OSRC에서 소스 받아오기
http://opensource.samsung.com/reception.do

OSRCOpen Source Release Center로
삼성 기기들의 오픈 소스들이 업로드 되고 있습니다.

검색 창에 기종의 모델명을 입력해 기종의 소스를 찾으면 됩니다. (Ex.SM-G900S)
그러면 여러 소스들이 나오는데 그 소스 들 중 기종의 펌웨어에 맞는 버전을 다운하시면 됩니다.

그리고 다운로드를 완료했으면 파일을 열고 kernel.tar.gz 파일을 열면 (가끔 .폴더가 있을 수 있는데 있을 시 그 폴더 안에 들어가 줍니다.)
소스들이 보일 텐데 아무 장소에 폴더를 만들고 (나중에 이상한 데에 풀어두면 곤란 해질수 있으니 내 폴더에 푸는 걸 추천합니다.)
그 폴더 안에 소스들을 풀어줍니다.
그리고 README_kernel.txt를 미리 열어둡니다. (절대 지우지 마세요.)

저는 이런 식으로 풀었습니다.
이렇게 풀었다면 이제 툴체인을 설치해야 합니다.

2. 툴체인 다운부터 설정하기

툴체인을 다운해야 합니다.
여기서 툴체인이란
소스 코드를 컴파일하고 빌드 하여 실행 파일을 생성하는데 필요한 각종 유틸리티 및 라이브러리들을 모은 것입니다.

그냥 커널을 빌드 할 때 꼭 필요한 것이라 생각하면 됩니다.

툴체인의 종류로는 linaro, uber 등이 있고
arm (32비트), aarch64 (64비트) 툴체인으로 나뉩니다.
툴체인은 자신의 폰기종의 아키텍쳐에 맞게 선택해야 합니다.

arm-eabi 4.8 toolchains
https://drive.google.com/open?id=0BwvCjO1ULOd8NmVnRzRBNTJaX1k

aarch64 4.9 toolchains
https://drive.google.com/open?id=0BwvCjO1ULOd8VWZ1bGxjZ2FMc1k

다운 받고 폴더 채로 풀어줍니다.

이제 툴체인 경로를 설정해야 합니다.

3. 툴체인 경로 설정
1에서 풀어놓은 소스 폴더에 들어가면
makefile이 있습니다.
makefile을 열어줍니다.
(makefile이 읽기 전용이라면 makefile을 우클릭 후 속성-권한-접근-읽기 및 쓰기로 하면 됩니다.)

그리고 CROSS_COMFILE을 검색합니다.
그러면 64비트 기준 이렇게 나와 있을겁니다.
CROSS_COMPILE    = ../PLATFORM/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
이제 툴체인 경로에 맞게 바꿔줍니다.

CROSS_COMPILE    =/opt/toolchains/arm-eabi-4.8/bin/arm-eabi-
이런 식으로 말이죠.

4. 커널 빌드
아까 열어 놓은 README_kernel.txt를 열면
빌드를 어떻게 하는지 나와있는데 거기서 make ARCH 부분을 찾습니다.

a7 2016 기준으로 이렇게 나와있습니다.
make ARCH=arm64 exynos7580-a7xelteskt_defconfig 
make ARCH=arm64
커널 빌드할 때 사용하는 명령어이므로 복사 해 놓으면 편합니다.

이제 소스 폴더에서 우클릭 후 터미널을 열어줍니다.
열고 아까 찾은 명령어를 쳐줍니다.
그러면 빌드가 시작됩니다.
사양에 따라 시간이 길어질 수도 있습니다.

5. lz4 오류 해결
그리고 자주 발생하는 lz4 오류 해결 방법을 알려드리겠습니다.
커널 빌드시 lz4을  compress로 많이 사용하는데 가끔 오류가 나기도 합니다.
이럴 때는 lz4를 설치해줘야 합니다.

https://github.com/lz4/lz4
여기에서 lz4을 다운 받습니다.
그리고 압축을 풉니다.

풀었으면 푼 폴더 안으로 들어가서 터미널을 열어줍니다,
그리고
make
sudo make install
을 순서대로 쳐줍니다.

정상적으로 설치되면 다시 빌드 하시면 됩니다.

댓글 0