My Story... : 위치로그 : 태그 : 방명록 : 관리자 : 새글쓰기
My Story... 블로그에 오신것을 환영해요^^
그냥..
26
33
269226
'리눅스'에 해당되는 글 1건
먼저 커널을 다운로드
이전 버전의 소스코드가 있을경우는 Patch 만 받아서 패치시켜 쓰면 된다.
지금 글을 쓰는 시점에서 최신 stable 은 2.6.33.1 이므로 이 버전을 사용.

$ cd /usr/src
$ sudo -i
[sudo] password for khunter:

# apt-get install kernel-packages
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.1.tar.bz2
# tar xvjf linux-2.6.33.1.tar.bz2
# ln -sf linux-2.6.33.1 linux
# cd linux

kernel-packages 는 설치되지 않은 경우만 설치.
우선 이것으로 커널 소스 준비는 끝났다.

# cp /boot/config-2.6.31-20-generic .config
# make oldconfig

우분투의 현재 커널에서 설정된 파일을 복사하여 우선 적용 시킨다.
중간중간에 질문 나오는 것에 맞춰서 변경해주면 되고 이후 바로 커널 패키지를 만들어도 된다.
다른 설정을 더 만지고 싶은 경우는
make menuconfig 또는 xconfig, gconfig 등을 이용한다.

이제 커널을 컴파일하면 되는데, 그냥 하면 마지막에 다음과 같은 에러가 나온다.

The UTS Release version in include/linux/version.h
     ""
does not match current version:
     "2.6.33.1"
Please correct this

이 문제는 utsrelease.h 의 파일이 이전과 다른곳으로 이동되어서 나타나는 문제로 다음과 같이 변경한다.

# make-kpkg debian
# gedit debian/ruleset/misc/version_vars.mk

에디터가 열리면 141번째 줄에서 다음을 찾는다.

UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \
                               echo include/linux/utsrelease.h; \
                           else \
                                echo include/linux/version.h ; \

이 부분을 다음과 같이 변경한다.

UTS_RELEASE_HEADER=$(call doit,if [ -f include/generated/utsrelease.h ]; then \
                               echo include/generated/utsrelease.h; \
                           else \
                                echo include/linux/version.h ; \

귀찮으면 include/generated/utsrelease.h 파일을 include/linux 에다 복사해버려도 된다.

이제 컴파일을 시작한다.

# make-kpkg --initrd kernel_image kernel_headers modules_image

커널 옵션과 컴의 성능에 따라 대략 30분에서 한시간 반정도 걸린다.
에러 없이 모두 끝나면 /usr/src 에 두개의 deb 파일이 생성된다.
이제 커널을 설치한다.

# cd ..
# dpkg -i *.deb

커널과 헤더가 모두 설치되고 grub 도 자동으로 갱신이 된다.
이제 재부팅을 해보면 grub 리스트에 2.6.33.1 이 나타난다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
03 19, 2010 11:52 03 19, 2010 11:52