===============================================================

리눅스 커널 컴파일 설치기 linux-2.6.18

11.03.2006. written by zezepurr

===============================================================

 

1. 설치전 간단한 리눅스 하드웨어 정보 알아보기

 

커널 컴파일하기전 커널 설정 모드에서 기본 하드웨어 정보는 알고 있어야 한다.

 

▶ CPU 정보

[root@sejong /]# cat /proc/cpuinfo | more

 

▶ 메모리 정보

[root@sejong /]# cat /proc/meminfo | more

 

▶ PCI 정보

[root@sejong /]# cat /proc/pci | more

 

▶ SCSI 정보

[root@sejong /]# cat /proc/scsi/scsi | more

 

▶  디스크 용량 정보

[root@sejong /]# df -h

 

▶ 운영체재 정보(현재 사용중인 커널 버전 확인)

[root@sejong /]# uname -a

 

 

2. 일반적인 커널 컴파일 작업 준비

 

일반적으로 커널 컴파일 작업을 하는 /usr/src/ 디렉토리로 이동한다.

 

[root@sejong /]# cd /usr/src

[root@sejong src] pwd

/usr/src/

 

이제 최선버전의 커널을 다운로드 받는다.

http://www.kernel.org 에 가보면 최선 버전의 커널을 확인할 수 있다.

 

[root@sejong src]# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.gz

[root@sejong src]# tar -xvzf linux-2.6.18.tar.gz

 

전에 리눅스 컴파일을 하였다면 이전 버전의 커널 디렉토리들이 존재한다.

linux 라는 폴더가 있다면 들어가서 vi Makefile을 통해 커널 버전을 확인하여

현재 사용중인 커널 버전과 동일한지 여부를 파악한다. (linux 디렉토리가 없는 경우도 있다.)

 

============== Makefile ===============

VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 18      

#이와 같은 경우 커널버전은 2.4.18 이다.

======================================

 

동일하다면 현재 linux 커널 디렉토리이므로 일단 현재 버전으로 이름을 변경한다.

[root@sejong src]# mv linux linux-2.4.18

 

이전 시스템 개발도구들이 /usr/src/linux에서 특정 파일을 찾을수도 있으므로

심벌릭 링크를 사용하여 앞으로 사용하게될 최신버전의 디렉토리를 가리키도록 한다.

[root@sejong src]# ln -s linux-2.6.18 linux

 

이제 커널 컴파일 준비 과정은 끝났다.

 

 

3. 커널 컴파일 옵션 설정

 

커널을 만들려면 두가지 단계가 필요한데, 바로 설정과 컴파일이다.

커널을 만드는 첫번째 단계는 커널이 제공할 기능을 설정해야하는데

가장 신중해야 하며 시스템 하드웨어에 맞는 설정을 해주지 않하면

리눅스가 Panic 상태에 빠지기도 하므로 하드웨어적인 지식도 필요하다.

 

커널 옵션 설정을 하기 위해선 기본적으로 깔려 있어야할 프로그램이 있다.

다음과 같은 프로그램이 없다면 설정 프로그램을 시작시에 Error를 출력할 것이다.

 

▶ gcc

다운받기

ftp://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2

[root@sejong ~]# tar -xvjf gcc-4.1.1.tar.bz2

[root@sejong gcc-4.1.1]# make

[root@sejong gcc-4.1.1]# make install

 

▶ ncurses

다운받기

ftp://ftp.gnu.org/gnu/ncurses/ncurses.tar.gz

다운받아서.. 다음과 같이 설치해준다.

[root@sejong ~]# tar -xvzf ncurses.tar.bz2

[root@sejong ncurses]# make

[root@sejong ncurses]# make install

 

▶ module-init-tools

다운받기

http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.2.tar.gz

다운받아서.. 다음과 같이 설치해준다.

[root@sejong ~]# tar -xvzf module-init-tools-3.2

[root@sejong module-init-tools-3.2]# make

[root@sejong module-init-tools-3.2]# make install

 

커널 옵션 설정은 3가지 방법이 있는데 가장 많이 쓰는 menuconfig를 실행하자.

 

[root@sejong linux-2.6.18]# make menuconfig

 

make menuconfig를 실행하게되면 여러가지 옵션 설정이 나오게 되는데..

수많은 옵션설정들이 있는 관계로 옵션에 대한 내용은 타 사이트 링크를 해 놓겠음.

http://kldp.org/KoreanDoc/html/Kernel-KLDP/setup.html

 

설정을 마치게 되면 설정된 내용들을 저장한 .config 파일이 생성되어

make 명령어로 컴파일 할 때 참조가 된다.

 

 

4. 커널 이미지파일 생성하기

 

[root@sejong linux-2.6.18]# make dep

먼저 소스간의 의존성 검사후 의존성에 대한 설정을 수행합니다.

 

[root@sejong linux-2.6.18]# make clean

기존 컴파일 수행시 생성되었던 오브젝트 파일 등을 삭제합니다.

 

[root@sejong linux-2.6.18]# make bzImage

커널 이미지를 생성합니다. 성공적으로 수행되면 /usr/src/linux/arch/i386/boot 디렉토리에

bzImage 라는 파일이 생성되는데 이것이 바로 커널이미지 입니다.

이 커널이미지를 /boot 디렉토리에 복사되어(나중에 make install을 통해 복사된다.)

리눅스 로더설정 파일(/boot/grub/grub.conf)에서 부팅할 수 있도록 설정된다.

 

 

5. 모듈 컴파일하기

 

커널컴파일 옵션 설정단계에서 커널모듈(M)으로 선택하였던 기능들에 대한 모듈파일 생성작업을

하게 됩니다. 이 작업은 가장 오래 걸리므로.. 밖에 다녀오세요.

[root@sejong linux-2.6.18]# make modules

 

컴파일 후에 생성되는 모듈파일들은 목적파일의 형태로서 make moduels_install을 통해

/lib/modules/커널버전/kernel 디렉토리로 복사가 된다.

 

[root@sejong linux-2.6.18]# make modules_install

이렇게 생성된 파일들은 필요시에 메모리에 적재되어 사용된다.

 

이제 모듈이 설치된 디렉토리로 이동하여 보자.

[root@sejong linux-2.6.18]# cd /lib/modules/2.6.18

 

모듈관련 명령어인 depmod를 통해 커널과 모듈간의 의존성을 같도록하며 modules.dep 파일을

생성한다.

[root@sejong 2.6.18]# depmod -a

 

 

6. 커널이미지파일 및 관련 파일 복사와 grub.conf 설정

 

[root@sejong linux-2.6.18]# make install

 

make install을 하게 되면 자동으로 bzImage 파을을 /boot 디렉토리로 복사하고

grub.conf에 새 커널로 부팅을 할 수 있게 해준다.

 

여기까지 모두 마쳤으면 리부팅~

[root@sejong linux-2.6.18]# reboot


+ Recent posts