반응형

이번에는 리눅스(우분투)환경에서 리눅스 컴파일 하는 방법에 대해서 알아보고자 합니다.

 

1) 커널 소스코드 다운받기

 

리눅스 커널 소스코드는 http://www.kernel.org 사이트에서 다운로드가 가능합니다.

 

 

현재 가장 최신 stable 버젼은 4.14.4인 만큼 해당 버전을 다운받아서 설치 해보도록 하겠습니다.

 

 root@ubuntu:/work# wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.tar.xz
--2017-12-10 15:51:23--  https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.tar.xz
Resolving www.kernel.org (www.kernel.org)... 147.75.110.187, 2604:1380:3000:3500::3
Connecting to www.kernel.org (www.kernel.org)|147.75.110.187|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 100770500 (96M) [application/x-xz]
Saving to: ‘linux-4.14.tar.xz’

linux-4.14.tar.xz      100%[==========================>]  96.10M   244KB/s    in 7m 3s

2017-12-10 15:58:28 (232 KB/s) - ‘linux-4.14.tar.xz’ saved [100770500/100770500]

 

다음과 같이 wget 명령어를 이용해서 커널 소스코드를 다운 받을 수 있습니다.

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.tar.x

명령어를 이용하여 커널소스를 다운을 받고 압축을 해제 합니다.

 

tar xvf linux-4.14.tar.xz

 

2) 리눅스 커널 컴파일을 위한 패키지 설치 

#apt-get install kernel-package
#apt-get install build-essential bin86
#apt-get install libncurses5-dev
 

 

3) 커널 설정파일 가져오기

커널을 컴파일하기 위해서는 관련된 설정파일을 셋팅을 사전에 해야 합니다.

우선 /boot 폴더에 있는 현재 시스템의 config 설정을 가져 옵니다.

물론 처음부터 세팅을 할 수 도 있지만... 그건 너무 무모하고 힘든 작업 일수 있기 때문에 현재 시스템의 설정을 가져와서 목적에 맡게 수정할 것을 권고 해 드립니다.

 

# cp /boot/config-4.4.0-87-generic ./.config

# make menuconfig

 

이렇게 설정을 하게 되면 최종 모든 설정이 끝나게 됩니다.

 

4) 커널 컴파일하기

 

사전에 필수 패키지를 잘 설치했으면 make-kpkg 란 tool이 정상적으로 설치가 되었을 겁니다. make-kpkg는 커널 소스를 컴파일 하고 타겟에 맞게 결과물을 생성합니다.

 

root@ubuntu:/work/linux-4.14# make-kpkg --initrd --revision=1.0 kernel_image kernel_headers
exec make kpkg_version=13.018 -f /usr/share/kernel-package/ruleset/minimal.mk debian DEBIAN_REVISION=1.0  INITRD=YES
====== making target debian/stamp/conf/minimal_debian [new prereqs: ]======
This is kernel package version 13.018.
test -d debian             || mkdir debian
test ! -e stamp-building || rm -f stamp-building
install -p -m 755 /usr/share/kernel-package/rules debian/rules
for file in ChangeLog  Control  Control.bin86 config templates.in rules; do                                      \
            cp -f  /usr/share/kernel-package/$file ./debian/;                               \
        done
cp: cannot stat '/usr/share/kernel-package/ChangeLog': No such file or directory
for dir  in Config docs examples ruleset scripts pkg po;  do                                      \
          cp -af /usr/share/kernel-package/$dir  ./debian/;        

 

5) 커널 설치하기

 

마지막으로

 

dpkg -i *.deb 를 수행 하게 되면 해당 커널이 마치게 됩니다.

반응형

+ Recent posts