8.4. 새 커널 컴파일하기

왜 새 커널을 컴파일할까요? 데비안에 들어 있는 기본 커널에는 대부분의 경우에 동작하기 때문에 보통 다시 컴파일할 필요가 없습니다. 또, 데비안은 여러 가지 커널 꾸러미가 들어 있습니다. 그래서 하드웨어에 더 적합한 다른 커널 이미지 꾸러미가 있는 지 먼저 확인해 보는 게 좋습니다. 하지만 다음 이유때문에 커널을 컴파일하는 게 좋을 수도 있습니다:

8.4.1. 커널 이미지 관리

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

데비안 방식으로 커널을 컴파일하려면, 꾸러미가 몇개 필요합니다: fakeroot, kernel-package, kernel-source-2.4.27 (이 안내서를 쓰는 시점에서 가장 최근 버전) 및 기타 이미 설치되어 있을 꾸러미들. (완전한 목록은 /usr/share/doc/kernel-package/README.gz 파일을 참고하십시오.)

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

데비안 방식”으로 커널을 컴파일할 필요는 없습니다. 하지만 꾸러미 시스템을 통해 커널을 관리하는 게 더 안전하고 더 쉽습니다. 설령 kernel-source-2.4.27 꾸러미가 아니라 직접 리누스 토발즈가 배포하는 커널 소스를 이용한다고 해도 kernel-package 컴파일 방법을 계속 사용할 수 있습니다.

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

여기서부터는, 하드웨어에 대한 권한 없이 자기 홈 디렉토리에 커널 소스를 풀었다고 가정합니다[10]. 또 커널 버전이 2.4.27 버전이라고 가정합니다. 커널 소스를 풀려는 디렉토리에서, tar xjf /usr/src/kernel-source-2.4.27.tar.bz2 명령으로 커널 소스를 풀고, 새로 만들어진 kernel-source-2.4.27 디렉토리로 들어가십시오.

그리고 커널을 설정합니다. X11을 설치하고 실행중이라면 make xconfig를 실행합니다. 아니면 make menuconfig를 실행합니다. (menuconfiglibncurses5-dev 꾸러미를 설치해야 합니다.) 온라인 도움말을 읽어 보시면서 주의를 기울여 선택하십시오. 뭔가 의심스러운 게 있으면, 잘 모르더라도 해당 장치 드라이버(이더넷 카드, SCSI 컨트롤러 등 하드웨어 주변장치를 관리하는 소프트웨어)를 포함하는 편이 더 좋습니다. 주의하십시오: 특정 하드웨어와는 관계없는 옵션이고 그 옵션이 뭔지 잘 모르겠다면 기본값 그대로 놔 두십시오. “Loadable module support”에 있는 “Kernel module loader” 옵션을 꼭 선택하십시오. (기본값으로 선택이 안 되어 있습니다.) 이 옵션이 없으면, 데비안 시스템에 문제가 발생합니다.

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

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

컴파일이 끝나면 다른 꾸러미와 마찬가지로 직접 만든 커널을 설치합니다. 루트 권한으로 dpkg -i ../kernel-image-2.4.27-서브아키텍처_custom.1.0_alpha.deb 명령을 실행합니다. 서브아키텍처 부분은 커널 옵션을 어떻게 따라 달라지는 서브아키텍처 이름입니다. dpkg -i kernel-image... 명령은 커널 이미지를 설치하고, 다른 관련 파일 몇 개도 설치합니다. 예를 들어 System.map 파일을 설치하고 (커널 문제를 디버깅할 때 사용), /boot/config-2.4.27 (커널 설정이 들어 있음) 파일도 설치합니다. kernel-image-2.4.27 꾸러미를 설치하면 알아서 해당 플랫폼의 부트로더를 사용해 부팅 설정을 업데이트합니다. 그래서 부트로더를 직접 신경 쓰지 않아도 부팅할 수 있게 됩니다. 모듈 꾸러미를 만들었다면 (예를 들어 PCMCIA가 있다면), 그 꾸러미도 설치해야 합니다.

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

kernel-package에 대한 더 많은 정보는 /usr/share/doc/kernel-package 안의 문서를 읽어보십시오.



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