728x90
728x170
커널 컴파일(Kernel Compile)
커널의 개요
- 리눅스에서 커널의 역할
- 시스템 자원을 소유하고 관리
- 보통 하드웨어, 메모리, 프로세스 스케쥴링 을 담당한다.
- 프로그램이 하드웨어 자원을 간접적으로 접근할 수 있도록 해준다.
- 시스템 자원을 소유하고 관리
- 일반적으로, 사용하는 배포판 리눅스의 버전으로 평가하지만, 실제 리눅스의 버전은 커널 버전으로 평가해야 한다.
- 커널 버전 확인 명령어 : uname -r
$ uname -r
- 리눅스 커널은 자유 소프트웨어로 https://www.kernel.org 에서 배포된다.
- 버전은 4.12.2 형태로 배포됨.
- 4
- 메이저 번호
- 커널에 매우 큰 변화가 생겼을 경우에 올림.
- 12
- 마이너 번호
- 기능상의 중요한 변화가 생기거나 추가된 경우에 올림.
- 전통적으로 마이너 번호 가 짝수이면 안정 버전, 홀수이면 개발 버전을 의미했지만, 커널 3.0 버전부터는 이러한 경향을 따라기지 않고 순차적으로 번호를 올리고 있음.
- 2
- 패치 번호
- 버그 수정과 같이 약간의 변화가 발생했을 때 올림.
- 4
- 버전은 4.12.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
728x90
그리드형(광고전용)
'System Software > Linux' 카테고리의 다른 글
[리눅스 명령어] last (0) | 2022.03.15 |
---|---|
[리눅스 명령어] logrotate (0) | 2022.03.15 |
[리눅스 명령어] 프린터(Printer) : lpadmin / lpr / lpq / lprm / lpc / lp / lpstat / cancel (0) | 2022.03.13 |
[리눅스 명령어] 디스크 확장 : fdisk, partprobe, reboot, mkfs.xfs (0) | 2022.03.13 |
[리눅스 명령어] lsmod, insmod, rmmod, modprobe, modinfo, depmod (0) | 2022.03.13 |
[리눅스 명령어] ldd (0) | 2022.03.13 |
[리눅스 명령어] ldconfig (0) | 2022.03.13 |
[리눅스 명령어] yum / yumdownloader (0) | 2022.03.13 |