-
반응형
안드로이드 커널 코드는 기본 리눅스코드를 커스터마이징을 통하여 필요한 기능을 추가하고 불필요한 부분을 제거하여 모바일이나 태블릿에 맞게 변경된 커널을 의미한다. 리눅스 코드 자체가 오픈소스이다 보니 안드로이드도 역시 코드가 오픈되어 있어 웹사이트에 방문하여 쉽게(?) 다운로드 받을 수 있다.
http://source.android.com/source/downloading.html
안드로이드에서는 플랫폼 소스코드와 커널 코드가 구분되어 관리되고 있다.
플랫폼 소스코드는 download 사이트의 내용 자체를 따라하면 쉽게 받을 수 있지만, 커널 코드는 사이트에 적혀있지 않은 일부 정보가 필요하여 커널 코드 다운로드에 대해서 이야기 하려 한다.
일단 커널 코드를 받기 위해서 git이라는 새로운 소스코드 관리 툴을 설치하고 사용해야 하기 때문에 누워서 떡먹기 수준은 아니다. 일단 git설치가 필요기 때문에 pc에 git을 설치를 진행한다.
(내가 쓰는 OS는 우분투이기 때문에 우분투기반으로 내용이 작성하였다. 만약 윈도우를 사용한다면, http://www.git-scm.com/ 사이트에서 윈도우용을 다운받자)
sudo apt-get install git
여기서 잠깐. git이란??
git이란 리눅스 커널 창시자인 리누즈 토발즈가 커널 소스코드 관리를 위해서 만든 프로그램이다. 리눅스 커널은 수많은 브랜치로 나눠져 관리되고 있는데 실질적으로 수많은 사람들이 처리해야 하기 된다. 이러한 경우 중앙서버로써 관리되는 SVN 으로는 소스코드에 있어 효율적이지 않아 분산처리가 가능한 git을 만들었다고 한다. 그러한 이유로 브랜치를 나누거나 머지를 하는데 있어서 매우 효율적인 분산기반 소스버전 컨트롤이다.
git의 자세한 이야기는 다음에 하기로 하고, 간단한 사용법만 알면 소스코드를 받는데는 어려움이 없다.
안드로이드 kernel 레파지토리를 다운로드 받는다. 참고로 SVN에서는 서버의 레파지토리로부터 체크아웃만 받으면 되지만, 분산이 기반이기 때문에 레파지토리 자체를 복사해서 가져온다.
git clone https://android.googlesource.com/kernel/common.git kernel
레파지토리를 복사해왔고, 이제 필요한 branch의 소스코드를 checkout하면 된다.
이 과정에서 소스코드가 안보여서 골치가 아팠는데, 디폴트 HEAD 브랜치에는 아무런 코드가 없기 때문에 필요한 버전에 맞는 branch의 소스코드를 checkout 받아야 한다.
cd kernel
git branch -r
위의 명령어를 통하여 브랜치 정보들을 확인할 수 있다.
origin/HEAD -> origin/masterorigin/android-2.6.39origin/android-3.0origin/master
안드로이드 3.0이 있군요. 이부분은 플랫폼 버전이 아니라 커널 버젼을 의미합니다. 실질적으로 플랫폼 버전은 4버전이다.
체크아웃을 받음으로써 이제 소스코드를 확인할 수 있다.
git checkout origin/android-3.0
코드를 받고 보니 몇가지 궁금한 사항들이 생겼다.
- 리눅스 커널 코드와 비교하여 변경된 부분(드라이버 코드를 제외)
- 안드로이드 커널에 추가된 기능(달빅)
분석하여 무언가 결과가 있을 경우, 블로그를 통하여 공유하도록 하겠다.
반응형 - 리눅스 커널 코드와 비교하여 변경된 부분(드라이버 코드를 제외)