우분투는 다른 배포판 리눅스와는 달리 패키지를 통해 커널 설치가 가능하다.
컴파일 한 후 deb 패키지로 만든 커널 패키지는
아래는 http://ubuntu.or.kr/viewtopic.php?f=9&t=4543 에 나온 커널 컴파일 방법을
그대로 본인의 VM(VMware 6.x)에서 시연한 것으로, 2.6.28-14-generic에서 2.6.30.4로 업데이트 했다.
미리 해야 할 일
컴파일 한 후 deb 패키지로 만든 커널 패키지는
- 커널의 설치/제거가 용이하고
- 배포가 가능하다.
아래는 http://ubuntu.or.kr/viewtopic.php?f=9&t=4543 에 나온 커널 컴파일 방법을
그대로 본인의 VM(VMware 6.x)에서 시연한 것으로, 2.6.28-14-generic에서 2.6.30.4로 업데이트 했다.
미리 해야 할 일
- 루트 계정의 패스워드 만들기
우분투는 처음 설치하면 루트 계정의 패스워드가 없는 상태다.
아래와 같이 명령을 넣어 루트 계정의 패스워드를 만들자.
$ sudo passwd root - 설치된 하드웨어와 리눅스 커널 버전 확인
의례적으로 하는 작업이다.
혹시나 하드웨어 설정이 잘못될 경우를 대비해 정보를 백업해놓자.
$ uname -r
$ lspci - 커널 컴파일에 필요한 보조 패키지 설치
개발용 리눅스라면 왠만한 패키지들을 설치되어 있을 것이다.
"이 정도 패키지들은 다 설치되어 있어!"라고 자부하시는 분은
커널 컴파일 진행 중에 패키지가 없다는 메시지가 나올 때 마다 설치해도 좋다.
$ sudo apt-get install build-essential bin86 kernel-package wget libncurses5 libncurses5-dev
커널 다운로드 (아래의 작업들 부터는 루트 권한으로 진행합시다.)
- 경로 설정
$ cd /usr/src - 커널 다운로드
$ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.4.tar.bz2 - 커널 압축 풀기
$ tar -xvjf linux-2.6.30.4.tar.bz2 - 심볼릭 링크
$ ln -s linux-2.6.30.4 linux
$ cd linux - 커널 패치
새 패치가 있을 때만 진행한다. *를 그대로 입력하는 사람은 없겠지.
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.30.*.bz2
$ bzcat patch-2.6.30.*.bz2 | patch -p1
커널 컴파일
- 커널의 예전 설정 가져오기
일일이 설정을 해주지 않아도 되는 매우 편리한 작업.
$ cp /boot/config-`uname -r` .config
$ make oldconfig
or
기본 커널 설정 파일을 생성해 처음부터 일일이 설정해주는 방법도 있다. 물론 비추.
$ make i386_defconfig or $ make x86_64_defconfig - 커널 설정 조정
가장 예민한 작업이면서도, 새 커널로 업데이트하는 가장 큰 이유이기도 하다.
앞의 과정에서 커널의 예전 설정을 그대로 사용하고,
아주 높은 버전으로 업데이트 하는게 아니라면 크게 손 대지 않아도 된다.
단, 커널해킹의 커널디버깅을 없애면 커널 용량을 많이 줄일 수 있다.
$ make menuconfig (터미널 상의 GUI)
or
$ make xconfig (GUI with X-Window, QT 패키지 필요) - 컴파일 및 deb 패키지 생성
필요하다면 컴파일 타겟에 kernel-headers와 linux_source도 추가한다.
컴파일이 진행되는 화면이 보이면 가슴이 두근두근 할 것이다.
시간이 매우 오래 걸리므로 수면을 취하거나, 독서를 하거나, 운동을 하고 오는게 바람직하다.
$ make-kpkg clean
$ make-kpkg --initrd --revision=386 kernel_image kernel_headers linux_source modules_image - 패키지 파일 확인
생성이 안됐으면 담배 한대 피우고 나서 커널 컴파일을 다루는 다른 정보를 찾는게 좋다.
usr/src/linux-image-2.6.30.4_394_i386.deb - 대망의 새 커널 설치
이 시점에서 VM을 백업해놓는게 좋다. 손가락 아파서 이 방법까지 적기는 싫다.
$ cd /usr/src
$ dpkg -i linux-image-2.6.30.4_394_i386.deb
몇 가지 작업을 하더니 패키지처럼 간단히 설치가 되었다! - 커널 버전 확인
재부팅을 해보자.
패키지로 설치하면 GRUB에 새 커널을 추가하는게 아니라 기존의 커널을 대체한다.
그러므로 부팅 중에 손댈 작업은 없다.
$ uname -r
새로운 버전이 보이는가? 성공이다! - 장치 드라이버 새로 설치
새 커널에서는 몇몇 장치 드라이버를 새로 설치해야한다.
패키지로 제공하는 드라이버를 사용할 수 없다고 하는데,
VMware용 드라이버는 커널 소스에 내장되어 모듈로 컴파일이 되었는지,
사운드카드 말고는 정상적으로 작동했다.
새 드라이버가 필요하신 분은 제조사 사이트에서 다운받아 사용받기를 권장한다.
주위에 도움이 되길 바라며...