[OS]/Embedded&Linux

커널 업그레이드 2.4 -> 2.6

하늘을닮은호수M 2006. 3. 3. 14:54
반응형

본 문서는 커널 2.4 버전에서 커널 2.6 버전 으로의 업그레이드 방법을 기술한 문서이다.

본 문서는 리눅스 배포판 레드헷 9.0에서 테스트를 해본 결과를 바탕으로 기술하였다.

테스트에서 사용한 커널은 2.6.11 버전을 사용했다.

----------------------------------------------------------------------

1. 첫번째 단계

---------------

우선 커널을 다운 받아야 한다.

커널 소스는 http://www.kernel.org 에 가면 각종 버전을 다 다운 받을수 있다. 이 테스트 에서는 커널 버전 2.6.11 을 사용하였다.

2. 두번째 단계

---------------

모듈을 올리기 위한 프로그램 2가지를 업데이트 하여야 한다.

1) module-init-tools-3.1.tar.gz

2) modutils-2.4.21-23.src.rpm

위의 프로그램은 아래의 사이트 에서 구할수 있다.

1) http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/

2) http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/old/

3. 세번째 단계

---------------

2번째 단계에서 다운받은 프로그램을 설치해야 한다.

우선 depmod 를 업그레이드 하기 위해 module-init-tools 을 설치한다.

$tar xvfz module-init-tools-3.1.tar.gz

$cd module-init-tools-3.1

$./configure -prefix=/sbin

$make

$make install

$./generate-modprobe.conf /etc/modprobe.conf

다음으로 Modutils-2.4.21-23.src.rpm 을 설치 하여야 한다. 여기서 rusty 그룹이 없다는 오류를 볼수 있을 것이다. 일단 무시하더라도 설치는 가능하다. 이 프로그램을 설치하지 않는다면 make modules_install 과정에서 오류가 난다.

$rpm -Uvh modutils-2.4.21-23.src.rpm

$rpmbuild -bb /usr/src/redhat/SPECS/modutils.spec

$rpm -Fi /usr/src/redhat/RPMS/i386/modutils-2.4.21-23.i386.rpm

이상으로 제일 중요한 프로그램 두가지는 설치 되었다.

4. 네번째 단계

---------------

새로운 커널 2.6 을 문제 없이 설치하기 위해 업그레이해야만 하는 몇몇 유틸리티들이 있다. 아래와 같은 최소 버전 요구사항을 따라서 설치 한다. 아래 유틸리티들의 RPM 버전은 http://fr.rmpfind.net/linux/RPM/index.html 에서 찾을수 있다. 알아두면 유용한 사이트다.

이름 최소 버전 버전 알아내기

------------------------------------------------------

Gnu C Compiler 2.95.3 gcc --version

Gnu Make 3.78 make --version

binutils 2.12 ld -v

util-linux 2.10o fdformat --version

module-init-tools 0.9.9 depmonit-tools/old/

다음 유틸리티들은 특정 파일 시스템에 관련된 유틸리티들 이다. ext2 나 ext3 를 사용중이라면 e2fsprogs 를 업데이트 하고 jfs 를 사용중이라면 jfsutils 를 업데이트 해야 한다.

이름 최소 버전 버전 알아내기

------------------------------------------------------

e2fsprogs 1.29 tune2fs

jfsutils 1.0.14 fsck.jfs -V

reiserfsprogs 3.6.3 reiserfsck -V 2>&1 | grep reiserfsprogs

xfsprogs 2.1.0 xfs_db -V

nfs-utils 1.0.5 showmount --version

다음 목록의 다른 유용한 유틸리티들도 필요에 따라 업데이트 해야 한다. 아래 목록은 확인해본 결과 대부분 최소버전보나 낮았으나 최신버전 연관성 문제로 설치가 잘 안되었다(RPM버전 기준). 그러나 없어도 설치하는데 문제점은 없었다.

이름 최소 버전 버전 알아내기

------------------------------------------------------

pcmcia-cs 3.1.21 cardmgr -V

quota-tools 3.09 quota -V

PPP 2.4.0 ppd --version

isdn4k-utils 3.1pre1 isdnctrl 2>&1 | grep version

oprofile 0.5.3 oprofiled --version

5. 다섯번째 단계

----------------

위에서 받은 커널 소스를 설치해야 한다. 위의 과정을 다 거쳤다면 준비는 일단 된 것이다. 대부분의 다른 문서들이 /usr/src/linux 는 에 설치하는 것을 권하지는 않는다. 이 문서에서도 /home 에 자기 계정으로 만들어진 디렉토리를 사용하는 방법으로 테스트를 진행했다. 자신의 계정에 만든 디렉토리를 사용하면 2.4 와 2.6버전을 선택해서 부팅 할수 있다. 또한 커널 컴파일 후 발생하는 문제점(커널 페닉 등)에 대처하기 쉬워 진다.

$gunzip linux-2.6.11ar.gz

tar -xvf linux-2.6.11ar

$cd linux-2.6.11

6. 여섯번째 단계

----------------

Config 파일의 생성 기본적으로 config 파일의 생성은 make oldconfig, make menuconfig, make xconfig 등 많은 방법이 존재 한다. 그러나 여기서는 oldconfig 만을 설명한다. oldconfig 는 이전의 커널의 config를 그대로 가져오기 때문에 잔 신경이 줄어드는 장점이 있다. 아래의 명령을 실행하여 .config 파일을 복사한다.

$cp /usr/src/linux-2.4/configs/kernel-2.4.20-i686.config /home/src/kernel/linux-2.6.11/.config

보통의 경우 자신의 설치본에 들어 있는 .config 를 이용할 경우 간편하고도 에러 없이 진행이 가능하다. 그렇지만 위의 복사본의 경우 설정을 어느정도는 자신에게 맞게 맞춰줘야 되는경우도 있다. 위와 같이 한후 .config 파일에서 CONFIG_EXT3_FS 를 y 로 하자 보통 m 으로 되어 있으며 이는 ext3 파일 시스템을 적재 하지 않고 모듈에만 올리게 된다. 부팅시에 에러를 발생시키며 여러가지 아일 시스템 관련 에러를 일으키게 된다.

7. 일곱번째 단계

----------------

위와 같이 했다면

$make oldconfig 로 config 파일을 수정한다.

물론 새로운 항목을 물어 오는데 여기서 추가하고 싶은 부분은 추가하고 아니면 디폴트로 놔두고 끝낸다.

*참고 : config 파일을 만들수 있는 방법은 여러가지가 있다. 위의 방법대로 $make oldconfig 로 하게 되면 새로운 항목 추가시 터미널 환경에서 추가해야 하기 때문에 알아보기도 힘들고 불편하다. 이럴때는 $make xconfig 를 이용해 보자. X윈도우 환경에서 쉽게 설정을 할수 있다.

자세한 설정의 내용은 다음사이트를 참고(일치하지 않는것들이 조금있으나 그래도 참고 할만하다.)

http://www.zdnet.co.kr/techupdate/lecture/os/0,39024998,39129174,00.htm

8. 여덟번째 단계

----------------

아래 명령을 순서대로 실행한다.

$make bzImage

$make modules

$make modules_install

$make install

2.6 커널 버전에서는 make dep 이 빠져 있으며 일일이 커널 이미지를 /boot 에 복사하는 수고로움이 사라졌다 단지 위와 같은 install 명령어를 내리는 것 하나만으로도 모든 복사본이 자동으로 설치 된다.

9. 아홉번째 단계

----------------

$mkinitrd /boot/initrd-2.6.11 2.6.11

부팅시 초기화 파일을 만들어 주는 부분이다. 위의 방법대로 $make oldconfig를 하게 되면 새로운 항목 추가시 터미널 환경에서 추가해야 하기 때문에 알아보기도 힘들고 불편하다. 이럴때는 $make xconfig 를 이용해 보자. X윈도우 환경에서 쉽게 설정을 할수 있다.

자세한 설정의 내용은 다음사이트를 참고(일치하지 않는것들이 조금있으나 그래도 참고 할만하다.)

http://www.zdnet.co.kr/techupdate/lecture/os/0,39024998,39129174,00.htm

10. 참고자료

-------------

http://www.zdnet.co.kr/techupdate/lecture/os/0,39024998,39129174,00.htm

반응형