관리 메뉴

드럼치는 프로그래머

[Linux] 리눅스 2.6 커널 컴파일 정리 본문

★─Programing/☆─Linux

[Linux] 리눅스 2.6 커널 컴파일 정리

드럼치는한동이 2007. 7. 31. 19:49

[네이버에서 펌.]


목적: 커널 2.6 컴파일 방법을 정리 해 둔다. 일단 여기 저기서 자료들을 스크립한다.


http://wiki.kldp.org/wiki.php/%B8%AE%B4%AA%BD%BA%C4%BF%B3%CE



일단 커널 2.6은 최신버전의 리눅스 배포판에서 해줘야 안정적으로 할 수 있습니다.


1. module-init-tools을 README에 나온것처럼 설치하면 됩니다.


2. 커널을 다운받고 /usr/src에 다운을 받고 압축을 해제합니다.


3. linux-2.6.6 디렉토리를 간단하게 링크를 겁니다.


]# ln -sf linux-2.6.6 linux-2.6


4. 이제 /usr/include로 이동을 합니다. 라이브러리들이 위치해 있습니다.


5. 여기서 3개의 링크를 걸어줍니다.


6. 기존에 있던 asm, linux디렉토리를


]# rm -rf asm/ linux/


7. 위와 같이 삭제해줍니다.  이제 링크를 걸어줍니다.


]# ln -sf /usr/src/linux-2.6/include/asm-i386 asm

]# ln -sf /usr/src/linux-2.6/include/linux linux

]# ln -sf /usr/src/linux-2.6/include/asm-generic asm-generic


8. 콘솔에서 커널 옵션을 선택하기 위해 다음과 같이 해줍니다.

]# make menuconfig (옵션선택은 알아서 해주시고요...)


9.자신의 시스템에 맞게 선택을 했다면 저장하고 나옵니다.

]# make bzImage (2.6.x에서는 굳이 make dep과 make clean을 하지 않아도 됨) ]

# make modules

]# make modules_install


10. 위와 같은 단계로 컴파일 하면 됩니다. 그리고 커널2.6에서는 커널을
컴파일 할때 알 수 없는 컴파일러의 메시지 대신 간단하게 무슨 파일을 처리하고
있는지만 표시합니다. 컴파일 화면이 한층 더 깔끔해 졌습니다.


11. 커널2.6 이미지 설치하기

대부분 인텔 머신을 사용할 것이므로 "arch/i386/boot에서 bzImage와
System.map파일을 적당한 이름으로 바꾸 어 "/boot/"등의 디렉토리로
복사하고 부트로더의 설정파일에 다음과 같이 설정하면 됩니다.

]# pwd

]# /usr/src/linux-2.6/

]# mv arch/i386/boot/bzImage /boot/bzImage/vmlinuz-2.6.5

]# mv System.map /boot/System.map-2.6.5

]# cd /boot

]# rm System.map

]# ln -sf vmlinuz-2.6.5 vmlinuz

]# in -sf System.map-2.6.5

System.map


/etc/grub.conf를 설정해 줍니다.


# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/hda2

# initrd /initrd-version.img

#boot=/dev/hda

default=1

timeout=3

splashimage=(hd0,0)/grub/splash.xpm.gz

title White Box Enterprise Linux (2.4.21-4.EL)

    root (hd0,0)

    kernel /vmlinuz-2.4.21-4.EL ro root=LABEL=/

    initrd /initrd-2.4.21-4.EL.img


title White Box Enterprise Linux (2.6.5) <----|

root (hd0,0)                                              |--추가부분

kernel /vmlinuz ro root=/dev/hda2      <----|


다시 부팅을 해봅시다.


이해가 안되면 쪽지주세요


또다른 방법

1. 커널 소스 파일을 /usr/src 에 받는다.


# cd /usr/src && wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.5.tar.bz2

(wget은 텍스트환경의 다운로드 클라이언트 입니다.. 설치가 되어 있다면 저렇게... -_-)


2. 압축을 푼다.


# tar xvjf linux-2.6.5.tar.bz2


3. 커널 옵션을 설정해 준다...


# cd linux-2.6.5

# make menuconfig


커널 컴파일중 가장 빡센 작업이고 초보자들에겐 가혹한 작업일... 옵션주기는.... 인터넷사이트를 검색해서 참고하거나  커널 옵션에 관해 나온 서적을 잘 참고 하시기 바랍니다...

옵션을 위해 자신의 하드웨어들에 대해 잘 알고 있어야 하고, 리눅스의 사용용도 또한 옵션들에 영향을 미칩니다...

여기 답글에 쓰기는 내용이 너무 많고..저도 자세히는 모르기 때문에 -_-;

옵션을 잘못 주면 컴팔일시 오류가 나거나 커널패닉으로 부팅이 안될수도 있습니다.

또한 옵션들도 서로 의존성이 어느정도 있어 어떤 옵션을 지정해 주기 위해선 다른 옵션이 체크되어 있어야 하는 경우 들이 있습니다...

(저도 처음 커널컴파일 하는데 옵션 주는데만 이틀 걸렸습니다... -_- 책이랑 사이트들 참고해가면서.. 옵션 주다가 밥먹고 옵션 주다가 자고 아침에 일어나서 또 하고 -_-;;;; 요즘에는 속성으로 한시간정도 -_-;;;; 그래도 아직 초보인듯..;;)

옵션을 모두 설정해준 후에는 자신의 옵션 config를 꼭 저장하여 다음에 커널을 수정하거나 업그레이드 할때 써먹길 바랍니다. 안 그러면 매번 삽질을.... (실력은 일취월장 할지도...;;)


참고 사이트는 http://www.kernel.pe.kr 을 참고 하시길.... 2.4.x 떄의 자료들이 많지만 대부분의 옵션들이 2.6.x 에도 그대로있는 경우가 많기때문에.... 옵션들에 대한 설명을 번역한것들을 잘 참고 하시길....

참고 서적은 ...잘 모르겠습니다... 요즘에는 책을 잘 안 봐서..;;


4. 커널을 컴파일 하여 이미지를 만들고 모듈을 설치합니다.


# make && make modules_install


(커널 2.6.x 대에서는 이전에 비해 설치 명령이 간소화 되었습니다...

운이 좋다면 첫 컴파일 부터 이상이 없이 이미지가 만들어 질수 있지만... 잘못하면 에러가 나면서 컴파일이 안됩니다. -_-  커널 컴파일 하는데 필요한 몇가지 어플들이 설치가 안 되어 있을수가 있는데 ... 그 어플들은 제가 예전에 질답 게시판에 적은거 같네요...검색 해보시길....)


5. 모듈을 위해 커널 소스 디렉토리를 /usr/src/linux 로 링크시켜줍니다.


# ln -sf /usr/src/linux-2.6.5 /usr/src/linux


(이 순서는 좀 바껴도 됩니다 -_-;; )


6. 2.6.x 커널의 모듈을 위해서는 반드시 module-init-tools 라는 패키지를 설치

해야 에러 없이 부팅됩니다.... (제가 이거 한지 오래되서 가물가물한데 커널 컴팔 하기 전에 설치해야 되는지도 모르겠습니다 -_-;;;; 확인 못해봐서 죄송.)

레드햇에는 이 패키지가 어떻게 되어 있는지 모르겠군요... 씨디에 있나?.. -_-; 검색해서 구하시길...


7. 이미지를 /boot 로 복사하고 부트로더에서 새 커널 이미지를 위한 메뉴를 만듭니다.


# cp /usr/src/linux-2.6.5/arch/i386/boot/bzImage /boot


bzImage 의 I 는 대문자입니다..(주의)

이 전의 커널 이미지는 새 커널이 성공되기 전까지는 이름을 바꿔놓는 식으로 반드시 보존해두시기 바랍니다...


Lilo 나 Grub 설정 파일을 에디트 하여 새 커널을 위한 메뉴를 만듭니다.....

(새 커널이미지가 패닉날 경우를 대비해서.. 이전 메뉴도 당분간은 유지 하시길...)

...이건 또 설명 해야 하나요? -_-;;;;;  Lilo 나 Grub 관련 문서나 서적을 참고 하시길...



8. ....리붓해서 새 커널이미지가 성공적으로 부팅되면...만세!!... 아니면 대략 낭패.. -_-


ps. nvidia 그래픽 카드 드라이버는.  2.6.x 커널로 부팅 한후 설치 하되... 1.0.4496 버전이 비교적 안정적인 걸로 알려져 있습니다...


※ 급조한 글인데 문제가 있거나 잘못된 부분들은 태클해주세요.. 환영합니다. =)



간단한 설명.


1.커널 소스 풀기

cp /temp/linux-2.6.15.2.tar.gz /usr/src

cd /usr/src

rm -f linux

tar xvzf linux-2.6.15.2.tar.gz

2.커널 설정하기

환경에 따라 make config (문답식으로 묻기), make menuconfig (curse library 사용), make xconfig (X Window), make qconfig (QT 대신 GTK+사용)등의 명령을 사용할 수 있습니다.


저장된 커널옵션 설정이 있다면 make oldconfig를 저장된 파일이 없다면 make menuconfig를 추천합니다. 예전에 저장된 옵션파일을 /usr/src/linux에 복사를 하시고 make oldconfig를 실행합니다.

3.현재 커널의 모듈을 새로 설정하기 위해서는 현재의 커널 모듈을 지우고 다시 컴파일을 합니다.

make modules
maek modules_install

Comments