다음 이전 차례

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.2.14.i386.rpm
# rpm -Uvh kerneL-source-2.2.14.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/

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

리눅스 유저 그룹

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

2.2 커널 소스 설치하기

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

커널 소스 풀기

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

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

커널 패치

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

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

# cd /usr/src
# ls
linux linux-2.2.9 patch-2.2.10.gz patch-2.2.11.gzpatch-2.2.12.gz
# gzip -cd patch-2.2.10.gz | patch -p0
# gzip -cd patch-2.2.11.gz | patch -p0
# gzip -cd patch-2.2.12.gz | patch -p0
많은 패치 작업은 셸의 for 명령을 이용해 자동화할 수 있습니다.
# for LeveL in 10 11 12 ; 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.9 patch-2.2.10.gz patch-2.2.11.gzpatch-2.2.12.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.9 linux-2.2.12
# ln -s 

한글 패치하기

자신의 리눅스 박스가 M$ 윈도우와 함께 설치되었고, FAT(또는 NTFS) 파일시스템을 읽어야 한다면 한글 패치를 해야 합니다. 그러나, 리눅스만 설치된 시스템에서는 패치할 필요가 없습니다. 아래 윤희철님 홈페이지에서 구할 수 있습니다.

http://sparcs.kaist.ac.kr/ gangster/NTFS_FAT32/

make mrproper

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

# cd /usr/src/linux
# make mrproper

다음 이전 차례