참고 :
http://www.thegeekstuff.com/2013/06/compile-linux-kernel/
http://mintnlatte.tistory.com/314
1. 우분투 - 커널 deb 패키지 만들어 설치하기
커널을 그냥 컴파일하여 설치하는 방식이 아닌 패키지를 만들어 설치하는 방법으로 커널 패키지를 생성시키면 여러대의 우분투의 커널을 업그레이드하고 싶을 때 따로따로 컴파일 필요없이 패키지를 만들어 쉽게 설치할 수 있다.
하지만 이 방법은 컴파일에 꽤 오랜시간이 걸린다.
1.1 필요 패키지 설치
$ sudo apt-get install build-essential libncurses5-dev bin86 kernel-package
1.2 커널 소스 다운로드
$ sudo apt-get install linux-source # 현재 설치된 버전의 커널 소스를 다운받는다.
혹은
https://www.kernel.org/ 사이트에서 원하는 커널 버전을 다운로드한다.
예를 들어
$ sudo wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.tar.xz
받은 커널 파일은 압출을 푼다.
$ sudo tar linux-3.10.tar.xz
커널 소스는 /usr/src 에 위치시키는 것이 좋다.
1.3 컴파일 설정 파일 가져오기
모든 설정을 하기는 힘들다. 따라서 이미 설치된 커널의 설정파일을 가져다가 쓴다.
/boot 폴더에 config 로 시작하는 파일이 커널 설정 파일이며 이를 커널 소스 디렉토리에 넣는다.
$ sudo cp /boot/config-`uname -r` /usr/src/linux-3.x.x/.config
커널 소스 디렉토리에서 아래의 명령을 수행하고 load 를 선택하고 .config 를 선택하여 설정파일을 로드한다.
$ sudo make menuconfig
혹은
$ sudo make oldconfig
oldconfig 는 현재 설치된 커널 버전의 설정 파일을 자동으로 가져온다. 위의 sudo cp 명령을 자동으로 해준다고 생각하면된다.
1.4 컴파일 설정 바꾸기
$ sudo make menuconfig
혹은
$ sudo vi .config
를 통해 설치할 모듈을 선택한다.
(따로 포함시킬 모듈이 없다면 설정은 굳이 바꾸지 않아도 된다.)
1.5 커널을 컴파일하고 패키지화 한다.
$ sudo make-kpkg clean
$ sudo make-kpkg --initrd kernel_image kernel_headers kernel_source modules_image
make-kpkg 시 target 리스트는 $ sudo make-kpkg --target 명령을 수행하면 리스트가 출력된다.
1.6 커널 패키지 설치
커널이 정상적으로 컴파일 되면 linux-xxxxx.deb , linux-headers-xxxxx.deb 가 생성되고 이 패키지를 설치하면 커널이 업그레이드된다.
$ sudo dpkg -i *.deb
$ sudo reboot
2. 일반적인 커널 컴파일
1.1 커널 소스 다운로드
$ sudo apt-get install linux-source # 현재 설치된 버전의 커널 소스를 다운받는다.
혹은
https://www.kernel.org/ 사이트에서 원하는 커널 버전을 다운로드한다.
예를 들어
$ sudo wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.tar.xz
받은 커널 파일은 압출을 푼다.
$ sudo tar linux-3.10.tar.xz
커널 소스는 /usr/src 에 위치시키는 것이 좋다.
1.2 컴파일 설정 파일 가져오기
모든 설정을 하기는 힘들다. 따라서 이미 설치된 커널의 설정파일을 가져다가 쓴다.
/boot 폴더에 config 로 시작하는 파일이 커널 설정 파일이며 이를 커널 소스 디렉토리에 넣는다.
$ sudo cp /boot/config-`uname -r` /usr/src/linux-3.x.x/.config
커널 소스 디렉토리에서 아래의 명령을 수행하고 load 를 선택하고 .config 를 선택하여 설정파일을 로드한다.
$ sudo make menuconfig
혹은
$ sudo make oldconfig
oldconfig 는 현재 설치된 커널 버전의 설정 파일을 자동으로 가져온다. 위의 sudo cp 명령을 자동으로 해준다고 생각하면된다.
1.3 컴파일 설정 바꾸기
$ sudo make menuconfig
혹은
$ sudo vi .config
를 통해 설치할 모듈을 선택한다.
(따로 포함시킬 모듈이 없다면 설정은 굳이 바꾸지 않아도 된다.)
1.4 커널 컴파일 하기
$ sudo make
#컴파일 속도를 향상시키기 위해서 sudo make -j8 옵션을 주면 된다. -j 옵션은 주어진 개수만큼 동시에 빌드를 수행한다.
자세한 정보는 위 참조를 확인하라.
$ sudo make modules
$ sudo make modules_install
$ sudo make install
sudo make install 시 vmlinuz-x.x.x , System.map-x.x.x , initrd.img-x.x.x , config-x.x.x 파일이 /boot 에 복사되면 grub.cfg 파일이 자동으로 갱신된다. 따라서 grub.cfg 를 수동으로 수정하지 않아도 된다.
$ sudo reboot
3. 우분투 커널을 패키지로 쉽게 설치하기
# ubuntu kernel 을 패키지로 설치하는 방법도 있다.
http://kernel.ubuntu.com/~kernel-ppa/mainline/ 여기가서 원하는 커널 버전을 받는다.
linux-header-..._all.deb
linux-headers-..._i386(amd64).deb
linux-image-..._i386(amd64).deb
32bit면 i386, 64bit면 amd 64 받으면 된다. 위의 3개의 패키지를 다 받아야 한다.
$ sudo dpkg -i linux-header-..._all.deb
$ sudo dpkg -i linux-headers-..._amd64.deb
$ sudo dpkg -i linux-image-..._amd64.dev
3개의 패키지를 다 설치한다. 귀찮으면 sudo dpkg -i linux*
설치후 재부팅한다.
$ sudo reboot
재부팅후 kernel 버전 확인 한다.
$ uname -a
'학습자료(~2017) > 리눅스' 카테고리의 다른 글
ubuntu release upgrade 우분투 릴리즈 업그레이드 (0) | 2013.11.19 |
---|---|
커널 특정 모듈만 컴파일 (1) | 2013.11.19 |
[linux] apt-get 저장소를 추가/변경 해보자 (0) | 2013.11.05 |
[linux] memory cache 초기화 (0) | 2013.10.15 |
[Linux] NTP local time server 설정 (0) | 2013.09.25 |