정리하는 공간
리눅스) 커널 업데이트 하기 본문
커널을 업데이트 하지 않으면 보안에 취약해질 수 있기 때문에 업데이트를 해줘야 한다.
커널 컴파일 순서
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 명령어를 입력하고 (주석처리하고 실행하면 풀리더라.)
이곳에 나와 있는 방식으로 .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
입력!
끝
'리눅스 기초' 카테고리의 다른 글
리눅스) 리눅스 시스템의 부팅(2. init, systemd, systemctl, journalctl (0) | 2022.05.12 |
---|---|
리눅스) 리눅스 시스템의 부팅(1. 이론) (0) | 2022.05.12 |
리눅스) 소스코드를 이용한 패키지 설치 (NCFTP) (0) | 2022.05.12 |
리눅스) 컴파일, 라이브러리 파일, makefile 간단 이론 정리 (0) | 2022.05.12 |
리눅스) 파일 아카이브, 압축 (tar, gzip, bzip2) (0) | 2022.05.12 |