본문 바로가기
Linux

리눅스 커널

by oncerun 2021. 7. 4.
반응형

 

  • 리눅스 커널 개요
  • 버전 관리 및 배포
  • 커널 다운로드 및 컴파일
  • 커널 환경 설정

 

리눅스 커널 개요

 

 - 리눅스 커널은 유닉스 운영체제를 바탕으로 리눅스 토발즈가 개발하고, GNU GPL v2 라이선스 하에 공개된 오픈소스 프로젝트이다. 많은 컨트리뷰터가 존재하며 현재에도 활발하게 개발되고 있다.

 

- 리눅스 커널은 일반적인 기능을 커널과 동일한 메모리에 적재, 실행하는 기법인 모놀리식 커널이며, 현대 운영체제가 가져야 할 특징인 가상 메모리, 공유 라이브러리, 메모리 관리, 프로세스 관리 등을 수행한다.

 

버전 관리 및 배포

 

- https://www.kernel.org/

 

The Linux Kernel Archives

 

www.kernel.org

 

uname -r 

// 5.12.14

명령어를 통해 현재 커널 버전을 확인할 수 있으며, 가장 앞의 번호는 major 번호(5)로 시스템의 큰 변화가 발생했을 때 갱신되고 minor(12)는 부 버전을 의미한다. 14는 5.12버전에 대해 12번째 빌드임을 뜻한다.

 

2021-07-04 기준으로 리눅스 커널의 최신 커널은 5.13이다.

 

 

커널 다운로드 및 컴파일

 

-커널 소스를 다운로드하는 것은 kernel.org에서 tarball을 다운로드 받거나 github에서 소스코드를 다운로드할 수 있다. https://git.kernel.org/

 

Kernel.org git repositories

 

git.kernel.org

다음 repo에서 다양한 버전의 커널 소스를 받을 수 있다.

 

wget https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot/linux-5.13.tar.gz

tar xvfz linux-5.13.tar.gz
cd linux-5.13

커널 컴파일을 위해서 필요한 필수 도구가 존재한다. CentOS 기준으로 yum을 통해 설치한다.

sudo yum update | yum install -y ncurses-devel make gcc bc bison flex elfutils-libelf-devel openssl-devel grub2

 

커널 환경설정

make mrproper

 

커널 환경설정을 진행하기 전 기존의 오브젝트 파일, config 파일, 다양한 백업 파일을 모두 제거한다. 만약 처음 커널 컴파일을 하는 것이라면 이 과정은 생략한다.

 

커널 컴파일이 수행되기 위해서는 환경설정이 필수적이다. 기존의 커널 설정 파일을 복사해서 필요한 부분만 수정하는 것이 편리하다.

cd /boot/config-$(uname -r).config

 

make menuconfig

make menuconfig 명령어를 통해 원하는 커널의 기능을 활성화하거나 비활성화한다. 모든 설정을 마치고 savetl. config파일이 갱신된다.

 

커널 컴파일

 

커널 이미지를 생성하기 위해 컴파일을 진행한다. zImage는 1MB 미만의 작은 커널일 경우 유리하고 bzImage는 그 이상의 커널을 컴파일 시 사용한다.

생성 후 bzip2로 압축을 해야 한다.

 

make bzimage
make modules  //커널에서 사용할 모듈 컴파일
sudo make install //완료된 모듈을 /lib/modules/kernel-version이하에 설치
sudo make modules_install //커널 이미지 복사 및 부트로더 환경설정 등 커널을 시스템에 설치
sudo reboot //시스템 재부팅
uname -f 

 

 

만약 이전에 커널을 컴파일했다면 그로 인해 여러 오브젝트 파일과 환경설정 및 기타 파일들이 존재한다. 이렇게 남아있는 파일들로 인해 새로운 컴파일에 영향을 줄 수 있기에 지워줄 필요가 있다.

 

리눅스에서는 이를 위해 make 명령어의 clean, mrproper, distclean 옵션을 제공한다.

- clean : 커널 환경설정을 제외한 대부분의 파일을 모두 제거

- mrproper : 커널 환경설정을 포함하여 모든 파일을 모두 제거한다.

- distclean : mrproper의 동작 수행 후 추가로 백업 및 패치 파일도 제거

 

 

커널 환경설정은 CLI, GUI 등 다양하다. 

make config

make menuconfig

make nconfig

make xconfig

make gconfig 

 

해당 항목 포함은 y, 미포함은 n , 모듈로 포함 시 m을 선택하면 된다.

반응형

'Linux' 카테고리의 다른 글

[Linux] 볼륨 관리  (0) 2021.08.02
리눅스 배포판  (0) 2021.08.02
/etc/profile  (0) 2021.02.26
Firewall  (0) 2021.02.22
[Linux] 파일 시스템  (0) 2021.02.04

댓글