byidev.com
2024-04-16 00:19:52

컴파일 환경

 커널 컴파일의 경우 대부분의 리눅스에서도 마찬가지이듯이 개발환경 또는 라이브러리의 종속성을 맞추기 위해서는 불가피한 상황이다. 이에 따라 커널 컴파일의 내용을 기록하고 다시금 사용하기 위해 이와 같은 내용을 작성한다. 커널 컴파일은 낮은 버전에서 높은 버전으로 올라가는 업그레이드는 쉬우나, 다운그레이드는 손을 많이 타기 때문에 목표 커널의 버전이 있다면 목표 커널 버전 이하 버전으로 시작하기를 추천한다.

  • CentOS-7-x86_64-Minimal-2009

 

리눅스 커널 준비

 커널 컴파일을 위해서는 우선적으로 커널의 버전을 준비해야한다. 목표 커널 버전의 경우 다음의 사이트에서 다운로드해 준비할 수 있도록 한다. 필자는 OS 설치를 마친 뒤 wget 링크 기반으로 다운로드를 진행하였으나, 다운로드의 방법은 다양하니 각자의 환경에 맞춰 준비할 수 있도록 한다.

 

Index of /pub/linux/kernel/

 

mirrors.edge.kernel.org

 

리눅스 커널 컴파일

1. 커널 압축 파일을 준비하고 압축을 해제한다. 이때 다운로드 받은 커널 파일의 확장명에 따라 방법이 상이한 관계로 각자 다운로드 받은 파일의 확장에 따라 방법을 확인하도록 한다.

 

2. 커널 컴파일을 위한 기본적인 종속 패키지를 그룹 인스톨한다. 커널 컴파일간 발생하는 대부분의 종속 패키지를 해결해주기는 하나, 버전마다 상이할 수 있으므로 추가적으로 요구하는 종속성은 맞춰주길 바란다.

yum groupinstall “Development Tools”

 

3. 기존 커널 config 파일을 준비한 커널 컴파일 디렉터리에 복사한다.

cp [config-org kernel ver] ./.config

 

4. menuconfig 과정을 통해 기존 커널을 불러오고 설정값을 준비한다. (풀스크린 권장)

make menuconfig

 

5. menuconfig에서 기존 커널을 불러오고 다음의 생략된 구문 config 옵션을 활성화한다.

General Setup -> enable deprecated sysfs...

 

6. 모든 타겟을 빌드한다. 이때 -j 옵션에 cpu core를 가용한 선에서 할당해 속도를 높일 수 있다.

make -j [number of cores to use]

 

7. 모듈을 생성한다. 6의 과정과 동일하게 -j 옵션을 사용한다.

make modules -j [number of cores to use]

 

8. 모듈을 설치한다.

make modules_install -j [number of cores to use]

 

9. 커널을 설치한다.

make install -j [number of cores to use]

 

10. 부팅 커널을 변경한다. 이때, 기본값 default는 현재 커널의 숫자를 가리키고 있을것이다. 해당 커널이 아닌 새로 설치한 커널의 값에 맞춰 default 값을 설정해주어야 한다.

vi /etc/grub.conf

 

 /etc/grub.conf 경로 파일이 없을  경우 기본적인 부팅 커널 변경 과정을 진행한다.

grep ^menuentry /boot/grub2/grub.cfg | cut -d "" -f2 // 부팅 커널 확인
grub2-set-default [kernel version] // 새로운 부팅 커널 버전 설정
grub2-editenv list // 변경된 부팅 커널 확인

 

11. 시스템 재시작 이후 다음의 커맨드를 통해 변경된 기본 부팅 커널을 확인한다.

uname -r