8.6. 새 커널 컴파일하기

새로운 커널을 컴파일하려고하는 이유는 무엇일까요? 데비안에서는 표준으로 들어가있는 커널에 많은 기능을 지원하고 있기 때문에 대부분 커널을 컴파일할 필요는 없습니다. 또한 데비안에서 여러 가지 커널을 제공합니다. 그래서 더 자신의 하드웨어에 적합한 다른 커널 이미지 패키지가 있는지 여부를 먼저 확인하면 됩니다. 하지만 다음 목적 때문에 새로운 커널을 컴파일하는 일도 유용합니다:

8.6.1. 커널 이미지 관리

커널 컴파일을 꺼려하지 마십시오. 재미있는 일이고 그만큼 좋은 점이 있습니다.

데비안 방식으로 커널을 컴파일하는데 필요한 패키지: fakeroot, kernel-package, linux-source-2.6, 나머지는 이미 설치되어 있는 패키지(완전한 목록은 /usr/share/doc/kernel-package/README.gz을 참조).

이 방법을 이용해 커널 소스에서 .deb 패키지 파일을 만들고, 커널에 들어 있지 않은 모듈이 있으면 그 모듈의 .deb 파일도 커널에 맞춰서 만듭니다. 이 방법이 커널 이미지를 관리하는 더 좋은 방법입니다. /boot 안에 커널, System.map 및 빌드할 때 사용한 커널 설정 파일이 들어갑니다.

반드시 데비안 방식으로 커널을 컴파일 할 필요는없습니다. 하지만 커널을 관리하는 패키지 시스템을 이용하는 편이 더 안전하고 더 쉽습니다. 사실 linux-source-2.6 대신 Linus가 배포하는 커널 소스를 그대로 사용할 수 있지만 그 경우에도 kernel-package를 사용하여 컴파일 하십시오.

/usr/share/doc/kernel-package 안에 kernel-package를 사용하는 방법에 대한 문서가 있습니다. 여기에서는 간단히 어떤 단계를 거쳐야 하는지만 설명합니다.

여기서부터는, 루트 권한 없이 자기 홈 디렉터리에 커널 소스를 풀었다고 가정합니다[18]. 또 커널 버전이 3.16 버전이라고 가정합니다. 커널 소스를 풀려는 디렉터리에서, tar xf /usr/src/linux-source-3.16.tar.xz 명령으로 커널 소스를 풀고, 새로 만들어진 linux-source-3.16 디렉터리로 들어가십시오.

그리고 커널을 설정합니다. X11 설치를 완료하고나서, X11을 실행중인 경우 make xconfig를, 그렇지 않은 경우 make menuconfig를 실행합니다. (뒤쪽꺼에는 libncurses5-dev가 설치되어 있어야합니다). 온라인 도움말을 걸쳐 읽고 신중하게 선택하십시오. 일반적으로 해당 장치 드라이버(이더넷 카드, SCSI 컨트롤러 등 하드웨어 주변 장치를 관리하는 소프트웨어)를 포함하는 것이 좋습니다. 주의하십시오: 특정 하드웨어에 관계없는 기타 옵션에서 잘 이해할 수 없는 것은 기본값 상태로 두십시오. 또한 Loadable module supportKernel module loader(기본적으로 선택되어 있지 않음)을 꼭 선택하십시오. 그렇지 않으면, 데비안 설치에 문제가 발생할 수도 있습니다.

소스 트리에 필요없는 파일을 지워서 kernel-package 파라미터를 초기화하십시오. make-kpkg clean 명령을 실행합니다.

이제 커널을 컴파일합니다: fakeroot make-kpkg --initrd --revision=1.0.custom kernel_image 명령을 실행합니다. 버전 번호 1.0은 마음대로 바꿀 수 있습니다. 이 번호는 커널 빌드를 파악하려고 사용하는 버전 번호일 뿐입니다. 마찬가지로 custom 대신에 어떤 단어라도(예를 들어 호스트 이름) 넣을 수 있습니다. 컴퓨터 속도에 따라 커널을 컴파일하는 데 좀 오래 걸릴 수도 있습니다.

일단 컴파일이 끝나면 다른 패키지와 같은 방법으로 직접 만든 커널을 설치할 수 있습니다. 루트 권한으로 dpkg -i ../linux-image-3.16-서브아키텍처_1.0.custom_armhf.deb 명령을 실행하십시오. 서브아키텍처 부분은 커널 옵션에 따라 달라지는 서브아키텍처 이름입니다. dpkg -i을 실행하면 커널 및 커널과 같이 사용하는 보조 파일을 설치합니다. 커널 문제를 해결하는데 도움이 되는 System.map 파일이라든지 설정 사항을 담은 /boot/config-3.16 등의 파일을 설치합니다. 커널 패키지는 부트로더를 자동으로 업데이트해서 새로 설치한 커널을 사용하도록 설정하기도 합니다. 모듈 패키지를 만들었다면 그 패키지도 설치해야 합니다.

이제 시스템을 다시 시작합니다. 위에서 발생한 메세지를 잘 읽어보시고, shutdown -r now 명령을 실행하십시오.

데비안 커널과 커널 컴파일에 대한 더 자세한 정보는 Debian Linux Kernel Handbook를 참조하십시오. kernel-package에 관한보다 자세한 정보는 /usr/share/doc/kernel-package의 문서를 읽어보십시오.



[18] 다른 위치에 커널 소스를 풀고 빌드할 수도 있지만, 특정 권한이 없이도 할 수 있는 가장 쉬운 방법입니다.