Create TOC

2009년 5월 19일

Debian/Kernel 패키지 만들기

kernel을 컴파일해서 사용할 때, debian에서는 패키지*.deb 파일을 말한다.를 만드는 것을 권장한다.

사용자 권한 추가

$ sudo adduser user_id src

권한 추가 후 groups 명령을 통해서 확인한다.

소스 준비

소스 패키기 설치

$ apt-get install linux-source-x.y.z

소스 풀기

$ cd /usr/src
$ tar xvfj linux-source-x.y.z.tar.bz2

링크 생성

$ ln -s linux-source-x.y.z linux

커널 패키지 만들기

커널 설정

$ make menuconfig

또는

$ make-kpkg --config=menuconfig configure

빌드

$ make-kpkg clean
$ fakeroot make-kpkg debian
$ CONCURRENCY_LEVEL=2 fakeroot make-kpkg -append-to-version=.090519 --initrd binary-arch

  • --initrd 옵션은 커널 옵션 중 initrd support 가 켜져 있어야 한다.
  • CONCURRENCY_LEVEL=2make -j2 옵션을 주는 것과 동일하다. cpu * 2 정도의 수를 입력한다.(안줘도 상관은 없다)
  • -append-to-version은 내가 빌드한 커널에 버전 값을 추가할 때 사용한다.

자동으로 -append-to-version을 붙이기 위해서 아래와 같은 간단한 shell script를 사용하기도 한다.

#!/bin/sh

APPENDVERSION=.`date +%y%m%d`
cd /usr/src/linux
fakeroot make-kpkg debian
CONCURRENCY_LEVEL=6 fakeroot make-kpkg -append-to-version=$APPENDVERSION --initrd binary-arch

설치

Kernel 패키지 설치

빌드가 끝나면 /usr/src에 3개의 package가 생성된다.

  • linux-headers-x.y.z.090519_x.y.z.090519-10.00.Custom_i386.deb
  • linux-image-x.y.z.090519_x.y.z.090519-10.00.Custom_i386.deb
  • linux-image-x.y.z.090519-dbg_x.y.z.090519-10.00.Custom_i386.deb

만들어진 패키지를 아래 명령으로 설치한다.

$ sudo dpkg -i linux-headers-x.y.z.090519_x.y.z.090519-10.00.Custom_i386.deb
$ sudo dpkg -i linux-image-x.y.z.090519_x.y.z.090519-10.00.Custom_i386.deb

ramdisk 업데이트

--initrd 옵션을 사용했다면 아래 명령으로 ramdisk 이미지를 갱신한다.

$ sudo update-initramfs -c -t -k x.y.z.090519

드라이버 업데이트

nvidia, VirtualBox 드라이버 등을 사용했다면 방금 빌드한 커널을 위해서 드라이버 모듈을 다시 빌드한다.

$ sudo m-a -l x.y.z.090519 a-i nvidia
$ sudo m-a -l x.y.z.090519 a-i virtualbox-ose

부트 로더 수정

빌드한 커널 이미지는 /boot/vmlinuz-x.y.z.090519 에 생성된다. 부트 로더를 이에 맞게 수정해준다.GRUB를 사용한다면 update-grub명령만 실행하면 된다.

Reference