Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

정리하는 공간

리눅스) 커널 업데이트 하기 본문

리눅스 기초

리눅스) 커널 업데이트 하기

개구리집 2022. 5. 12. 10:19
반응형

커널을 업데이트 하지 않으면 보안에 취약해질 수 있기 때문에 업데이트를 해줘야 한다.

커널 컴파일 순서

 

 

1. 시스템 데이터 및 중요 파일들을 다른 디스크에 백업한다. (원칙)

 

2. 커널을 컴파일할 작업 위치로 이동 (/usr/src)

 

3. 컴파일 할 리눅스 커널 소스코드 가져오기. (일반적으로 xz라는 압축으로 배포됨)

 

4. 커널 소스코드 압축 해제

 

5. 커널 컴파일을 위한 작업장 청소 작업(make mrproper, make clean)

   Tip : makefile이 잘못되거나, 업데이트 중 오류 메세지가 생겼을 때 작업을 처리하고 make mrproper, make clearn

         명령어를 입력하면 파일을 최초의 상태로 만들어, 다시 시작하면 된다.

 

6. 커널 컴파일 옵션 설정 작업(make menuconfig)

   Tip : 컴파일할 때 옵션 환경설정을 변경하는 곳

 

7. 커널 이미지 파일 생성을 위한 컴파일 작업(make bzlmage)

   Tip : 이미지화가 되고, 이 작업을 거쳐야 부팅시 선택 목록에 출력된다.

 

8. 커널 모듈 생성을 위한 컴파일(make modules)

   Tip : 현재는 7,8번 과정을 make all 이라는 명령어가 대체한다.

 

9. 커널 모듈 파일 설치하기 (make modules_install), 여기까지가 컴파일이 끝났다라고 할 수 있다.

 

10.  커널 모듈 파일 및 관련 파일 복사.

      grub.conf 파일 수정 (make install)

 

11.  재부팅( 새 커널 부팅 테스트)

 

12.  새로운 커널 버전 확인 및 시스템 서비스 확인.

 


 

커널 업데이트 실습

 

 

업데이트 전 선 작업을 해준다.

현재 커널 버전을 확인하고

 

yum update 명령어를 이용해 리눅스에서 받은 모든 패키지들을 최신 업데이트 한다.

 

Tip : 부버전이 짝수이면 안정화, 홀수이면 개발 중인 것이다.

 

www.kernel.org/pub/linux/kernel

 

Index of /pub/linux/kernel/

 

mirrors.edge.kernel.org

 

커널 버전 정보는 이곳에서 볼 수 있다.

 

 

설치 방법은 아래의 명령어를 순차적으로 입력하고, 오류가 발생하면 해결하면 된다.

yum update

yum install gcc ncurses ncurses-devel

yum groupinstall "Development Tools"

cd /tmp/

wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.8.9.tar.xz

tar -Jxvf linux-5.8.9.tar.xz -C /usr/src

cd /usr/src

ln -s linux-5.8.9 linux

cd linux

make mrproper

make clean

cp /boot/config-`uname -r` ./.config

make menuconfig
반응형

make menuconfig

지금까지 잘 왔다면 위의 화면을 보게 된다.

 

Load UI에 들어가면 위 화면이 나오는데 .config 파일로 로드하겠다는 말이다. OK를 눌러준다.

 

첫 화면에서 맨 위에 있는 General setup 에 들어가서 위의 사진의 항목을 space 바를 눌러 체크해주면 된다.

 

 

rpm -qa | grep bc를 이용해 bc 패키지가 있는지 확인한다. 혹시 모를 오류를 방지하기 위해서

 

(openssl-devel 도 찾아주고 없다면 받아준다.)

 

 

make all을 눌러준다.

 

혹시나 지금 다운 받는linux-5.8.9. 버전에서

 

make[1]:***'certs/x5-0_certificate_list'에서 필요한 'certs/rhel.pem'타겟을 만들 규칙이 없습니다.

이런 오류가 뜨면 우선, make clean, make mrproper 명령어를 입력하고 (주석처리하고 실행하면 풀리더라.)

 

https://dwaves.de/2017/06/30/fedora-redhat-centos7-centos8-compiling-the-latest-kernel-updated-2020-01/

 

이곳에 나와 있는 방식으로 .config 파일에서 주석처리를 해준다.

 

다시 make all로 진행해준다.

 

 

P.S

업데이트 진행 중 이런 오류가 나왔다.

BTF: .tmp_vmlinux.btf: pahole version v1.15 is too old, need at least v1.16 Failed to generate BTF for vmlinux Try to disable CONFIG_DEBUG_INFO_BTF make: *** [Makefile:1139: vmlinux] 오류 1

wget https://rpmfind.net/linux/centos/8-stream/PowerTools/x86_64/os/Packages/libdwarves1-1.17-1.el8.x86_64.rpm

yum으로 dwarves 패키지를 지우고, 위의 링크로 libdwarves를 받은 다음, 다시 yum 으로 dwarves 를 다운 받으니

 

pahole v.17이 생겨났다.

 

 

make all 로 컴파일을 마쳤다면

 

 

make modules_install 모듈을 설치하고

 

 

make install을 입력해 업데이트를 마치자.

 

마지막으로 업데이트된 버전 확인

 

 

 

 

혹시나 엔트리 화면에서 순서가 위에 없다면 부팅 순서를 변경하고 싶다면

 

vi /etc/default/grub 파일로 들어가서

 

GRUB_DEFAULT=0   이렇게 수정한다. 현재 부팅한 엔트리를 0번으로 하겠다는 것이다.

 

 grub2-mkconfig –o /boot/grub2/grub.cfg 을 입력해 그루브의 환경설정 수정사항을 정욕하자

 

 

 

 또는

 

 

 

grub2-editenv list

 

부팅 0순위를 출력해준다. 현재 커널을 0순위로 바꾸고 싶다면

 

grub2-set-default 0

 

입력!

 

 

LIST
Comments