Raspberry Pi 5 커널 소스 빌드와 커스텀 커널로 부팅하기

대상: Raspberry Pi 5용 리눅스 커널을 직접 수정·빌드하거나, 드라이버를 추가해 테스트하려는 개발자
환경: Raspberry Pi 5 + Raspberry Pi OS (Bookworm / Debian 12 기반, 64-bit)
빌드 환경: Raspberry Pi 5 자체 빌드 또는 Ubuntu 22.04 x86_64 크로스 빌드


1. 문제/주제 요약

Raspberry Pi 5는 기존 모델과 달리 BCM2712(ARM Cortex-A76) 기반 SoC를 사용하며,
이에 따라 커널 구조가 linux-rpi-6.1 계열로 바뀌었다.

기존 Raspberry Pi 4에서 사용하던 커널 빌드 스크립트나 설정(make bcm2711_defconfig)이 그대로 동작하지 않는다.
이 글에서는 Pi 5에 맞는 커널 소스 빌드 및 커스텀 커널 부팅 절차를 정리한다.


2. 원인/배경 설명

Raspberry Pi OS는 Debian 기반으로 배포되며, 커널은 Raspberry Pi 재단에서 관리하는 fork 버전을 사용한다.

커널 수정/드라이버 추가 시 직접 빌드해야 하며,
빌드 결과물(Image, .dtb, .dtbo, modules)을 /boot/firmware/lib/modules 경로에 반영하면 커스텀 커널로 부팅 가능하다.


3. 커널 빌드 및 적용 단계

(1) 필수 패키지 설치

sudo apt update
sudo apt install -y git bc bison flex libssl-dev make libc6-dev libncurses5-dev crossbuild-essential-arm64

만약 Pi 5에서 직접 빌드하는 경우 crossbuild-essential-arm64는 불필요하다.


(2) 커널 소스 클론

cd ~
git clone --depth=1 --branch rpi-6.6.y https://github.com/raspberrypi/linux.git
cd linux

(3) 기본 설정 로드

Raspberry Pi 5용 기본 설정은 bcm2712_defconfig 이다.

KERNEL=kernel_2712
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2712_defconfig

bcm2711_defconfig는 Pi 4용,
bcm2712_defconfig는 Pi 5 전용.


(4) 커널 빌드

Raspberry Pi 5 자체 빌드:

make -j$(nproc)
make modules -j$(nproc)
make dtbs

크로스 빌드(Ubuntu x86_64 → Pi 5):

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules -j$(nproc)
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs

빌드 완료 후 생성 파일:

arch/arm64/boot/Image
arch/arm64/boot/dts/broadcom/*.dtb
arch/arm64/boot/dts/overlays/*.dtbo

(5) 모듈 설치

sudo make modules_install

/lib/modules/<kernel-version>/ 에 설치됨.


(6) 커널 및 디바이스 트리 복사

부트 파티션(/boot/firmware 또는 /boot)에 복사:

sudo cp arch/arm64/boot/Image /boot/firmware/kernel_2712_custom.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
sudo cp arch/arm64/boot/dts/overlays/*.dtbo /boot/firmware/overlays/

(7) 부트 설정 변경 (config.txt)

sudo nano /boot/firmware/config.txt

다음 줄 추가:

[pi5]
kernel=kernel_2712_custom.img

필요 시 기존 커널 백업:

[pi5]
kernel=kernel_2712.img
# kernel=kernel_2712_custom.img

(8) 부팅 및 확인

재부팅:

sudo reboot

부팅 후 커널 버전 확인:

uname -a

예시 출력:

Linux raspberrypi 6.6.15-v8+ #1 SMP PREEMPT ... aarch64 GNU/Linux

빌드한 버전명(-custom, -dev)이 나오면 성공적으로 커스텀 커널이 적용된 것이다.


4. 추가 팁 / 자주 하는 실수

문제 상황원인해결 방법
부팅 실패 (검은 화면)잘못된 kernel= 경로/boot/firmware/ 아래 실제 파일명 확인
/lib/modules/ 버전 불일치새 커널과 모듈 빌드 불일치make modules_install 다시 실행
dtb 미복사디바이스 트리 누락make dtbs && cp 단계 재확인
부팅 후 Wi-Fi/BT 안됨펌웨어 불포함/lib/firmware/brcm/ 경로 유지
커널 이름 충돌기존 kernel_2712.img 덮어씀새 이름(kernel_2712_custom.img)으로 관리

5. 정리

  • Raspberry Pi 5는 bcm2712 기반으로 커널 브랜치가 rpi-6.6.y 이다.
  • 빌드 시 bcm2712_defconfig 를 사용하고, Image, dtb, modules 세 가지를 반드시 모두 설치해야 한다.
  • /boot/firmware/config.txtkernel=... 옵션을 추가하면 커스텀 커널로 부팅 가능하다.
  • 드라이버 테스트, 리얼타임 패치(RT), 또는 보안 기능 추가 시 매우 유용하다.

댓글 남기기