본문 바로가기
[ Laboratory ]/System Software & Storage

[Linux Kernel] 리눅스 커널 버전 업그레이드 빌드

by dev charlotte 2024. 7. 30.

 

0. 현재 커널 버전 확인 명령어

기존 커널 버전이 5.15.0 버전이었는데
최근 논문 세미나에서 발표했던 논문의 evaluation을 재현하려고 하니
6.2 버전 이상의 리눅스 커널이 필요해서 업그레이드 해야했다

 

1. 기존 커널의 config 복사하는 방법

sudo cp /boot/config-$(uname -r) .config 
를 실행하면 이전에 사용하던 커널의 .config 를 복사해서 사용할 수 있다
 
나는 이전에 사용했던 5.5.x  버전의 .config 파일을

이 사진처럼 복사해서 사용하려고 했었으나 
 

1-1. 커널 버전 갭이 큰 경우 발생하는 문제 

기존에 가지고 있던 .config 파일을 이용해서 컴파일하려고 하니까 
sudo make modules 명령어 실행까지는 오류가 발생하더라도 진행되는데 
그 이후 명령어는 전혀 진행되지 않는 문제가 있었다

 
원인은
.config 파일의 버전 갭이 크기 때문이었다
 
새로 컴파일하려는 버전은 6.6.x 였기 때문에 차이가 커서 실행되지 않은 것이다
 

1-2. 해결 방법 ( linux-6.6.x 버전 .config)

그래서 랩실 선배님의 6.6.x 커널에서 돌아가는 .config 파일을
설치할 리눅스 디렉토리에 받아서 새 .config에 복사하고 진행했다
.config 파일 링크 https://github.com/devCharlotte/linux-6.6.43-config.git

 
 

2. make menuconfig

 
.config 파일을 복사했으니 menuconfig를 make 하는데
GUI 메뉴 형식의 커널 환경 설정 화면에 들어가면 하단 우측에 load가 있으니 
불러오기를 한 후 exit을 하면 불러오기 한 .config로 저장된다
 
GUI 형식이 아닌 CLI를 이용할 것이라면 make config로도 할 수 있다
 

3. make bzImage

이제 실제로 실행되는 커널을 빌드하는 bzImage 명령어를 사용한다
-j 옵션을 사용해서 명령어 수행할 때 사용할 코어 개수를 높여주었다
코어 개수를 적게 할당하면 n시간 걸린다고 한다

3-1. 코어 개수 확인 방법

코어 개수를 확인하는 방법은 아래 그림처럼
nproc 이나 grep -c processor /proc/cpuinfo 를 입력하면 된다

 

4. make modules

커널에서 사용할 모듈을 빌드하는 make modules
 

5. make modules_install

컴파일된 모듈을 설치하는 make modules_install 

여기까지는 오래 걸리는 명령어이기 때문에 -j 옵션으로 코어 개수를 높여주는 것이 좋다
 

6. make install

부트 스트랩에 새롭게 바뀐 설정들을 알려주는 make install
 

7. update-grub & reboot

모두 수행한 후 재부팅하면 끝!
 

8. 끝 !! 서버 접속해서 확인하기

재부팅하고 바로 서버에 접속하면

connection refused 나 resource temporarily unavailable 이 뜰 수 있는데
조금 기다리면 접속이 가능하다
 
접속하고 버전을 확인해보면

6.6.43 뒤에 붙는 것은 내가 설정한 extra version 이름이다
 

9. extra version 추가하기 

설정하려면 vim으로 Makefile을 열어서 맨 위 문단의 extra version 에 값을 주면
커널 버전 뒤에 이름을 붙일 수 있다

 
 
 

 

728x90