개인 공부/리눅스

커널 컴파일(CentOS)

RyoTTa 2020. 12. 17. 17:10
반응형

Centos 7,

1. 현재 사용하는 커널의 버전 확인

$ uname -r

 

2. www.kernel.org/ 통해 커널 다운로드

만약 원하는 커널 버젼이 5.4.84일때

 

$ cd /usr/src/kernels

$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.84.tar.xz

$ tar xz -d linux-5.4.84.tar.xz

$ tar xf linux-5.4.84.tar

$ cd linux-5.4.84

 

3. 컴파일에 필요한 패키지 설치

$ yum install ncurses-devel make gcc bc openssl-devel elfutils-libelf-devel rpm-build

 

4. config 파일 수정

사용하는 시스템에 설치되어있는 하드웨어, 소프트웨어, 네트워크 특성에 맞게 커널을 구성하는 Configure 파일.

보통 자신이 사용하고있는 config 파일을 그대로 사용한다.

 

$ ls /boot/config*

사용하게되면 현재 설치되었던, 설치된 커널 버전마다의 config 파일이 존재함을 알 수있다.

따라서 현재 커널의 구성형식을 컴파일할 커널의 폴더로 복사한다.

$ cp /boot/config-4.14.78 ./.config

 

만약 커널구성에 대해 수정사항이 있다면 

$ make menuconfig 

명령어를 사용해 구성을 수정할 수있다.

 

5. 커널 컴파일

$ make -j CPU_개수 rpm-pkg

-j 옵션은 멀티 스레드를 사용해 병렬적으로 컴파일 한다는 뜻이다. 따라서 싱글 스레드비해 속도가 빠르다.

만약 자신이 사용하는 시스템의 CPU 스레드 개수를 모른다면

$ grep -c processor /proc/cpuinfo

사용하면 된다.

 

컴파일이 오류없이 정상적으로 컴파일이 완료되었다면

사용자 홈디렉토리에 rpmbuild 디렉토리가 생성되었을 것이다.

rpmbuild/RPMS/x86_64/ 디렉토리에 rpm 패키지가 생성된다.

 

6. 커널 설치

$ cd ~/rpmbuild/RPMS/x86_64/

$ ls

컴파일된 커널들의 목록이 나타난다.

보통 일반, devel(개발용), headers 커널 총 3개가 생성된다.

보통 일반커널을 사용하므로

 

$ yum install ./kernel-5.4.83-1.x86_64.rpm

통해 새로운 커널 rpm 패키지를 설치한다.

 

7. 부팅 순서 수정

# grub2-editenv list

명령어를 통해 현재 부팅될 커널 버전을 확인 할 수있다.

 

$ grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2 

or

$ grep ^menuentry /boot/efi/EFI/centos/grub.cfg | cut -d "'" -f2
부팅 가능한 커널 목록을 볼 수있다.

만약 레거시를 사용하면 상단 명령어를 사용하고, UEFI를 사용하면 아래 명령어를 사용하면 된다.

$ grub2-set-default "CentOS Linux (5.4.83) 7 (Core)"

 

명령어를 사용해 5.4.83 버전으로 부팅하도록 설정한다.

$ reboot 

리부팅해주시고 uname -r을 사용해 커널 버전이 바뀌었는지 확인하면 끝입니다.

반응형

'개인 공부 > 리눅스' 카테고리의 다른 글

Centos 7, gcc 버전 업데이트  (0) 2021.03.16
Centos 7, SPEC2006 설치 - 1  (0) 2021.03.11
Ubuntu 라이브러리 생성  (0) 2021.01.07
Ubuntu 시스템콜 추가  (2) 2021.01.07
커널 컴파일(Ubuntu)  (0) 2020.12.18