요즘 CentOS를 가지고 이것저것 만지고 있다. 그러다 보니 커널을 좀 건드려야 할 때가 있는데, 예전에는 무턱대고 kernel.org에서 소스가져다가 무대뽀 컴파일을 하곤 했었는데 source rpm을 이용해서 컴파일을 하니 하기도 편하고(사실 별로 할게 없음) 배포하기도 편한 것 같다…

또, 매번
http://wiki.centos.org/HowTos/Custom_Kernel?highlight=%28HowTos%29
를 참고해서 하자니…그 내용을 내 블로그에 남겨 놓는 것이 낳은거 같아서 이렇게 한다.

CentOS 4.4가 설치 되었다는 가정하에 하겠다…다른 버전도 별 문제가 없을 것이라 생각된다.


1. 먼저 yum을 이용해 개발 툴들을 설치한다. 일일이 설치 할 수도 있겠지만 yum groupinstll을 이용하자.

# yum groupinstall "Development Tools"


2. 내가 현재 사용하고 있는 커널이 어떤 것인지 확인하자

# uname -a


3. 현재 버전에 맞는 소스 rpm을 다운로드 받아서 설치하자. 현재 내가 사용하는 것은 아래와 같다.

#wget http://mirror.centos.org/centos-4/4/updates/SRPMS/kernel-2.6.9-42.0.3.EL.src.rpm
#rpm -iv kernel-2.6.~~~~~.rpm


4. 현재 커널의 아카이브를 설정하자. 아마 보통 i686 이나 x86_64정도의 값을 가지게 될 것이다.

#cd /usr/src/redhat/SPECS
#ln -s kernel-2.6.spec kernel.spec
#rpmbuild -bp –target=`uname -m` kernel.spec


5. 기존 패키지 커널 설정을 가지고 오자.

#cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
#cp /usr/src/redhat/SOURCES/kernel-2.6.9-i686-smp.config ./.config

6. 커널 설정을 바꾸자.

# make menuconfig


7.바꾼 설정을 기존의 패키지 설정으로 복사하자.

#cp ./.config /usr/src/redhat/SOURCES/kernel-2.6.9-i686-smp.config


9. rpm의 스펙을 수정한다.

#cd /usr/src/redhat/SPECS
#vi kernel.spec


10. release의 이름을 바꾼다.
%define release 42.0.3.EL
을 찾아서
%define release 42.0.3.irdeal  //irdeal은 원하는 것으로.
로 바꾼다.


11. 패치가 있으면 패치를 추가한다.

Patch40000: irdeal.patch
%patch40000 -p1
위의 두줄을 적당한 곳에 추가한다.. 적당한 곳이란 spec파일에서 Patch 와 %patch를 검색해 보면 알 수 있을 것이다


12. rpm을 만든다.
#rpmbuild -ba –target=`uname -m` kernel.spec


13. 만들어진 rpm을 확인하고 설치한다.
#cd /usr/src/redhat/RPMS/i686
#rpm -ivh kernel-smp-2.6.9-42.0.3.EL.irdeal.i686.rpm


13. 재부팅을 한다.

14. 잘안될 시에는 …. 이런 저런 삽질을 해본다..

아마 잘 될 것이다.

CentOS 커널 rpm 빌드하기

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다