본문 바로가기

프로그램

Linux kernel2.6.6 업데이트

커널파일 다운로드
압축을 /usr/src에 풀어준다 // tar zxvf 파일이름.tar.gz , bz2의 경우는 tar jxf 파일이름.tar.bz2
아마도 /usr/src에 linux커널버전 이라는 디렉토리가 생기고 그안에 소스가 압축풀려져 있을 것임. (압축풀면서 자동으로 디렉토리 만들어주므로...)
그러니까 "/usr/src/linux커널버전"에 커널소스가 들어가게 됨.
make xconfig --> qt developement kit이 설치되어 있어야한다.
make clean 예전의 오브젝트 파일(*.o)을 삭제한다.
make dep --> warnning~~라는 문구가 나와도 에러는 아니니 무시한다.
make bzImage
mv arc/i386/boot/bzImage /boot/vmlinuz-커널버전
mv System.map /boot/System.map-커널버전
를 하면 일단은 커널 컴파일이 끝난다.

그리고 새 커널에 있는 새로운 모듈을 설치하려고 하면 (지금 쓰는 장치들에 문제가 없다면 안해도 무방함)
/usr/src/linux --> 새로받은 커널 소스를 압축풀어둔 곳... linux가 아니고 linux버전 이 될수도 있겠다...

make modules
make modules_install

그리고 멀티부트를 하기위해 grub를 사용하므로 /etc에 있는 grub.conf를 편집해줘야 한다.

=======================grub.conf=====================================================
title Hancom Linux (2.6.6)
root (hd1,0)
kernel /vmlinuz-2.6.6 --> 이부분을 생성한 이미지파일의 이름으로 바꿔줌. ro root=LABEL=/
initrd /initrd-2.6.6.img --> 이부분은...
title WindowsXP
rootnoverify (hd0,0)
chainloader +1
=====================================================================================

이부분은... ram Drive인가 하는 메모리에 가상드라이브를 띄워서 사용한다는... 정확한건 잘모르겠는데...암튼
다른 리눅스에서 지워도 되는 부분이라고 하지만 내가 해본 결과 안됨..
아무래도 한컴리눅스의 경우엔 부팅시 이 가상드라이브로 먼가 하는가 봄.

이건 어떻게 생성하느냐...
mkinitrd /boot/initrd-버전.img(아무거나 해도 상관은 없지만 grub.conf파일 편집할때 편함) 버전
예) mkinitrd /boot/initrd-2.6.6.img 2.6.6
이렇게 생성하는데

No dep file found for kernel 2.6.6

이라는 에러를 띄며 생성이 안되는 경우가 있다면 이것은
커널의 바이너리 파일과 모듈등이 저장되어있는 lib/modules/커널버전 디렉토리에
modules.dep이라는 의존성(윈도로 치자면 공유 라이브러리의 개념...)을 검사해서 참조할 수 있도록 하는 파일이 없기 때문이다.
이 파일을 생성하는 것은 다음과 같다

depmod 커널버전

그럼 lib/modules/커널버전 디렉토리에 modules.dep라는 파일이 생긴걸 확인 할 수 있다.
그런뒤 mkinitrd /boot/initrd-버전.img 버전
그런뒤 grub.conf파일을 위에 처럼 고쳐주고
부팅 하면 된단다..


===================추신===================
"mkinitrd /boot/initrd-2.6.6.img 2.6.6" 이나 "depmod 커널버전" 이라는 명령을 보면 뒤에 커널버전이라고 그냥 적은 것은
lib/modules/커널버전 를 뜻한다는 것을 알 수 있다.
심심풀이로 따라 해봐라 보람도 느끼고 자신감도 생겨서 나름대로 괜찮다. 안되면 반대겠지만 ㅡㅡ

그러고 혹 부팅과정에서 커널패닉에 빠져서 다운 되버린다면 grub의 운영체계 선택 화면에서 리눅스에 커서를 옮겨놓고
e를 눌러서 부팅정보를 수정하는 화면으로 들어가서
커서를 바꿀 문구로 옮기고 e를 누르면 편집을 할 수 있고
편집이 다되었으면 enter를 누르고 빠져나와 b를 눌러 수정한 부팅정보로 부팅 할 수 있게 된다.
이때 수정한 정보는 grub.conf에 저장되지 않는다.
예를 들어 커널을 잘못 컴파일해서 부팅시 커널패닉 되어 버린다면
grub화면에서
linux2.6.6 이걸 선택해 e 누르고
명령이 나오면 이동해서 e 누르고
kernel /vmlinuz-2.6.5-4hl --> 이부분을 예전에 사용하던 이미지파일의 이름으로 바꿔줌. ro root=LABEL=/
initrd /initrd-2.6.5-4hl.img --> 이부분 역시 예전 이름으로...
enter -> b
이렇게 예전의 커널로 부팅을 하고 올바른 커널컴파일을 하거나 에러를 수정하고 다시 부팅해주면 되겠다...

그리고 기존 커널이 2.4.X라면 2.6.x이상으로 커널업할때 다른 것도 같이 업해줘야 하는 것이 있는지 검토하고 업을 해주기 바란다.
그 목록은 http://kerneltrap.org/sup/799/Changes-2.6.0-test4


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

안돼기도 하더랍니다^^;;;;