라즈베리파이에서 커널 로컬 빌드

라즈베리파이 커널 빌드는 네이티브 빌드와 크로스 컴파일 빌드로 구분된다. 이 글에서는 라즈베리파이에서 네이티브 툴체인으로 로컬에서 자체 빌드하는 방법에 대해 알아본다.

빌드 패키지 설치

먼저, git 을 포함한 커널 빌드에 필요한 몇 가지 도구와 라이브러리를 설치해야 한다. 터미널에서 다음 명령을 실행하여 필수 도구를 설치한다.

sudo apt update
sudo apt install git bc bison flex libssl-dev make

커널 내려받기(download)

라즈베리파이 github로 부터 linux kernel 소스를 git clone 으로 다운 받는다.

git clone --depth=1 https://github.com/raspberrypi/linux

소스 선택

특정 branch를 받으려면 --branch 를 지정하여 다운 받는다.

git clone --depth=1 --branch <branch> https://github.com/raspberrypi/linux

사용 가능한 branch에 대한 정보는 원본 GitHub 저장소를 참조한다.

커널 구성(config)

기본 구성

먼저 Raspberry Pi 모델에 따라 다음 명령을 실행하여 기본 구성을 준비한다.

Raspberry Pi 1, Zero 및 Zero W, Raspberry Pi 컴퓨팅 모듈 1 기본(32비트 전용) 빌드 구성의 경우:

cd linux
KERNEL=kernel
make bcmrpi_defconfig

Raspberry Pi 2, 3, 3+ 및 Zero 2W와 Raspberry Pi 컴퓨팅 모듈 3 및 3+ 기본 32비트 빌드 구성의 경우:

cd linux
KERNEL=kernel7
make bcm2709_defconfig

Raspberry Pi 4 및 400 및 Raspberry Pi Compute Module 4 기본 32비트 빌드 구성의 경우:

cd linux
KERNEL=kernel7l
make bcm2711_defconfig

Raspberry Pi 3, 3+, 4, 400 및 Zero 2W와 Raspberry Pi 컴퓨팅 모듈 3, 3+, 4 기본 64비트 빌드 구성의 경우:

cd linux
KERNEL=kernel8
make bcm2711_defconfig

Raspberry Pi 5 기본 64비트 빌드 구성의 경우:

cd linux
KERNEL=kernel_2712
make bcm2712_defconfig

LOCALVERSION 설정

.config 파일에서 CONFIG_LOCALVERSION 을 수정하여 설정한다.

CONFIG_LOCALVERSION="-v8-local"

커널 빌드(build)

커널, 모듈 및 장치 트리 Blob을 빌드하고 설치합니다. 이 단계는 사용 중인 Raspberry Pi 모델에 따라 시간이 오래 걸릴 수 있습니다. 32비트 커널의 경우:

make -j4 zImage modules dtbs
sudo make modules_install
# Choose one of the following based on the kernel version
  # For kernels up to 6.4:
  sudo cp arch/arm/boot/dts/*.dtb /boot/firmware/
  # For kernel 6.5 and above:
  sudo cp arch/arm/boot/dts/broadcom/*.dtb /boot/firmware/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/firmware/overlays/
sudo cp arch/arm/boot/zImage /boot/firmware/$KERNEL.img

64비트 커널의 경우:

make -j4 Image.gz modules dtbs
sudo make modules_install
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
sudo cp arch/arm64/boot/Image.gz /boot/firmware/$KERNEL.img

커널 설치가 완료되었으면 reboot 하여 새 커널로 부팅한다.

sudo reboot

재부팅 후 버전 확인을 해본다.

raspi@raspberrypi:~ $ uname -a
Linux raspberrypi 6.6.23-v8-local+ #1 SMP PREEMPT Thu Apr  4 13:10:34 KST 2024 aarch64 GNU/Linux

참고

답글 남기기