본문 바로가기
Ubuntu/Linux

Ubuntu Kernel 컴파일

by 하센세 2014. 1. 22.

* 완성본 문서가 아니다. 자료 정리용으로 작성되었다.


kernel 3.3.2버전을 다운로드 받아보자.

위치는 ftp://ftp.kernel.org/pub 에서 받자. 파일은 linux-3.3.2.tar.bz2를 하겠다.

/usr/src에 tar -xjvf linux-3.3.2.tar.bz2로 압축을 풀자


커널 컴파일에 필요한 패키지 설치를 한다.

root:/usr/src# apt-get install build-essential bin86 kernel-package libncurses5-dev


심볼릭 링크를 설정하여 리눅스시스템이 기본적으로 찾는 디렉토리를 만들어 준다.

root:/usr/src# cd linux-3.3.2

root:/usr/src/linux-3.3.2# ln -s /usr/src/linux-3.3.2 /usr/src/linux


root:/usr/src# cd /usr/src/linux

아래부분이 중요하다. 대부분 .config 파일의 내용이 잘못되어 컴파일 시 에러가 발생한다.

이 문서도 이부분이 문제인데 목적은 현재 커널구성의 설정을 컴파일한 소스의 환경설정으로 복사한다는 의미이다.

 root:/usr/src/linux# cp /boot/config-'uname -r' .config              <-- 생략가능

커널 셋팅 화면이 뜨지 않는다면 libncursese5-dev가 없을 경우가 많다.

root:/usr/src/linux# make menuconfig

혹 컴파일 시 문제가 된다면 위의 .config의 copy문장을 쓰지않고 make menuconfig 후에 exit하기 전에 save메뉴를 클릭하면 .config 파일이 만들어진다.


알아서 설정하고 exit메뉴를 선택하면 저장된다.

순수 linux 커널을 컴파일 한다면 바로 컴파일 하겠지만 Ubuntu를 사용한다 커널 이미지와 모듈 이미지의 "deb"파일이 필요하다.

혹시나 있을지 모를 쓰레기 파일들을 깨끗하게 청소한다.

root:/usr/src/linux# make-kpkg clean

배포판의 커널 컴파일 명령어

root:/usr/src/linux# make-kpkg --initrd --revision=shha1 kernel_image modules_image

커널 이미지 설치법

root:/usr/src/linux# cd /usr/src

root:/usr/src# dpkg -i linux-image-3.3.2_shha1_x64.deb

강제 설정모드는 다음과 같다.

root:/usr/src# dpkg -i --force-all linux-image-3.3.2_shha1_x64.deb


이제 에러가 발생하면 .config파일의 문제점과 기타 여러가지 문제점을 알아서 적절하게 처리해주면 되고

혹시 성공하여도 재부팅 후 시스템이 동작하지 않는 사태를 거의 대부분 만나게 된다.


커널 컴파일 후라면 자동으로 /boot/grub/grub.cfg파일에 새로 컴파일된 커널이 0으로 menuentry에 등록되어 버린다.

따라서 grub.cfg 파일에 성공한 버전을 0으로 돌려놓고 업데이트한 시스템은 이전버전으로 만들어 버린다면 미연에 발생할

문제점에 대비할 수 있다.


패키지로 업데이트 하는것이 아니면 거의 대부분 첫 커널 컴파일 후에 정상 동작하는 경우는 드물기에 grub.cfg파일 꼭 재수정 하길 바란다.

------------------------------------------------------------------------------------------------------

우분투가 아닌 디폴트 방식.

root:/usr/src/linux# make mecuconfig 후에

1. 컴파일

root:/usr/src/linux# make -j4 (cpu수)

2. 모듈 컴파일 및 설치

root:/usr/src/linux# make modules && make modules_install

3. 설치

root:/usr/src/linux# make install

4. grub 수정

root:/usr/src/linux# vi /etc/default/grub

root:/usr/src/linux# vi /etc/grub/grub.cfg

5. 리부팅 후 확인

root:/usr/src/linux# uname -a