Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
CAU 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

TIL

[260314] 비글본 부팅시퀀스와의 싸움, 저는 완전히 멘탈이 나가버렸습니다

sm_amoled 2026. 3. 14. 16:33

들어가며

BeagleBone Black 보드랑 놀면 하염없이 즐거울 줄 알았는데, 막상 얘도 열어보니 아주 짜릿한 난관들 천지였다.

이번 며칠동안은 BBB 보드의 부팅 과정에서 SD카드랑 eMMC로부터 부팅 차이에 대해서 싸웠다. 3주 동안 놀다가 다시 잡으니 감잡는데 오래 걸린 것도 있지만, 하루 안에 이걸 공부하고 소화해서 정리해내기는 쉽지 않은 문제였다고 생각한다.

그치만 해냈죠?

딥다이브

분명 메뉴얼에는 비글본 블랙에서 BOOT 버튼을 누른 채로 켜면 SD카드로, 버튼을 안누르면 eMMC로 부팅이 된다고 되어있다. 그런데 막상 둘 다 시도해보면 모두 SD카드에 있는 OS로 부팅이 됐다. (도대체 왜)

그리고 그 이유를 찾아냈는데, 생각치 못한 곳에 있었다. 부팅 단계별로 진행을 살펴보면 다음과 같다.

먼저 1단계, 보드에 내장되어있는 ROM Boot Loader (RBL)를 실행하면서 부팅을 시작한다. RBL은 커널을 실행하기 위해 필요한 U-Boot를 실행하기 위한 준비를 위해서, MLO를 RAM에 올리고 실행할 준비를 해야한다. (ㅋㅋ) 이때 BOOT 버튼의 누름 여부에 따라 SYSBOOT 값이 달라져서 MLO 를 가져오는 위치가 달라진다. 이게 메뉴얼에 작성되어 있는대로 eMMC로부터 가져오냐, 아니면 SD카드로부터 가져오냐를 결정한다.

2단계. RAM에 올라온 Memory Loader (MLO) / 또는 Secondary Program Loader (SPL) 에 의해 U-Boot 가 실행된다. U-Boot는 eMMC와 SD카드에 각각의 버전이 들어있다. 그래서 어떤 위치에서 가져온 MLO냐에 따라서 실행되는 U-Boot가 달라지게 된다.

3단계. U-Boot가 실행된다. 이때 U-Boot 이후에 어떤 위치에서 커널을 불러오고 RootFS를 가져올 지 결정하게 된다. 문제는 여기에 있었다!!! eMMC에서 실행된 U-Boot와 SD카드에서 실행된 U-Boot 모두 다 SD카드로 부팅을 먼저 시도하고, 실패 시 eMMC에서 부팅을 시도하도록 되어있었다.

그래서 BOOT 버튼을 눌렀는지와 상관 없이 SD카드가 끼워져있으면 냅다 SD카드로 부팅이 진행되고, SD카드가 뽑혀있을 때만 eMMC로 부팅이 되는 것이였다.

이걸 찾아가는 과정은 오늘 포스팅한 블로그 글에 정리를 해두었다. 위 정리한 내용도 다시 한 번 글머리에다가 복붙해서 넣어둬야겠다.

키워드

ROM에 내장되어 있는 RBL 부터 U-Boot → 커널 부팅까지 찬찬히 올라오면서 (이 문제의 해결을 위해서 여기에서부터 봐야할 줄 몰랐다) 회사 지원 우대사항에 있던 여러 키워드들을 잠깐 마주쳤다.

  • TrustZone Architecture
  • Secure Boot

요런 녀석들이 다큐먼트와 검색결과에서 쫌쫌따리로 슉슉 지나갔다. 아무래도 이 단게에서 분석하고 코드를 넣는게 보안 분야에서 진행하게 될 일들이 되려나 싶었다. 그래서 이번 기회에 얘네들을 살펴본게 다행인가 싶기도 했다. ㅋㅋㅋ

320x100