본문 바로가기
【Fundamental Tech】/Ubuntu

[Ubuntu 22.04] Ubuntu Kernel Compile

반응형

*참고: https://askubuntu.com/questions/1435591/correct-way-to-build-kernel-with-hardware-support-fix-patches-ubuntu-22-04-lts

Vainilla Kernel Source가 아닌 Ubuntu Kernel Source로 Kernel Compile 만들기 방법에 대해 소개합니다.

아래 방법은 Ubuntu 20.04 및 22.04에서 동작합니다.

 

1. Ubuntu Kernel Source Repository 설정

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt-get update

 

2. Compile에 필요한 Tool 설치

# Kernel Build Tool 설치
$ sudo apt build-dep linux linux-image-$(uname -r)


 - build-dep 오류가 발생하는 경우
   - 참고: https://askubuntu.com/questions/1454817/linux-generate-not-installable

# builddeps:linux-signed 오류 나는 경우
$ sudo apt build-dep linux linux-image-generic

 - 기타 필요한 Tool 설치

sudo apt install git libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm build-essential libncurses5-dev gcc bc dwarves

 

3. Ubuntu Kernel 받기

# switch to root
$ sudo su

# get the current kernel source downloaded and extracted (ignore the end user warning)
apt source linux-image-unsigned-$(uname -r)

$ cd ./linux-<version>/

# Give all user execution permissions to scripts
# (Important, otherwise error will be thrown even if you are running them as root)
$ chmod a+x debian/scripts/*
$ chmod a+x -R ./scripts

 

4. Kenel Compile

# 현재 Kernel Configuration을 내려받은 커널 소스에 적용
$ cp /boot/config-$(uname -r) ./.config
$ make oldconfig

 -  certificate error 발생하는 경우
    - 참고: https://stackoverflow.com/questions/67670169/compiling-kernel-gives-error-no-rule-to-make-target-debian-certs-debian-uefi-ce

sudo scripts/config --disable SYSTEM_TRUSTED_KEYS
sudo scripts/config --disable SYSTEM_REVOCATION_KEYS

 - Kernel Compile

# Kernel Compile
$ make -j$(nproc) deb-pkg LOCALVERSION=-custom

    -  deb-pkg 오류 발생하는 경우
       - 참고: https://unix.stackexchange.com/questions/603365/building-a-custom-kernel-in-debian

# deb-pkq 오류 나는 경우
$ make -j$(nproc) bindeb-pkg LOCALVERSION=-custom

 

5. Kernel 설치

# Kernel 설치
$ cd ..
$ dpkg -i *.deb
$ update-grub

# Reboot하고 Grub Menu에서 Kernel 선택
$ reboot

# Reboot 완료 후 Kernel 버전 확인
# LOCALVERSION에 -custom을 붙였으니 uname -r의 결과 확인
$ uname -r
반응형