지금껏 정성스레 설정한 커널이 드디어 모습을 드러냅니다. 여러분의 목적에 따라 서버에서, 클라이언트에서, 혹은 네트워크 장비로 최적의 성능과 안정성으로 뛰어난 성능을 발휘할 것입니다.
커널 환경설정이 모두 끝났다면 컴파일을 시작하기 전에 이전에 생성된 오브젝트 파일 등을 지우는 청소과정을 먼저 거쳐야 합니다.
# cd /usr/src/linux
# make dep
# make clean
make dep : 새 커널 만들기를 시작하는 명령입니다. 컴파일을 위한 의존성 관계를 설정합니다.
make clean : 이전에 수행했던 컴파일과정에서 생성된 오브젝트 파일(*.[oas]), 커널, 임시파일(.tmp*), 설정값(configure) 등을 삭제합니다.
다음과 같이 붙여서 사용하기도 합니다. && 는 앞선 명령이 성공했을 때에만 뒤이은 명령을 실행하라는 뜻입니다:
# make dep && make clean
아래 명령으로 압축된 커널 이미지를 만듭니다. I(아이)를 대문자로 써야합니다:
# make bzImage
커널을 만드는 명령은 몇 가지가 있는데 그 가운데 위에서 소개한 make bzImage (big zImage)명령이 가장 많이 쓰입니다.
참고: 아래는 압축된 커널을 만들기 위해 이전에 사용하던 명령입니다:
# make zImage
make zImage 명령으로 컴파일했을 때 커널이 제한된 크기를 넘으면 "SyStem is too big"이라는 에러 메시지를 남기고 컴파일이 실패하게 됩니다. 이 경우 잘 쓰이지 않는 기능은 모듈로 설정하고, 필요 없는 기능은 제거하여 커널 규모를 줄이고 다시 컴파일해야합니다. 그러나 더 좋은 방법은 make bzImage를 이용하는 것입니다.
zImage는 1/2MB보다 큰 커널을 지원하지 않지만 bzImage(big zImage)는 1MB보다 위에 직접 커널을 로드하는 기능이 확장되어 커널 크기를 대략 2MB까지 허용합니다.
# make zdisk
명령은 커널 이미지를 플로피 디스크에 만듭니다. 플로피 디스크로 새 커널을 테스트할 때 사용합니다. 커널 이미지를 만들고 lilo 까지 수행하는 "make zlilo" 명령도 있지만 문제가 발생할 경우 부트조차 되지 않을 가능성이 있습니다.
모듈 컴파일을 시작하기 전에 이전 버전에서 설치한 모듈을 (커널 버전이 달라지지 않았다면) 이름을 바꾸어 두는 것이 좋습니다. 커널 버전이 다르다면 잠시 그냥 두었다가, 새 커널과 모듈이 제대로 동작하는 것을 확인하고 지웁니다.
# cd /usr/src/linux
# make modules
# make modules_install
make modules : 커널 환경설정에서 모듈로 설정한 기능들을 컴파일합니다.
make modules_install : 컴파일 된 모듈을 /lib/modules 아래 설치합니다.
depmod : 모듈 사이의 의존성을 검사하여 /lib/modules 디렉토리 아래 modules.dep 파일을 만듭니다.