← 글 목록

라즈베리파이 `sudo reboot` 부팅 실패, 그 원인과 해결 과정

/ 6분 분량

라즈베리파이에서 `sudo reboot` 명령을 실행했는데 부팅이 멈추는 황당한 경험을 했습니다. 전원선을 뽑았다 다시 꽂아야만 정상적으로 부팅되는 현상 때문에 처음에는 SD카드 문제라고 생각했지만, 진단 과정에서 예상치 못한 근본 원인을 발견하고 해결책까지 찾아나섰던 경험을 공유하려고 합니다.

학습 주제

  • 공부 주제: 라즈베리파이 sudo reboot 시 부팅 실패 원인 분석 및 해결
  • 학습 날짜: 2026년 7월 15일

탐구 과정

처음에는 sudo reboot를 실행했을 때 "can't open file" 메시지가 뜨면서 부팅이 멈추는 현상에 당황했습니다. 전원선을 직접 뽑았다 다시 꽂으면 시간이 좀 걸리더라도 정상 부팅되는 것을 보고, 가장 먼저 SD카드나 저장장치 자체에 문제가 생긴 것이 아닐까 의심했습니다. 그래서 lsblk나 dmesg 같은 명령어로 디스크 상태를 꼼꼼히 확인했습니다.

제가 사용하던 라즈베리파이는 SD카드가 아닌 USB로 연결된 128GB 저장장치로 부팅하고 있었는데, 로그를 확인해보니 파일시스템에는 즉각적인 손상 증거가 보이지 않았습니다. dmesg에서 간혹 보이던 mmc1 관련 경고 메시지도 부팅 시 흔히 나오는 무해한 메시지라는 것을 파악했습니다. 이렇게 초기 가설이었던 '저장장치 손상'은 데이터로 명확히 확인되지 않았고, 대신 '재부팅 방식에 따라 결과가 달라진다'는 점이 진짜 원인을 찾는 결정적인 단서가 되었습니다.

핵심 학습 내용

이 문제를 파고들면서 가장 중요하게 알게 된 점은 다음과 같습니다.

  • sudo reboot의 작동 방식: 라즈베리파이 환경에서 sudo reboot는 USB 포트의 전원을 완전히 차단하지 않는 소프트 리셋입니다.
  • 라즈베리파이 부트로더의 USB 인식: 라즈베리파이의 초기 부트로더(EEPROM에 저장된 코드)는 리눅스 커널이 올라오기 전에 /boot/firmware 경로의 파일을 읽어야 합니다. 이때 USB 장치 스택의 기능이 매우 제한적이라는 점이 문제의 핵심이었습니다.
  • USB 카드리더 초기화 문제: sudo reboot로는 USB 카드리더 칩이 완전히 리셋되지 않아, 부트로더가 부팅 파일을 찾지 못하고 "can't open file" 오류를 띄우며 멈춥니다. 전원을 직접 뽑았다 꽂아야만 카드리더에 전원이 완전히 끊겼다 다시 들어오면서 초기화가 제대로 이루어지고, 부트로더가 USB 장치를 인식할 시간을 벌 수 있었습니다.

이러한 문제의 근본 원인을 찾기 위해 라즈베리파이 4B의 EEPROM 설정을 확인했습니다. 제가 사용하던 기기에는 USB_MSD_STARTUP_DELAY 항목이 설정되어 있지 않아 기본값인 0으로 작동하고 있었습니다. 즉, 부트로더가 USB 저장장치가 준비되기도 전에 바로 부팅 파일을 열려고 시도하다 실패하는 구조였던 것입니다.

이를 해결하기 위해 rpi-eeprom-config --edit 명령을 사용하여 EEPROM 설정에 다음과 같은 값을 추가했습니다.

USB_MSD_STARTUP_DELAY=2

이 설정은 부트로더가 USB 저장장치를 인식하기 전에 2초간 대기하도록 하여, USB 카드리더가 초기화될 시간을 확보해줍니다.

이해한 내용

이번 경험을 통해 라즈베리파이에서 USB 장치로 부팅할 때 sudo reboot가 항상 안정적으로 작동하는 것은 아니라는 것을 명확히 이해하게 되었습니다. 특히 라즈베리파이 4B와 같이 EEPROM 설정을 통해 USB 인식 지연 시간을 조절할 수 있다는 점이 흥미로웠습니다.

간단한 sudo reboot 명령 하나가 하드웨어의 초기화 타이밍과 소프트웨어의 동작 방식 간의 미묘한 충돌 때문에 발생할 수 있다는 사실을 알게 된 것이 큰 수확입니다. 결국 문제는 SD카드나 저장장치 자체의 결함이 아니라, 소프트 리셋 시 USB 카드리더의 초기화 시간과 부트로더의 파일 접근 시점 간의 간격이 너무 짧아서 발생했다는 것을 알게 되었습니다.

실전 적용

이번 학습 내용은 다음과 같은 상황에서 유용하게 적용될 수 있습니다.

  • 라즈베리파이 원격 관리: 재부팅이 필요한 서버나 장치의 안정적인 원격 관리를 위해 sudo reboot 대신 안전한 재부팅 방안을 마련해야 할 때 도움이 됩니다.
  • USB 부팅 장치의 안정성 확보: SD카드 대신 USB 저장장치로 부팅하는 라즈베리파이 시스템의 안정성을 높이기 위한 EEPROM 설정 변경 시 참고할 수 있습니다.
  • 하드웨어/펌웨어 궁합 문제 진단: 특정 명령이나 상황에서만 문제가 발생하는 경우, 단순 소프트웨어 오류로 치부하기보다 하드웨어의 초기화 타이밍이나 펌웨어와의 상호작용을 의심해 볼 필요가 있다는 점을 배웠습니다.

실습 계획:
이번 경험을 바탕으로, 추가적인 USB SSD를 준비하여 카드리더를 거치지 않는 구성으로 시스템을 클론한 후, sudo reboot 명령이 안정적으로 작동하는지 직접 테스트해보고 싶습니다. 또한, USB_MSD_STARTUP_DELAY 값을 다르게 설정하면서 그 효과를 비교해보는 것도 좋은 실습이 될 것 같습니다.

추가 학습 계획

이번 사건으로 인해 라즈베리파이의 부팅 과정과 EEPROM 설정에 대한 관심이 생겼습니다.

  • 라즈베리파이 부트로더 심층 학습: EEPROM 설정 옵션들과 각 옵션이 부팅 과정에 미치는 영향에 대해 더 자세히 알아보고 싶습니다.
  • rpi-eeprom-config 상세 기능 탐색: 이 도구를 활용하여 부팅 관련 설정을 더욱 정밀하게 제어하는 방법에 대해 공부할 예정입니다.
  • USB 부팅 관련 안정성 강화: SD카드보다는 USB 저장장치로 부팅할 때 발생할 수 있는 다양한 잠재적 문제점과 해결 방안에 대해 추가적으로 자료를 찾아볼 계획입니다.