별의 공부 블로그 🧑🏻‍💻
728x90
728x170

커널 컴파일

커널의 개요

  • 리눅스에서 커널의 역할
    • 시스템 자원을 소유하고 관리
      • 보통 하드웨어, 메모리, 프로세스 스케쥴링 을 담당한다.
      • 프로그램이 하드웨어 자원을 간접적으로 접근할 수 있도록 해준다.
  • 일반적으로는 사용하는 배포판 리눅스의 버전으로 평가하지만, 실제 리눅스의 버전은 커널 버전으로 평가해야 한다.
  • 커널 버전 확인 명령어 : uname -r
$ unamr -r
3.10.0-1160.15.2.el7.x86_64

 

커널 버전 형태 : 4.12.2
4 - 메이저 번호
- 커널에 매우 큰 변화가 생겼을 경우에 올린다.
12 - 마이너 번호
- 기능상의 중요한 변화가 생기거나 추가된 경우에 올린다.
- 전통적으로 마이너 번호가 짝수이면 안정 버전, 홀수이면 개발 버전을 의미했지만, 커널 3.0 버전부터는 이러한 경향을 따라가지 않고 순차적으로 번호를 올리고 있다.
2 - 패치 번호
- 버그 수정과 같이 약간의 변화가 발생할 때 올린다.

 

커널 컴파일(Compile)

  • 커널 소스를 다운로드하여 사용하는 시스템에 최적화된 커널을 만드는 과정
  • 불필요한 항목들을 제거하고, 안정성과 성능 향상을 꾀할 수 있다.
  • 커널 컴파일을 하기 위해서는 다음의 개발 도구가 설치되어야 한다.
    • gcc
    • 어셈블러
    • 관련 라이브러리
      • ncurses
      • ncurses-devel
    • 링커
    • make 유틸리티
  • 설치가 되어 있지 않다면, 발생하는 메시지를 확인해서 다음 명령을 실행하여 순차적으로 설치하면 된다.
    • # yum install gcc
    • # yum install ncurses
    • # yum install ncurses-devel
  • 관련 도구가 설치가 되어 있으면, 설치하려는 커널 버전의 소스를 /usr/src/kernels 디렉터리에 다운로드한다.
  • 그 이후의 컴파일 순서는 다음과 같다.
    • 커널 소스 파일 압축 해제
    • 커널 소스의 설정 값 초기화make mrproper
    • 커널 컴파일 옵션 설정 작업make menuconfig
    • 커널 이미지 파일 생성 작업make bzImage
    • 커널 모듈 생성을 위한 컴파일 작업make modules
    • 커널 모듈 설치 작업 : make modules_install
    • 커널 모듈 파일 복사 및 grub.conf 파일 수정make install
    • 새로운 커널 사용을 위한 시스템 재부팅
  • 커널 소스 파일은 tar 명령의 압축 해제 옵션을 이용한 후에 관련 디렉터리로 이동시킨다.
  • 컴파일 관련 도움말을 보려면 make help 명령어를 입력하면 된다.
    • 지원되는 다양한 타겟(Target)을 확인할 수 있다.
# cd linux-4.12.2
# make help

 

Cleaning Targets

명령 설명
make clean - 생성된 오브젝트 파일을 제거하고 다시 configure 할 때 쓰이는 명령
▶ 리눅스에서 소스 파일로 프로그램을 설치할 때 configure 작업을 수행하는데, 이 작업을 수행하면 오브젝트 파일이 생성됨.
- 커널 컴파일을 할 때도 설정된 작업을 초기화하기 위해 make clean 명령을 사용할 수 있음.
▶ 하지만 오브젝트 파일만 지울 뿐, 환경 설정한 내용이 저장되는 .config 파일 등은 지우지 못함.
make mrproper - 기존에 설정된 값을 초기화하는 명령
- configure 작업을 통해 생성된 오브젝트 파일 뿐만 아니라 config 파일, 다양한 백업 파일 등도 함께 제거함.
make distclean mrproper 작업과 더불어 편집된 백업 및 패치 파일도 모두 제거함.

 

커널 컴파일 주요 도구

도구 설명
make config - 텍스트 기반의 설정 도구
- 터미널 환경에서 y, m, n으로 설정함.
make menuconfig - 텍스트 기반컬러 메뉴 제공
- 커서를 이용해서 이동 가능
- 가장 보편적으로 사용하는 도구
make nconfig - 텍스트 기반컬러 메뉴 제공
- 커서와 [F1] ~ [F9]까지의 기능키 제공
make xconfig X 윈도 환경의 Qt 기반 설정 도구
make gconfig X 윈도 환경의 Gtk+ 기반 설정 도구

 

기타 작업

명령 설명
make bzImage 커널 이미지를 생성할 때 bzip2로 압축해서 생성
make modules 커널 옵션 설정 시, m으로 선택한 항목들의 모듈을 만드는 과정
make modules_install 모듈 관련 디렉터리인 /lib/modules/커널버전 디렉터리 안에 복사하는 과정

 

커널 컴파일 수행

① 압축 해제 및 관련 디렉터리 이동
# tar Jxvf linux-4.12.2.xz
# cd linux-4.12.2

 

② 커널 소스 설정 값 초기화
# make mrproper

 

③ 커널 컴파일 옵션 설정 도구 실행
# make menuconfig
  • 설정된 내용은 .config 파일에 기록됨.

 

④ 커널 이미지 생성
# make bzImage

 

⑤ 커널 모듈 생성을 위한 컴파일 작업
# make modules

 

⑥ 생성한 커널 모듈 설치 작업
# make modules_install

 

⑦ 커널 모듈 파일 복사 및 grub.conf 파일 자동 수정 작업
# make install

 

⑧ 시스템을 재가동하여 새로운 커널로 부팅 후 커널 버전 확인
# reboot
# uname -r

 

문제 해결 전략

  • 메뉴얼을 통해 확인하기가 어려우므로 암기를 한다.
  • 특히, make clean, make mrproper, make distclean의 차이점을 꼭 파악한다.

 

문제 유형

① 커널 컴파일 진행 과정이 주어지고, 조건에 맞는 내용을 적는 문제

가. 커널 컴파일을 진행하기 전에 관련 정보를 초기화하고 파일을 삭제한다.
# make (  distclean  )

나. 커널 컴파일 옵션 설정 작업을 Qt 기반의 환경에서 진행한다.
# make (  xconfig  )
728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖