운영체제(OS)

[Linux] Linux Kernel Compile 리눅스 커널 컴파일 하는법

아뵹젼 2021. 9. 14.

 

현재 커널 버전 확인

uname -r

 


커널 소스 가져오기

현재 기준 5.13.12이 가장 최신 버전이다.

wget은 웹으로부터 파일이나 디렉토리를 다운로드할 수 있는 명령어이다.

혹은, 직접 홈페이지에서 소스를 다운받고, 디렉토리로 이동해도 같은 결과일 것이다.

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

 

 


커널 소스를 컴파일 할 디렉토리를 생성

루트 명령을 갖는 sudo -s 를 입력한 후, mkdir 로 컴파일 할 디렉토리를 생성한다.

ls 명령어로 커널 소스가 잘 들어갔음을 확인할 수 있다.

그런 후, 만든 디렉토리로 이동한다.

sudo -s
mkdir /usr/src/linux
cp linux-5.13.12.tar.xz /usr/src/linux
cd /usr/src/linux
tar -xf linux-5.13.12.tar.xz

 

 

 


라이브러리 설치

먼저 설치되어 있는 모든 패키지를 최신 버전으로 업데이트한 후, 커널 패키지 라이브러리를 설치한다.

 

sudo apt-get update
apt-get install vim make gcc kernel-package libncurses5-dev bison flex libssl-dev

 


커널 Configuration 파일 (.config) 생성

cd linux-5.13.12
cp /boot/config-5.4.0-74-generic ./.config
sudo make menuconfig

압축을 해제한 디렉토리로 이동한다.

 

아까 uname –r 명령어를 통해 기존 커널의 버전을 확인하였다.

cp (복사) 명령어를 통해 /boot/config-(기존 커널 버전) 을 .config 란 이름으로 새롭게 컴파일할 디렉토리에 복사한다.

 

그런 다음, 새로 설치할 커널의 설정 파일로 변경한다.

나는 처음에 Your display is too small to run Menuconfig 라는 오류가 나서, 구글링 해봤더니
menuconfig를 실행하기 위해서는 최소 19줄, 80글자 이상의 터미널 창이 되야 한단다. 

즉, 터미널 창만 키우면 된다!

 

이런 화면이 나오는데, Load -> OK, Save -> OK, Exit 로 빠져나오면 된다.

 

 


커널 컴파일 실행 (1)

make-kpkg --initrd --revision=1.0 kernel_image

명령어를 실행하여 커널 이미지를 생성해준다. 시간은 환경에 따라 다른데 몇 시간 정도 소요된다고 한다.

도중에 이런 에러가 발생하였다.

scripts/config --disable SYSTEM_TRUSTED_KEYS 을 입력하고 다시 컴파일 하면 된다고 한다.

그런데,,, 나는 다시 컴파일 해도 아예 진행이 되지 않고 계속 멈춤 상태인 것이다.

그래서 다른 컴파일 방법으로 시도했다..............

 


커널 컴파일 실행 (2)

sudo make
sudo make modules_install
sudo make install

휴... 시간이 엄청 오래 걸린다.... 30분~1시간 정도 기다린 것 같다.

-j (core수) / ex) -j 4 같은 옵션을 주면 여러개의 core로 실행되어 조금 더 빨리 완료할 수 있다.

 

다음으로 sudo make modules_install -> sudo make install 을 차례로 진행했다.

 

 

이제 모든 것은 끝났다!!!! 휴... 얼마나 삽질을 했는지ㅠㅠㅠ

sudo reboot 로 재부팅 하고 커널 버전 확인을 한 결과!!!

 


무려 5시간의 대장정이다.... 

커널 설치 중 꼬여서 우분투를 새로 깔고 난리를 쳤다.

그리고 커널 컴파일 하는데 거의 20G 정도 쓴 것 같다.. 용량이 넉넉한지 체크 필수!

 

 

**두 세 번의 커널 컴파일 실패로부터 성공까지의 산전수전**

1) 처음에 컴파일이 잘 되는가 싶더니 거의 1시간 가량 되었을 때, 저장용량이 없다고 알림이 울렸다....

분노를 가다듬고 하드디스크 용량을 50G 정도로 넉넉하게 잡아주었고, 메모리도 1G->4G 로 늘려주었다!!!!!

* 메모리가 작을 시 아예 부팅할 때부터 kernel panic not syncing 라고 뜨더라....

그리고 -j 옵션을 써서 더 빨리 컴파일 하기 위해 프로세스도 4개로 설정하였다.

 

2) make-kpkg --initrd --revision=1.0 kernel_image 방법이 나한텐 먹히지 않았다 ㅠㅠ

그래서 make, make modules_install ,make install 방법을 사용했다.

 

3) 마우스 움직임이 없을 시 자동으로 화면이 잠기고, 잠금으로 돌아가는 것을 해제하였다.

컴파일하는데 무지무지 오랜 시간이 걸리기 때문에 백그라운드에서 잘 돌아가라고, 그리고 매번 잠금 해제하는 것이 귀찮아서 해제했다.

설정 -> power 에서 시간 제한을 주지 않았고, privacy -> screen lock 을 해제하였다.

 

 

댓글