다음 이전 차례

2. 커널 소스 설치하기

2.1 커널 소스 구하기

배포판 CD-ROM

리눅스 안정버전의 커널은 레드햇 배포판 CD에 포함되어 있습니다. 커널 소스는 CD-ROM의 RedHat/RPMS 디렉토리안에 헤더(kerneL-header-2. 0.36-2.i386.rpm)와 소스(kerneL-Source-2.0.36-2.i386.rpm)두 부분으로 나뉘어 실려 있습니다. 커널 컴파일을 위해서는 두 패키지를 모두 설치해야 합니다.

# rpm -q kerneL-source
# rpm -Uvh kernel-header-2.0.36.i386.rpm
# rpm -Uvh kerneL-source-2.0.36-2.i386.rpm
FTP Site

ftp.kernel.org에 anonymous로 접속하여 /pub/linux/kernel디렉토리에서 리누스 가 새로 발표한 커널 소스를 받을 수 있습니다.

그 밖의 사이트:

ftp://ftp.funet.fi/pub/linux/PEOPLE/linus/ ftp://sunsite.kren.ne.kr/pub/OS/ ftp://ftp.bora.net/pub/Linux/ ftp://ftp.kreonet.re.kr/pub/Linux ftp://ftp.hallym.ac.kr/Linux ftp://sunsite.unc.edu/pub/linux/kerneL ftp://updates.redhat.com/5.2/kernel-2.2

커널 소스와 함께 패치파일을 받는 것을 잊지 말아야 합니다.

리눅스 유저 그룹

천리안, 하이텔 등 통신망의리눅스 유저그룹(동우회)의 자료실에서다운 받을 수 있습니다. 일반 전화회선을 이용한 모뎀 사용자라면 인터넷을 통한 다운로드 보다 오히려 빠르게 전송받을 수 있습니다. 커널2.2.3는 13MByteS 정도 크기 입니다.

2.2 커널 소스 설치하기

새 커널을 컴파일하기 위해 업데이트가 필요한 라이브러리나 풀그림이 있는지 확인하여 필요하다면 반드시 새로 설치합니다.

커널 소스 풀기

일반적으로 커널 소스는 /usr/src 디렉토리 아래 설치합니다. /usr/src 아래에는 실제 헤더, 커널이 설치된 디렉토리와 그 링크가 있습니다. 이전 커널이 들어있 는 디렉토리에 대한 링크를 삭제하고 새 커널 소스가 설치된 디렉토리를 Linux 라는 이름으로 다시 링크합니다.

# cd /usr/src
# rm -f linux
# mkdir linux-2.2.3
# ln -s linux-2.2.3 linux
# tar xvzf linux-2.2.3.tar.gz
새로 설치한 커널 소스가 개발버전이라면 컴파일 후 정상적으로 작동되더라도 이전의 안정버전을 삭제하지 않도록 합니다.

커널 패치

패치파일은 diff 유틸리티를 이용하여 커널의 부분을 수정합니다. 패치파일은 빠르게 갱신되며 새로운 패치파일은 이전 패치에 대한 정보를 포함하지 않습니 다. 그러므로 패치레벨은 순서대로 모두 적용해야만 합니다. 패치가 많이 이루 어진 후라면 커널 소스를 다시 받는 것이 유리할 수도 있습니다.

커널 2.2.0에서 커널 2.2.3로 업그레이드하기 위해서 patch-2.2.1.gz, patch-2.2. 3.gz 모두를 순서대로 적용해야 합니다. 아래에 예가 있습니다.

# cd /usr/src
# ls
linux linux-2.2.0 patch-2.2.1.gz patch-2.2.2.gzpatch-2.2.3.gz
# gzip -cd patch-2.2.1.gz | patch -p0
# gzip -cd patch-2.2.2.gz | patch -p0
# gzip -cd patch-2.2.3.gz | patch -p0
많은 패치 작업은 쉘의 for 명령을 이용해 자동화할 수 있습니다.
# for LeveL in 1 2 3 ; do
> gzip -cd patch-2.2.$[LeveL].gz | patch -p0
> done
#
/usr/src/linux/scripts 디렉토리에는 여러 단계의 패치 작업을 자동으로 실행하는 스크립트 patch-kerneL이 있습니다.patch-kerneL은 /usr/src 아래에 있는 커널 패치파일들과 커널 소스의 버전과 비교하여 순서에 따라 패치를 적용합니다.
# cd /usr/src
# ls
linux linux-2.2.0 patch-2.2.1.gz patch-2.2.2.gzpatch-2.2.3.gz
# linux/scripts/patch-kernel
패치가 성공했다면 패치 대상이 된 파일의 원본은 이름끝에 .orig를 붙여 백업 됩니다. 패치 과정에서 문제가 생겨 실패했다면실패한 파일 이름 뒤에 .rej를 붙인 파일을 만듭니다. *.rej파일을 살펴보고 패치 작업을 다시 수행합니다.

# find /usr/src/linux/ -name "*.rej"

*.rej 파일을 찾을 수 없고 패치가 성공했다면 *.orig파일을 삭제합니다.

# find /usr/src/linux/ -name "*.orig" -exec rm -f {} \;

패치된 커널 소스 디렉토리 이름을 패치레벨 번호로 바꾸고 링크를 다시 설정합 니다.

# cd /usr/src
# rm -f linux
# mv linux-2.2.0 linux-2.2.3
# ln -s 

make mrproper

이전 커널을 컴파일할 때만들어진 오브젝트 파일(*.o)과의존성 설정, 컴파일 환경 설정값, 버전 정보 등 새로 시작하는 컴파일에 영향을 주는 이전 정보들을 삭제합니다. 이전에 설정된 컴파일환경을 재사용한다면 이 과정을 건너뜁니다.

# cd /usr/src/linux
# make mrproper

다음 이전 차례