You cannot see this page without javascript.

Custom Kernel 컴파일링 & 설치하기

Linux 조회 수 468 추천 수 0 2014.08.06 10:10:14
얼마전에 우리는 우분투 사이트에서 커널을 다운받아서 업그레이드를 해봤습니다.
http://bagjunggyu.blogspot.kr/2013/11/linux-kernel-nvidia.html
참 간단하고 쉽게 업그레이드 할 수 있었습니다.

오늘은 커널을 직접 컴파일 해서 설치하는 과정을 살펴 보겠습니다.
일반적으로 배포되는 리눅스 OS들의 커널은 generic 입니다.
대개의 컴퓨터에 이용 가능한 버전들이죠.

오늘 우리가 해볼 것은 우리집 컴퓨터에 맞게 커널을 만들어서 설치하는 것입니다.
커널에 관한 설명은 정말 설명이 잘 되어 있는 글이 있습니다.
꼭 읽어보시길 바랍니다. 
http://www.linux.org/threads/%EF%BB%BFthe-linux-kernel-introduction.4203/
위의 글의 내용중에 커널에 대한 설명을 조금 번역해봤습니다.

"커널이란 운영체제의 핵심입니다. 
운영체제란 하드웨어를 관리하고, 컴퓨터에서 어플리케이션들을 사용할수 있게 해주는 모든 프로그램들의 집합입니다. 
커널이 하드웨어와 어플리케이션을 조종합니다. 
어플리케이션들은 하드웨어와 직접소통하지는 못하고, 대신 커널에 신호를 보냅니다. 
요약하면, 소프트웨어가 커널에 신호를 보내면 커널이 하드웨어를 작동하는 겁니다. 
커널이 없다면, 컴퓨터는 사용할수 없는 물건입니다."

우선 방법은 일반적인 방식인 make 와 make install 을 이용해서 컴파일 하고 설치하는 방식과

deb 패키지를 만들어서 설치하고 지우는 방법들에 관해서 총괄적으로 살펴 보겠습니다.
linux Mint 13 Maya Mate 에서 하겠습니다.
하드 디스크에 여유 공간이 10GB이상 있어야 합니다.

1) make install로 설치하는 방법

일반적인 방식으로 모든 리눅스 os에서 가능한 방식입니다.
우선 https://www.kernel.org/ 에서 설치할 커널을 다운받습니다.
Latest Stable Kernel 이 가장 최신버전입니다.
RC 버전은 Release Candidate 버전들로 아직 안전성이 확정 되지 않은 출시 대기중인 버전입니다.
 https://www.kernel.org/

1) 커널을 컴파일 하려면 우선 menuconfig 설정을 위해 libncurses5-dev 가 필요합니다.
sudo apt-get install libncurses5-dev

2) 커널 업그레이드 후에 프로그램들이 설치되지 않을 것을 대비해서 미리 모든 프로그램들을 업그레이드 해둡니다.
sudo apt-get update && sudo apt-get upgrade

3) 다운 받은 폴더로 가서 압축 파일을 /usr/src 에 풉니다.
cd 다운로드 , 또는 cd Downloads 
sudo tar -xvf linux-3.12.6-tar.xz -C /usr/src

4) 커널을 컴파일할 폴더로 갑니다.
cd /usr/src/linux-3.12.6

5) 먼저 커널설정을 합니다. 
자신의 컴퓨터에 맞게 설정을 하는 부분입니다. 
새로 설정을 하시려면
sudo make menuconfig

64-bit 이시면 space bar누르셔서 선택하시고요, 등등 자신의 컴퓨에 맞게 설정을 하는 곳입니다.
모르시면, 그대로 Save를 하시고 Exit을 하셔도 됩니다.
해당 항목에서 를 누르면 설명이 나옵니다. <esc>를 두번 누르시면 항목에서 나가기고요,
저렇게 색깔있는 굵은 글자가 단축키랍니다.

Processor type and features ---> 에서 자신의 CPU에 해당하는 항목이 나옵니다.

이전의 설정을 그대로 이용하실 때는
sudo make oldconfig

6) 컴파일 하고, 모듈을 설치하고, 커널을 설치합니다.시스템에 따라 다르지만,오래 걸립니다.
저는 4시간 정도 걸리더군요
sudo make 
sudo make modules_install
sudo make install 

7) /boot 디렉토리 안에 4개의 파일이 있나 확인 합니다.
ex)
System.map-3.12.6
vmlinuz-3.12.6
initrd.img-3.12.6
config-3.12.6

이렇게 커널 설치는 끝났습니다. 재부팅 하시면 됩니다.
커널 컴파일을 위해서 /usr/src 에 만들어진 linux-3.12.6 폴더가 7GB 가까운 용량을 차지합니다.
설치를 마치신후에 지우시길 바랍니다.
sudo rm -rf /usr/src/linux-3.12.6

8) 커널 제거하기
우선 커널은 두개를 운영 하시는게 좋습니다.이전 버전을 백업 용도로 쓰는 겁니다.
제거 하시려면 , 우선 다른 버전의 커널로 부팅 합니다.

일반적으로 우분투 계열이나 데비안은 데비안 패키지로 설치하기 때문에 
dpkg -l | grep linux-image 하면 설치된 커널이 나오며, sudo apt-get remove 를 통해서 지워집니다. 

물론 추천 하는 방법은 Ubuntu-Tweak을 이용하는 것입니다.

하지만, 이렇게 설치한 커널은  일반적인 sudo apt-get remove 로 지워지지 않습니다.
그래서 , Ubuntu-Tweak으로도 지워지지 않습니다.
직접 찾아서 지워야 합니다.

/lib/modules 에서 지울 버전의 폴더 지우기
* /boot 에서 4개의 파일을  지웁니다. ex) System.map-3.12.6 , vmlinuz-3.12.6 , initrd.img-3.12.6 , config-3.12.6
* sudo update-grub 해서 변경된 커널 설정을 적용합니다.

2) fakeroot로 deb 패키지를 만들어 설치하는 방법 
이번엔 우분투 소스를 다운 받아서 deb 패키지를 만들어서 설치하는 방법을 알아 보겠습니다.
시간도 반으로 줄어 듭니다. 2시간 30분 정도 걸립니다.
두가지 방법을 알려 드리겠습니다. 선호하는 방법으로 하세요
두 번째는 커널에 내가 원하는 이름을 붙일 수 있는 방법입니다.

1)  커널 deb 패키지 만들기에 필요한 도구들을 설치 합니다.
sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
sudo apt-get install git git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
sudo apt-get install linux-source device-tree-compiler

2) 커널 deb 패키지 빌드를 위한 폴더를 만들고, 그 폴더로 이동합니다.
cd
mkdir kernel
cd kernel

3) git 에서 커널 소스를 다운받습니다. 우분투의 배포판 별로 있습니다.
어떤 커널들인지 궁금하시면 이곳에 가셔서 확인해 보세요
http://kernel.ubuntu.com/~kernel-ppa/mainline/

우분투 14.04 trusty
git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
우분투 13.10 saucy
git://kernel.ubuntu.com/ubuntu/ubuntu-saucy.git
우분투 13.04 raring
git://kernel.ubuntu.com/ubuntu/ubuntu-raring.git
우분투 12.10 quantal
git://kernel.ubuntu.com/ubuntu/ubuntu-quantal.git
우분투 12.04 precise
git://kernel.ubuntu.com/ubuntu/ubuntu-precise.git

저는 최신 버전인 14.04 trusty-tahr의 커널을 다운받아 설치하겠습니다.
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

4) 다운받은 커널 소스의 폴더로 이동합니다.
cd ubuntu-trusty

5) 커널 설정 파일을 생성합니다. 커널 설정은 위의 menuconfig 에 해당합니다. 
chmod a+x debian/scripts/*
chmod a+x debian/scripts/misc/*
fakeroot debian/rules clean
fakeroot debian/rules editconfigs

6) 커널 빌드 하기
fakeroot debian/rules clean
fakeroot debian/rules binary-headers binary-generic

이렇게 해서 deb 커널 패키지를 만들었습니다.
생성된 파일은 ubuntu-trusty 의 상위 디렉토리 ~/kernel 폴더에 있습니다.

7) 설치는 ~/kernel 폴더에 가셔서
sudo dpkg -i linux-headers-3.12.6-*.deb, linux-headers-3.12.6-*_all.deb, linux-image-3.12.6-*.deb
3개를 설치하시면 됩니다.  

8)  설치한 커널 지우기는, 다른 버전의 커널로 부팅하신후에
sudo apt-get remove --purge -y linux-headers-3.12.6-* linux-image-3.12.6-* 
하시면 됩니다.

3) make-kpkg를 이용해서 deb 패키지를 만들고, 커널에 자신이 원하는 이름을 붙여 넣는 방법
이 방법은 deb 커널 패키지를 만들면서, 커널의 버전명에 자신만의 레이블을 새겨넣을 수 있습니다.
정말 커스텀 커널 맛이 제대로 납니다.

설치 소스는 kernel.org나 ,  ubuntu source 둘 다 가능합니다.

1) deb 커널 패키지 만들기에 필요한 도구 설치
sudo apt-get install git kernel-package libncurses5 libncurses5-dev

2) 커널 deb 패키지 빌드를 위한 폴더를 만들고, 그 폴더로 이동합니다.
cd
mkdir kernel
cd kernel

3) Kernel.org 에서 다운 받거나, git 에서 커널 소스를 다운 받아 여기에 압축을 풉니다.
https://www.kernel.org/ 
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git 

4) 다운받은 커널 소스의 폴더로 이동합니다.
cd ubuntu-trusty ,또는  cd linux-3.12.6

5) 먼저 커널설정을 합니다. 
자신의 컴퓨터에 맞게 설정을 하는 부분입니다. 

새로 설정을 하시려면
sudo make menuconfig

이전 설정을 불러 들이시려면
sudo make oldconfig

6) deb 커널 패키지 작성
sudo make-kpkg 또는
sudo make-kpkg -j 2 --initrd --append-to-version=-bagjunggyu-kernel kernel-image kernel-headers

숫자 2cpu 갯수입니다.

바로 여기서 레이블을 붙일 수 있습니다.
--append-to-version=-원하는 이름-kernel 

파일들은 지금 작업한 폴더의 상위 폴더에 만들어 집니다. 

설치는 해당 폴더에서 
sudo dpkg -i *.deb 하시면 됩니다.

지우기는 위의 방법과 같습니다.
자신의 컴퓨터에 맞춘 커널을 만들어서 이용하는 방법에 관해서 알아 봤습니다.

참조)
http://www.howopensource.com/2011/08/how-to-compile-and-install-linux-kernel-3-0-in-ubuntu-11-04-10-10-and-10-04/
https://wiki.ubuntu.com/Kernel/Dev/KernelGitGuide?action=show&redirect=KernelTeam%2FKernelGitGuide
https://help.ubuntu.com/community/Kernel/Compile#Alternate_Build_Method%3a_The_Old-Fashioned_Debian_Way
https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
http://askubuntu.com/questions/163298/whats-a-simple-way-to-recompile-the-kernel
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
369 Windows7 OEM을 활용하여 클린설치 file [11] LynX 2010-11-06 765
368 Windows7 에서 시스템을 백업/복원하는 가장 쉬운 방법!! file LynX 2010-11-07 334
367 탐색기 메뉴에 '명령 프롬프트 열기'와 '메모장으로 열기' 추가하기 file [14] LynX 2010-11-08 591
366 인터넷 익스플로러 리플레쉬 file LynX 2011-05-02 286
365 활성 네트워크 중복으로 인한 인터넷 연결 안되는 문제 file [12] LynX 2011-05-26 971
364 32bit Driver을 64bi로 설치하기 [8] LynX 2011-06-21 325
363 설치파일(inf)에 대한 이해 [7] LynX 2011-06-22 601
362 inf 설치시 경고창 안뜨게 하기 file [10] LynX 2011-06-22 430
361 로우 포맷(Low level format, 저수준 포맷) 하기 file [11] LynX 2011-07-06 722
360 Win XP Crack file [8] LynX 2011-10-31 269
359 윈도우7 메모리 인식 문재 file [13] LynX 2011-11-30 530
358 RoundCube 첨부 용량 변경 / 한글 수정 [10] LynX 2012-01-31 836
357 윈도우7 알수없는장치 file [8] LynX 2012-03-13 270
356 디지털 서명 file [1] LynX 2012-03-15 445
355 아레한글 사용시 출력물에 음영이 나타나는 현상. file [11] LynX 2012-03-29 1154
354 Xyview DVR서버 연결 [8] LynX 2012-04-19 295
353 HP Officejet 6500A (Plus) 호환 드라이버 [8] LynX 2012-05-16 294
352 IIS에 FastCgi모듈 활성화 시키기 file [12] LynX 2012-11-21 1283
351 윈도우 2008서버에 XE 설치 절차 [9] LynX 2012-11-22 230
350 Windows Server 2012 설치 file LynX 2012-11-23 477

XE Login