왜 커널을 새로 컴파일할까요? 데비안에 들어 있는 기본 커널은 대부분의 상황에서 동작하기 때문에 보통 다시 컴파일할 필요가 없습니다. 또 데비안에는 여러 가지 커널 패키지가 들어 있습니다. 그래서 하드웨어에 더 적합한 다른 커널 이미지 패키지가 있는 지 먼저 확인해 보는 게 좋습니다. 하지만 다음 이유때문에 커널을 컴파일하는 게 좋을 수도 있습니다:
특별한 하드웨어가 필요할 때, 혹은 기존 커널에서 하드웨어 충돌이 발생할 때
기본 커널에서 지원하지 않는 커널 옵션 사용 (예를 들어 큰 메모리 지원)
필요없는 드라이버를 지우는 식으로 커널을 최적화해 부팅 시간 빠르게 하기
모듈 여러 개로 구성된 커널 대신에 이미지 하나로 된 커널 만들기
새로 업데이트된 커널이나 개발 버전 커널 사용
리눅스 커널 공부하기
커널 컴파일을 꺼려하지 마십시오. 재미있는 일이고 그만큼 좋은 점이 있습니다.
데비안 방식으로 커널을 컴파일하려면, 패키지가 몇개 필요합니다: fakeroot
, kernel-package
, linux-source-2.6
및 기타 (아마도 이미 설치되어 있을) 패키지. (완전한 목록은 /usr/share/doc/kernel-package/README.gz
파일을 참고하십시오.)
이 방법을 이용해 커널 소스에서 .deb 패키지 파일을 만들고, 커널에 들어 있지 않은 모듈이 있으면 그 모듈의 .deb 파일도 커널에 맞춰서 만듭니다. 이 방법이 커널 이미지를 관리하는 더 좋은 방법입니다. /boot
안에 커널, System.map 및 빌드할 때 사용한 커널 설정 파일이 들어갑니다.
“데비안 방식”으로 커널을 컴파일할 필요는 없습니다. 하지만 패키지 시스템을 통해 커널을 관리하는 게 더 안전하고 더 쉽습니다. linux-source-2.6
패키지가 아니라 직접 리누스 토발즈가 배포하는 커널 소스를 이용한다고 해도 kernel-package
컴파일 방법을 계속 사용할 수 있습니다.
/usr/share/doc/kernel-package
안에 kernel-package
를 사용하는 방법에 대한 문서가 있습니다. 여기에서는 간단히 어떤 단계를 거쳐야 하는지만 설명합니다.
여기서부터는, 루트 권한 없이 자기 홈 디렉토리에 커널 소스를 풀었다고 가정합니다[19]. 또 커널 버전이 2.6.26 버전이라고 가정합니다. 커널 소스를 풀려는 디렉토리에서, tar xjf /usr/src/linux-source-2.6.26.tar.bz2
명령으로 커널 소스를 풀고, 새로 만들어진 linux-source-2.6.26
디렉토리로 들어가십시오.
그리고 커널을 설정합니다. X11을 설치했고 X11이 돌아가는 중이라면 make xconfig
를 실행합니다. 아니면 make menuconfig
를 실행합니다. (menuconfig
는 libncurses5-dev
패키지를 설치해야 합니다.) 온라인 도움말을 읽어 보시면서 주의를 기울여 옵션을 선택하십시오. 뭔가 의심스러운 게 있으면, 잘 모르더라도 해당 장치 드라이버(이더넷 카드, SCSI 컨트롤러 등 하드웨어 주변장치를 관리하는 소프트웨어)를 포함하는 편이 더 좋습니다. 주의하십시오: 특정 하드웨어와는 관계없는 옵션이면서 그 옵션이 뭔지 잘 모르겠다면 기본값 그대로 놔 두십시오. “Loadable module support”에 있는 “Kernel module loader” 옵션을 꼭 선택하십시오. (기본값으로 선택이 안 되어 있습니다.) 이 옵션이 없으면, 데비안 시스템에 문제가 발생합니다.
소스 트리에 필요없는 파일을 지워서 kernel-package
파라미터를 초기화하십시오. make-kpkg clean
명령을 실행합니다.
이제 커널을 컴파일합니다: fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image
명령을 실행합니다. 버전 번호 “1.0”은 마음대로 바꿀 수 있습니다. 이 번호는 커널 빌드를 파악하려고 사용하는 버전 번호일 뿐입니다. 마찬가지로 “custom” 대신에 어떤 단어라도 (예를 들어 호스트 이름) 넣을 수 있습니다. 컴퓨터 속도에 따라 커널을 컴파일하는 데 좀 오래 걸릴 수도 있습니다.
일단 컴파일이 끝나면 다른 패키지와 같은 방법으로 직접 만든 커널을 설치할 수 있습니다. 루트 권한으로 dpkg -i ../linux-image-2.6.26-
명령을 실행하십시오. 서브아키텍처
_custom.1.0_powerpc.deb서브아키텍처
부분은 커널 옵션에 따라 달라지는 서브아키텍처 이름입니다. dpkg -i
을 실행하면 커널 및 커널과 같이 사용하는 보조 파일을 설치합니다. 커널 문제를 해결하는데 도움이 되는 System.map
파일이라든지 설정 사항을 담은 /boot/config-2.6.26
등의 파일을 설치합니다. 커널 패키지는 부트로더를 자동으로 업데이트해서 새로 설치한 커널을 사용하도록 설정하기도 합니다. 모듈 패키지를 만들었다면 그 패키지도 설치해야 합니다.
이제 시스템을 다시 시작합니다. 위에서 발생한 메세지를 잘 읽어보시고, shutdown -r now
명령을 실행하십시오.
데비안 커널과 커널 컴파일에 대한 더 많은 정보는 데비안 리눅스 커널 핸드북을 보십시오. kernel-package
에 대한 더 많은 정보는 /usr/share/doc/kernel-package
안에 들어 있는 문서를 읽어보십시오.