Ubuntu 22.04에서 Linux kernel 6.1.1 빌드해서 설정한 내용 정리이다. 굳이 실험정신을 억누르지 못하는게 아니라면 간단히 deb package를 다운로드 받아서 설치해도 된다.
Prerequisites
컴파일에 필요한 tool들을 설치한다.
sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm
Linux kernel code를 다운로드 받고 합축을 해제해 둔다.
wget -c https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.1.tar.xz && tar xvf ./linux-6.1.1.tar.xz
Kernel config 설정 및 build 실행
Linux kernel config를 하나하나 설정하려면 시간이 오래 걸리니 현재 잘 동작하는 있는 kernel 설정 파일을 가져와서 설정하자.
cd ./linux-6.1.1 cp /boot/config-$(uname -r) ./.config fakeroot debian/rules clean make olddefconfig
추가로, 다음과 같이 복사된 .config를 열어서 KEY 설정을 주석으로 없애주는게 좋다. 그렇지 않으면 “No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’. Stop.” 오류가 발생하면서 빌드가 멈출 것이다.
# # Certificates for signature checking # ... CONFIG_SYSTEM_TRUSTED_KEYS="" #COMMENT OUT "debian/canonical-certs.pem" ... CONFIG_SYSTEM_REVOCATION_KEYS="" #COMMENET OUT "debian/canonical-revoked-certs.pem"
모든 설정이 완료되면 빌드를 실행한다.
fakeroot debian/rules binary -j$(nproc)
Build된 패키지 설치 및 확인
빌드가 완료되면 다음과 같이 4개의 deb file들이 source code의 상위 디렉토리에 생성되었는지를 확인하고 apt 명령어로 설치 후 system을 reboot한다.
ls ../*.deb ../linux-headers-6.1.1_6.1.1-2_amd64.deb ../linux-image-6.1.1-dbg_6.1.1-2_amd64.deb ../linux-image-6.1.1_6.1.1-2_amd64.deb ../linux-libc-dev_6.1.1-2_amd64.deb sudo apt install ../*.deb sudo reboot
BIOS로 진입해서 secure boot을 disable하고 GRUB에서 새로 설치한 kernel을 선택해서 부팅한 후 다음과 같이 확인할 수 있다.
uname -a Linux <machine-name> 6.1.1 #2 SMP PREEMPT_DYNAMIC Thu Dec 29 13:15:23 KST 2022 x86_64 x86_64 x86_64 GNU/Linux