대상: Raspberry Pi 5에서 커널 모듈, DTB(Device Tree), 오버레이를 직접 수정하거나 커스텀 빌드한 뒤 부팅이 멈추는 개발자
환경: Raspberry Pi 5 + Raspberry Pi OS / Ubuntu / 기타 리눅스 기반
1. 문제 상황 요약
다음과 같은 상황일 때 부팅이 중단되거나 “무한 부팅 루프”에 빠지는 경우가 많습니다 👇
/boot/firmware/config.txt수정 중 오타 또는 잘못된dtoverlay=지정- 잘못된
.dtbo/.dtb파일 교체 - 직접 빌드한 커널 이미지를
/boot/firmware/에 덮어쓴 뒤 커널 패닉 initramfs또는 커널 모듈 버전 불일치
Raspberry Pi 5는 U-Boot 없이 firmware(bootloader) 가 직접 config.txt와 kernel8.img(또는 Image)를 읽기 때문에, 설정이 잘못되면 즉시 부팅이 중단됩니다.
2. 증상별 징후
| 증상 | 원인 가능성 |
|---|---|
| 빨간 LED만 켜지고 화면 출력 없음 | bootloader가 kernel 로드 실패 |
| 무한 부팅 (무늬 없는 검은 화면 반복) | config.txt 문법 오류 |
| “Error applying overlay … err: -FDT_ERR_BADMAGIC” | .dtbo 파일 손상 |
| 커널 패닉 메시지 | 커널 이미지 혹은 모듈 버전 불일치 |
정상 부팅되지만 /dev 장치 없음 | DT/overlay가 잘못되어 하드웨어 미등록 |
3. 복구 개요
핵심 복구 아이디어:
“문제가 된 SD카드를 다른 컴퓨터에서 마운트 →
/boot/firmware/(또는/boot/) 수정 → 다시 부팅”
즉, 부트 파티션은 FAT32 형식이라 Windows, macOS, Ubuntu 어디서나 수정 가능합니다.
4. 복구 단계
(1) SD 카드 외부 PC에 연결
Raspberry Pi OS 기준, 다음 파티션 두 개가 보입니다:
- boot (또는 firmware) → FAT32 (config.txt, dtb, overlays 등 존재)
- rootfs → ext4 (루트 파일 시스템)
일반적인 경로:
/media/<user>/boot/firmware/
/media/<user>/rootfs/
(2) config.txt 원복 또는 비활성화
문제의 원인이 오버레이/커널 지정이라면/boot/firmware/config.txt를 열어서 수정 전으로 복구합니다.
예시 — overlay 비활성화:
# dtoverlay=my_custom_overlay
커널 직접 지정 해제:
# kernel=my_custom_kernel8.img
오버레이 디버그 활성화:
문제가 무엇인지 추적하려면 아래 줄을 추가해도 됩니다:
dtdebug=1
→ 다음 부팅 시 serial console 또는 dmesg 로그에 overlay 적용 과정 출력.
(3) DTB/DTBO 복원
- Raspberry Pi 공식 커널 패키지에서 기본 DTB를 복사
예:/boot/firmware/bcm2712-rpi-5-b.dtb(Pi 5용) - 백업해둔 원본으로 덮어쓰기:
sudo cp bcm2712-rpi-5-b.dtb.bak /boot/firmware/bcm2712-rpi-5-b.dtb - 사용자
.dtbo가 문제라면/boot/firmware/overlays/폴더에서 제거 또는 이름 변경:sudo mv my_overlay.dtbo my_overlay.bak
(4) 커널 이미지 복구
커널 업데이트 중 문제가 생겼다면, 이전 버전으로 되돌릴 수 있습니다.
Raspberry Pi OS 기준 명령어:
sudo apt install --reinstall raspberrypi-kernel
💡 이 명령은
/boot/firmware/내의 커널, 모듈, DTB를 공식 버전으로 복구합니다.
외부에서 SD를 마운트했다면, 루트 파티션을 chroot로 진입한 뒤 수행할 수도 있습니다.
(5) SSH나 UART 콘솔로 부팅 로그 확인
만약 부팅은 되지만 화면이 안 뜨는 경우,
UART 콘솔로 연결하면 커널 초기 로그를 직접 볼 수 있습니다.
UART 켜기:
config.txt에 추가:
enable_uart=1
핀헤더 (GPIO 14/15) → USB-Serial 연결 후:
sudo screen /dev/ttyUSB0 115200
이때 dtdebug=1 설정도 같이 있으면, DT 적용 과정이 콘솔로 출력됩니다.
(6) 마지막 수단 — 공식 Recovery 이미지로 복원
Pi 5는 부트 EEPROM이 손상되면 “녹색 LED 깜박임 패턴”으로 표시합니다.
이 경우 Raspberry Pi Imager → Recovery Mode 로 SD카드를 다시 플래시하면 됩니다.
절차:
- Raspberry Pi Imager 실행
- “Operating System” → “Misc utility images” → “Bootloader” → “Raspberry Pi 5 EEPROM boot recovery” 선택
- SD 카드에 기록 후 Pi에 삽입 → 부팅
- 녹색 LED가 10초 정도 깜박이면 복원 완료
- 정상 OS를 다시 설치
5. 빠른 복구용 팁 (정리)
| 문제 상황 | 조치 |
|---|---|
dtoverlay 잘못 지정 | config.txt에서 주석 처리 |
.dtbo 손상 | /boot/firmware/overlays/ 에서 삭제 |
| 커널 패닉 | sudo apt reinstall raspberrypi-kernel |
| U-Boot / Kernel 교체 후 부팅 안 됨 | 기본 커널로 복원 |
| DTB 수정 후 화면 출력 없음 | 원본 bcm2712-rpi-5-b.dtb 로 교체 |
| EEPROM 손상 | Raspberry Pi Imager Recovery 모드 사용 |
6. 복구 후 점검
정상 부팅되면 아래로 확인합니다 👇
uname -a # 커널 버전 확인
vcgencmd bootloader_version # 부트로더 버전 확인
ls /boot/firmware/overlays/ # overlay 목록 확인
dmesg | grep -i dtb
7. 안전하게 실험하는 팁
- 항상 원본 백업:
sudo cp /boot/firmware/bcm2712-rpi-5-b.dtb{,.bak} sudo cp /boot/firmware/config.txt{,.bak} - 별도 테스트 파티션에서 실험:
- SD카드 두 개를 번갈아 사용하거나,
/boot/firmware/전체를 USB 드라이브에 복제
- Overlay 실험 시에는 부팅 전 검증:
dtc -I dts -O dtb -@ my_overlay.dts -o test.dtbo fdtdump test.dtbo - U-Boot 사용 중이라면:
DTB를/boot/dtb/에 따로 두고extlinux.conf수정으로 rollback이 쉽습니다.
8. 요약
| 단계 | 핵심 조치 |
|---|---|
| ① | SD카드 외부 PC에서 /boot/firmware/config.txt 수정 |
| ② | 문제 오버레이 / 커널 지정 해제 |
| ③ | 원본 DTB / 커널 복구 (apt reinstall raspberrypi-kernel) |
| ④ | dtdebug=1, enable_uart=1 로 진단 로그 확보 |
| ⑤ | 최악의 경우 EEPROM Recovery 이미지로 복원 |
📌 핵심 요약
- Pi 5 부팅 실패 시 /boot/firmware 수정만으로 대부분 복구 가능
- Overlay 실험 전 반드시 백업 (
config.txt,dtb,dtbo) dtdebug=1+ UART 콘솔로 원인 파악- 부트로더까지 손상됐다면 Raspberry Pi Imager의 EEPROM 복원 모드 사용