들어가며
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
요런 녀석들이 다큐먼트와 검색결과에서 쫌쫌따리로 슉슉 지나갔다. 아무래도 이 단게에서 분석하고 코드를 넣는게 보안 분야에서 진행하게 될 일들이 되려나 싶었다. 그래서 이번 기회에 얘네들을 살펴본게 다행인가 싶기도 했다. ㅋㅋㅋ
'TIL' 카테고리의 다른 글
| [260326] 암호를 공부하기 시작했어요 (1) | 2026.03.26 |
|---|---|
| [260309] 오랜만에 느껴보는 서늘하고도 묵직한 감각 (2) | 2026.03.09 |
| [260218] 텔레칩스 임베디드 스쿨 1000시간 종료와 회고, 리뷰 (7) | 2026.02.18 |
| [260202] Day 173 - 뚫어라 Ad-Hoc의 벽 (1) | 2026.02.03 |
| [260201] Day 172 - 미루고 미뤘던 TIL과 2차 프로젝트의 진행 중 회고 (0) | 2026.02.02 |