Loading
2014. 1. 17. 08:03 - 알 수 없는 사용자

안드로이드: 커스텀 커널이란?


안녕하세요, 칼다리스입니다! 이번 글에선 커스텀 롬과 함께 안드로이드 커스터마이징의 양대산맥을 이루고 있는 커스텀 커널에 대해 알아보려 합니다. 프로세서 클럭 속도나 전압조절 등 커스텀 롬과는 또 다른 종류의 성능향상을 제공하는 부분이 바로 커스텀 커널입니다. 현재 사용 중인 커널은 폰정보 아래 Kernel version에서 확인하실 수 있습니다.




커널이란?

커스텀 커널을 알기 위해 우선 커널이 무엇인가 알아볼 필요가 있습니다. 커널은 모든 운영체제의 가장 기본적인 요소이며 쉽게 말해 소프트웨어와 하드웨어를 연결해주는 다리라고 보시면 됩니다. 여기서 소프트웨어는 여러분이 사용중이신 안드로이드 "운영체제", 하드웨어는 디스플레이, 스피커 등 물리적인 부품을 말하는 것이죠. 다음과 같은 그림으로 보면 쉽게 이해가 됩니다.

하드웨어 <=> 커널 <=> 소프트웨어


예를 들어 앱을 실행하기 위해 스크린을 터치하는 것도 실제론 복잡한 과정을 거칩니다. 화면의 터치를 인식하는 계수기(digitiser)에서 터치를 인식하면 좌표가 생성되어 커널을 통해 시스템(운영체제)에 전달됩니다. 시스템은 현재 보여지고 있는 화면에서 그 좌표는 앱실행을 의미하는 것을 알고 앱을 실행합니다. 앱이 실행될 경우 디스플레이에 보여야 하는 이미지가 바뀌기에 시스템은 커널을 통해 디스플레이에 띄워야 할 데이터를 보내 화면으로 비춰지게 되는 것이죠.

예가 좀 복잡했을 수도 있지만 앱실행 외에도 통화, 화면밝기 조절 등 커널이 빠지는 곳은 거의 없습니다. 만약 커널이 없다면 개발자들은 여러 디바이스에 존재하는 모든 하드웨어에 대한 각 이벤트 (터치, 버튼 누르기 등)에 대조되는 하드웨어 액션에 대한 코드를 일일이 개발해야 합니다. 한마디로 불가능이죠. 커널이 존재함으로 소프트웨어 개발자는 구글에서 제공하는 커널인터페이스인 안드로이드 API만 활용할 수 있으면 되며 하드웨어 개발자들 역시 하드웨어가 커널과 소통할 수 있도록 드라이버만 개발하면 되는 것입니다.



커스텀 커널

디바이스 제조사에 의해 배포되는 "순정" 커널은 제한된 부분이 많습니다. 예를 들면 안정성을 위해 전압량을 일정 수준으로 유지되도록 코드를 설계해두는 것이죠. 반면 커스텀 커널은 제조사가 아닌 개인 개발자들이 오픈소스로 공개된 제조사의 커널 소스코드를 이용해 코드를 수정하거나 추가함으로써 기존 제한되었던 기능들을 사용가능하게 합니다. 프로세서 클럭 속도가 가장 자주 언급되는 예로 추가적인 코드를 통해 프로세서가 더 높은 속도를 낼 수 있도록 할 수 있습니다. 또는 유저들이 앱을 통해 전압을 수정할 수 있도록 코드를 추가해 전압을 낮춰 배터리를 절약할 수도 있습니다. 그 외에도 사운드관련 트윅도 가능하며 각종 트윅을 통해 디바이스의 성능을 최대한 끌어낼 수 있습니다.

제가 드린 설명으론 어렵거나 헷갈릴 수도 있습니다. 커스텀 커널을 가장 쉽게 이해하는 방법은 직접 사용해보면서 몸으로 느끼는 것입니다. 커스텀 커널을 사용해 직접 여러가지 설정을 건드려보면 유저들이 왜 커스텀 커널을 원하는지 쉽게 체험할 수 있습니다.



개발자에 따라 커널이 지원하는 기능은 천차만별입니다. 커널 역시 리커버리와 마찬가지로 정해진 디바이스에서만 사용이 가능합니다. 대부분의 경우 커스텀 리커버리를 통한 ZIP설치파일로 배포되지만 갤럭시 디바이스의 경우 TAR형식으로 오딘 프로그램을 이용해 설치하는 방식으로도 배포되는 경우도 있습니다.