728x90
728x170
커널 컴파일
커널의 개요
- 리눅스에서 커널의 역할
- 시스템 자원을 소유하고 관리
- 보통 하드웨어, 메모리, 프로세스 스케쥴링 을 담당한다.
- 프로그램이 하드웨어 자원을 간접적으로 접근할 수 있도록 해준다.
- 시스템 자원을 소유하고 관리
- 일반적으로는 사용하는 배포판 리눅스의 버전으로 평가하지만, 실제 리눅스의 버전은 커널 버전으로 평가해야 한다.
- 커널 버전 확인 명령어 : uname -r
$ unamr -r
3.10.0-1160.15.2.el7.x86_64
- 리눅스 커널은 자유 소프트웨어로 https://www.kernel.org 에서 배포된다.
커널 버전 형태 : 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
그리드형(광고전용)
'Certificate > Linux Master' 카테고리의 다른 글
[리눅스마스터 1급 실기] 디스크 쿼터(Disk Quota) (0) | 2022.05.10 |
---|---|
[리눅스마스터 1급 실기] 디스크 관련 정보 (UUID, blkid) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 텔넷(telnet) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 프록시(Proxy) 서버 관리 (squid) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 삼바(SAMBA) 서버 (0) | 2022.05.09 |
[리눅스마스터 1급 실기] SSH(Secure Shell) (0) | 2022.05.09 |
[리눅스마스터 1급 실기] rsyslog (2) | 2022.05.09 |
[리눅스마스터 1급 실기] 디스크 확장 (마운트) (0) | 2022.05.08 |