대상: 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 버전을 사용한다.
- 공식 저장소: github.com/raspberrypi/linux
- Raspberry Pi 5 기준: branch →
rpi-6.6.y
커널 수정/드라이버 추가 시 직접 빌드해야 하며,
빌드 결과물(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.txt에kernel=...옵션을 추가하면 커스텀 커널로 부팅 가능하다.- 드라이버 테스트, 리얼타임 패치(RT), 또는 보안 기능 추가 시 매우 유용하다.