리눅스 커널

커널은 말 그대로 메모리에 상주하여 시스템 디바이스와 메모리, 프로세스를 관리하고, 입출력을 처리하는 등 운영체제의 핵심 역할을 수행하는 프로그램입니다. 모든 운영체제에는 커널이 있고, 그 성능에 따라 운영체제 전체의 성능이 영향을 받습니다. 그만큼 중요한 것이기에, 리누스 토발즈가 시작한 리눅스 커널에 다양한 시스템 프로그램과 유틸리티들을 덧붙여 운영체제로 구성한 것도 리눅스라 부릅니다.

리눅스 커널의 가장 큰 특징은 사용자 스스로가 커널을 만들 수 있다는 것입니다. 리눅스의 다른 프로그램처럼 커널도 기본적으로 소스 형태으로 배포되며 배포판 패키지, 혹은 ftp나 BBS유저그룹을 통해 다운받을 수 있습니다. 컴파일을 위한 환경은 잘 만들어진 몇 가지 스크립트를 이용하여 어렵지 않게 설정할 수 있고 커널 해킹을 위한 문서 또한 자유롭게 구할 수 있습니다. 소스 공개는 리눅스 커널과 사용자 그룹의 비약적인 발전의 큰 동기입니다. 다른 운영체제의 커널이 상업주의에 발목잡혀있는 동안 리눅스의 열린 정신이 더욱 빠르고 강한 커널을 만들어온 것입니다.

커널 컴파일은 꽤 심각하게 다루어지는 주제이지만 굳이 새 커널로 컴파일하는 이유를 묻기도 합니다. 당연한 것을 묻는다 생각하면서도 리눅서들이 두 세 가지 정도 이유를 말합니다.

먼저, 일반적으로 커널 컴파일은 시스템 최적화의 한 수단으로 쓰입니다. 배포판에 포함되어 있는 기본 커널에는 여러분의 하드웨어나 용도를 알 수 없어 혹시 쓰일지도 모르는 다양한 기능들을 집어넣게 됩니다 어떤 컴퓨터에서도 동작할 수 있도록 만들었기 때문에 실제로 여러분에게 필요한 커널보다 덩치도 크고, 때로는 약간 성능이 떨어질 수도 있습니다. 그래서 많은 리눅서들이 자신의 시스템에 가장 적합한 작은 커널을 새로 만들어 리눅스 박스의 성능을 최대로 끌어올리는 것입니다. 제한된 공간 안에 필요한 기능들만 넣어야하는 임베드 리눅스 장치에서는 커널 컴파일이 더욱 중요합니다.

새로운 하드웨어를 리눅스 박스에 추가했을 때에도 커널을 새로 컴파일해야 합니다. 디바이스 드라이버가 여러분 커널에 없을지도 모르며, 있다 하더라도 더 좋은 드라이버가 새 커널에 있지 않을까요.

그리고 단순히 재미 때문에 컴파일하는 이들도 있습니다. 어떤 커널 매니아들은 커널 컴파일 자체에 더 큰 흥미를 가진 듯 보이기도 합니다.