개인 공부/리눅스

커널 컴파일(Ubuntu)

RyoTTa 2020. 12. 18. 22:19
반응형

Centos Ubuntu 18.04,

 

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

$ uname -r

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

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

 

$ cd /usr/src

$ 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. 컴파일에 필요한 패키지 설치

$ apt install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev

 

4. config 파일 수정

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

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

 

# ls /boot/config*

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

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

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

 

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

# make menuconfig 

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

 

5. 커널 컴파일

$ make-kpkg --J(Core개수) --initrd --revision=1.0 kernel_image

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

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

$ grep -c processor /proc/cpuinfo

사용하면 된다.

 

revision 은 차후 동일한 커널을 재 컴파일할때 2.0 3.0등 원하는 버전으로 수전해주면 된다.

 

컴파일이 완료되면 현재 디렉토리의 상위 폴더에 .deb 파일이 생성된다.

# cd ..

# dpkg -i kernel_image-version.deb 

통해서 새로운 커널 이미지를 설치하면 된다.

 

$ reboot

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

 

6. GRUB Configuration

만약 재부팅후 커널 버전이 바뀌지 않거나, 버전을 선택하는 GRUB이 나타나지 않는다면

 

$ vi /etc/default/grub

를 사용해 GRUB config를 수정한다.

 

GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUOT=0

위와 같은부분을 앞에 #을 추가하여 무시하도록 설정한다.

 

모두 수정한 후 GRUB update를 한다.

$ update-grub

 

 

7. 만약 커널과 커널 모듈을 따로 컴파일 할때

 

$ make -j(Core 개수)

$ make modules_install

$ make install

$ reboot

 

단순 커널파일만 재 컴파일 하고, 수정하고 싶을때

 

$ make bzImage -j(Core 개수)

$ cp archcp arch/x86/boot/bzImage /boot/vmlinuz-(kernel_version)

$ reboot

 

반응형

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

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
커널 컴파일(CentOS)  (0) 2020.12.17