강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 커널 컴파일 및 설치

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 커널 컴파일 및 설치

 






 

커널 컴파일 설정 이후의 커널 컴파일 과정을 정리하면 다음과 같다.

 

 

 

 

 

 

 

 

 

# make clean

# make bzImage (커널 생성)

# make modules (모듈 컴파일)

# make modules_install (모듈 설치)

# depmod -ae -F System.map <kernel-version>

# make install

 

 

 

 

 

 

 

이전 수행 내용 삭제와 커널 이미지 생성

 

 

make clean : 이전에 수행했던 컴파일 과정에서 생성된 오브젝트 파일(*.[oas]), 커널, 임시파일(.tmp*), 설정값(configure) 등을 삭제한다.

 

 

 

 

make bzImage : 아래 명령으로 압축된 커널 이미지를 생성한다.

 

 

 

II의 대문자이다.

 

 

 

커널을 만드는 명령은 몇 가지가 있는데 커널 이미지 자체의 용량이 커짐에 따라 이것이 가장 많이 쓰인다.

 

 

 

커널 컴파일이 성공하면 /usr/src/linux/arch/i386/boot 디렉토리에서 커널 이미지 "bzImage"를 볼 수 있다.

 

 

 

 

모듈 컴파일 및 설치

make modules : 커널 환경설정에서 모듈로 설정한 기능들을 컴파일.커널 이미지를 생성한 후에는 커널 모듈들을 생성하는 컴파일 작업을 해야 한다.

 

 

 

, 옵션 설정 단계에서 커널 모듈로 선택했던 기능들에 대한 모듈 파일 생성작업을 해야 한다.

 

 

 

이를 위해서 이 명령을 사용한다.

 

 

 

커널 컴파일 전체 과정에서 가장 오랜 시간이 걸린다.

 

 

 

컴파일 후에 생성되는 모듈 파일들은 목적 파일의 형태로 생성된다.

 

 

 

make modules_install : 컴파일 된 모듈을 /lib/modules 아래 설치.이 명령은 생성된 커널 모듈들을 새로운 커널이 사용할 수 있도록 “/lib/modules/ <kernel-version>/kernel” 디렉토리로 복사한다.

 

 

 

리눅스 시스템의 “/lib/modules” 디렉토리는 각 커널 버전별로 각각 사용할 모듈 파일들이 존재하는 곳이다.

 

 

 

이곳에 새로 생성한 커널버전 디렉토리를 생성하고 앞에서 생성한 모듈 파일들을 설치하는 것이다.

 

 

 

 

 

일괄 명령

상기의 명령들은 다음의 명령으로 한 번에 수행할 수 있다.

 

 

 

 

 

 

 

 

 

# make clean bzImage modules modules_install

 

 

 

 

 

또는

 

 

 

 

 

# make all

 

 

 

 

또는

 

 

 

 

 

# make

 

 

 

 

 

모듈의 의존성 검사 및 modules.dep 파일 생성

위 과정 이후에는 모듈 사이의 의존성을 검사하고 커널과 모듈 간의 의존성을 갖도록 하기 위해 다음과 같이 depmod 명령을 실행한다.

 

 

 

이 경우 “/lib/modules/<kernel-version>” 디렉토리에 modules.dep이라는 파일을 생성한다.

 

 

 

 

 

 

 

 

 

# depmod -ae -F System.map <kernel-version>

 

 

 

 

 

 

 

커널 파일의 복사 및 GRUB 설정 파일 등록

마지막으로 이후에 새로운 커널로 부팅하기 위해서 커널 파일을 /boot 디렉토리로 복사하고 GRUB 설정 파일에 커널을 등록해야 한다.

 

 

 

다음과 같이 “make install” 명령으로 이것이 자동으로 수행된다.

 

 

 

 

 

 

 

 

 

# make install

 

 

 

 

 

 

이제 GRUB가 제대로 설정이 되었는지 확인하고, 문제가 있다면 직접 수정할 수 있다.

 

 

 

 

 

 

 

 

 

title SULinux Server (3.11.8)

root (hd0,0)

kernel /boot/vmlinuz-3.11.8 ro root=LABEL=/ rhgb quiet vga=771

initrd /boot/initrd-3.11.8.img

...중략...

title SULinux Server-base (2.6.18-92.el5)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet vga=771

initrd /boot/initrd-2.6.18-92.el5.img

 

 

 

 

 

 

설정이 끝난 후에 GRUB 정보를 갱신할 필요는 없다.

 

 

 

만약 MBR에 문제가 생겨서 꼭 갱신해야 한다면 다음과 같이 갱신하도록 한다.

 

 

 

 

 

 

 

 

 

# /sbin/grub-install /dev/hda

 

 

 

 

 

기본적으로는 구버전의 커널과 새로 컴파일 된 커널 버전의 두 가지 커널을 동시에 쓸 수 있게 되었다.

 

 

 

만약 그대로 두 커널 버전을 모두 사용하는 경우 또는 새로운 커널이 문제가 발생할 수 있는 경우를 대비하여 구버전의 커널 모듈 디렉토리는 삭제하지 말고 그대로 두도록 한다.

 

 

 

이제 설치된 새 커널로 재부팅하여 다음과 같이 “uname r” 또는 “uname a” 명령으로 리눅스 커널 버전을 확인할 수 있다.

 

 

 

커널 컴파일 및 설치 작업 이후에는 정상적으로 작업이 완료되었는지 확인해 보아야 한다.

 

 

 

 

 

 

 

 

 

# uname r

3.11.8

# uname a

Linux sulinux.net 3.11.8 #1 SMP sat Nov 16 20:45:19 KST 2013 x86_64 x86_64 x86_64 GNU/Linux

#

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,150 명
  • 현재 강좌수 :  36,432 개
  • 현재 접속자 :  276 명