■ 재컴파일 하는 이유는 원하는 버전의 커널을 사용하고, 필요한 기능만 설정하여 가벼운 커널을 만들수 있기 때문이다.
기존의 커널을 변경 , 수정하고 커널 프로그래밍을 하기위해서는 기본적으로 커널을 컴파일하고, 재컴파일된 커널을 시스템에
   적용하는 방법을 알아야 한다.
임베디드 시스템을 위한 커널을 호스트에서 만들고자 하는 경우에도 필요하다.

(1) 커널 다운로드
wget <웹주소경로>  명령으로 받을 수 있다
linux-x.y.z.tar.bz2       -->      bzip으로 압축된 파일
linux-x.y.z.tar.gz         -->      gzip으로 압축된 파일


(2) 압축풀기  [ /usr/src/kernel/ 안에 압축을 풀어라~]
---.tar.bz2     -->  #tar xvfj ---.tar.bz2  명령으로 압축을 푼다.
---.tar.gz       -->  #tar xvfz ---.tar.gz    명령으로 압축을 푼다.


(3) 컴파일과정  <Makefile>파일을 이용하여 진행한다.

다음의 make명령어를 사용한다.
======= KERNEL 2.4 virsion =======
#make mrproper                                              ==>커널의 설정값 초기화 [.config파일이 삭제됨]
#make menuconfig/config/xconfig          ==>커널을 설정 [.config파일이 생성됨]
#make dep                                                        ==>커널설정을 바탕으로 종속성을 검사
#make clean                                                     ==>컴파일 과정에서 생긴 오브젝트파일 삭제
#make bzImage                                               ==>실제 커널이미지를 만들기위한 컴파일 과정
#make modules                                               ==>모듈을 컴파일 하는과정  --> 처음 컴파일 시에만 한다
#make modules_install                                 ==>컴파일된 모듈들을 적절한 디렉토리(/lib/modules/'커널')내에 복사
cp arch/i386/boot/bzImage /boot/bzImage-2.4.32       ==>/boot 디렉토리로 커널 이미지 복사
vi /etc/grub.conf  파일 수정                       ==> GRUB의 환경설정파일 수정

           title     <커널 선택시 타이틀>
           root     (hd0,0)
           
kernel   /boot/vmlinuz-2.4.32-2-386 root=/dev/hda1 ro
           
initrc    /boot/initrd.img-2.4.32-2-386
           
savedefault
           
boot
           
#reboot



======= KERNEL 2.6 vrsion =======
#make mrproper
#make menuconfig/config/xconfig     2.6 버전에서는 #make dep와 #make clean 과정은 필요없다
#make bzImage
#make modules          2.6 버전에서는 #make bzImage 와 #make modules 를 make 명령어로 한번에 끝낼수 있다!
#make modules_install
cp arch/i386/boot/bzImage /boot/bzImage-2.6.14
vi /etc/grub.conf  파일 수정

           title     <커널 선택시 타이틀>
           root     (hd0,0)
           kernel   /boot/vmlinuz-2.6.14 root=/dev/hda1 ro
           
savedefault
           
boot
           
reboot


※ 출처 : http://idkkangjs.blog.me/30091117058

'L inux > Kernel' 카테고리의 다른 글

시스템 콜(System Call) - 2  (1) 2011.09.26
시스템 콜(System Call) - 1  (0) 2011.09.26
리눅스 부팅과정  (0) 2011.09.23
리눅스와 리눅스 커널  (0) 2011.09.21
리눅스 커널의 내부구조  (0) 2011.04.01
by 민트앤라떼 2011. 9. 26. 09:51