다음 이전 차례

35. 커널 컴파일

커널 컴파일 환경설정이 모두 끝났다면 컴파일을 시작하기 전에 청소과정을 먼저 거쳐야 합니다.

35.1 청소

# cd /usr/src/linux
# make dep
# make clean

make dep : 새 커널 만들기를 시작하는 명령입니다. 컴파일을 위한 의존성 관계를 설정합니다.

make clean : 이전에 수행했던 컴파일과정에서 생성된 오브젝트 파일(*.[oas]), 커널, 임시파일(.tmp*), 설정값(configure) 등을 삭제합니다.

다음과 같이 사용하기도 합니다:

make dep;make clean

35.2 커널 컴파일 명령

아래 명령으로 압축된 커널 이미지를 만듭니다. I를 대문자로 써야합니다:

# make bzImage

커널을 만드는 명령은 몇 가지가 있는데 그 가운데 위에서 소개한 명령이 가장 많이 쓰입니다. 커널 컴파일이 성공하면 /usr/src/linux/arch/i386/boot 디렉토리에서 커널 이미지 "bzImage"를 볼 수 있습니다.

아래는 압축된 커널을 만들기 위해 이전에 사용하던 명령입니다:

# make zImage

위 명령으로 컴파일했을 때 커널이 제한된 크기를 넘으면 "SyStem is too big"이라는 에러 메시지를 남기고 컴파일이 실패합니다. 잘 쓰이지 않는 기능은 모듈로 설정하고, 필요 없는 기능은 제거하여 커널 규모를 줄이고 다시 컴파일합니다. 새로운 방법은 make bzImage를 이용하는 것입니다.

zImage는 1/2MB보다 큰 커널을 지원하지 않지만 bzImage(big zImage)는 1MB보다 위에 직접 커널을 로드하기 위해 기능이 확장되어 커널 크기를 대략 2MB까지 허용합니다.

커널 컴파일이 성공했다면 /usr/src/linux/arch/i386/boot/디렉토리 아래 bzImage를 찾을 수 있습니다.

make zdisk

명령은 커널 이미지를 플로피 디스크에 만듭니다. 플로피 디스크로 새 커널을 테스트할 때 사용합니다. 커널 이미지를 만들고 lilo 까지 수행하는 "make zlilo" 명령도 있지만 몇 가지 문제점이 알려져 있어 권장할 방법은 아닙니다.

35.3 모듈 컴파일

모듈 컴파일을 시작하기 전에 이전 버전에서 설치한 모듈을 (커널 버전이 달라지지 않았다면) 이름을 바꾸어 두는 것이 좋습니다. 커널 버전이 다르다면 잠시 그냥 두었다가, 새 커널과 모듈이 제대로 동작하는 것을 확인하고 지웁니다.

# cd /usr/src/linux
# make modules
# make modules_install
# depmod -a 2.4.2

make modules : 커널 환경설정에서 모듈로 설정한 기능들을 컴파일합니다.

make modules_install : 컴파일 된 모듈을 /lib/modules 아래 설치합니다.

depmod : 모듈 사이의 의존성을 검사하여 /lib/modules 디렉토리 아래 modules.dep 파일을 만듭니다.


다음 이전 차례