요즘 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 빌드하기