왜 새 커널을 컴파일할까요? 데비안에 들어 있는 기본 커널에는 대부분의 경우에 동작하기 때문에 보통 다시 컴파일할 필요가 없습니다. 또, 데비안은 여러 가지 커널 꾸러미가 들어 있습니다. 그래서 하드웨어에 더 적합한 다른 커널 이미지 꾸러미가 있는 지 먼저 확인해 보는 게 좋습니다. 하지만 다음 이유때문에 커널을 컴파일하는 게 좋을 수도 있습니다:
특별한 하드웨어가 필요할 때, 혹은 기존 커널에서 하드웨어 충돌이 발생할 때
기본 커널에서 지원하지 않는 커널 옵션 사용 (예를 들어 큰 메모리 지원)
필요없는 드라이버를 지워 커널을 최적화해 부팅 시간을 빠르게 하기
모듈 여러 개로 구성된 커널 대신에 이미지 하나로 된 커널 만들기
새로 업데이트된 커널이나 개발버전 커널 사용
리눅스 커널 공부하기
커널 컴파일을 꺼려하지 마십시오. 재미있는 일이고 그만큼 좋은 점이 있습니다.
데비안 방식으로 커널을 컴파일하려면, 꾸러미가 몇개 필요합니다: 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
를 실행합니다. (menuconfig
는 libncurses5-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
안의 문서를 읽어보십시오.