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=2는 make -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