부트 과정: 전원부터 로그인까지
부트 ROM, U-Boot, 리눅스 커널, 루트 파일 시스템, init 순서로 올라옵니다. 어디서 멈췄는지 알면 문제가 좁혀집니다.
| 단계 | 하는 일 | 확인 방법 |
|---|---|---|
| 1. 부트 ROM | 칩 내장. 부트 핀이나 퓨즈에 따라 SD/eMMC/USB에서 첫 로더 로드 | 시리얼 출력 없음이 정상인 경우 많음 |
| 2. SPL / 1단 로더 | DRAM 초기화 | "U-Boot SPL" 메시지 |
| 3. U-Boot | 커널, 디바이스 트리, initramfs를 메모리에 올리고 실행 | U-Boot 프롬프트 |
| 4. 커널 | 하드웨어 초기화, 드라이버 로드, 루트 파일 시스템 마운트 | dmesg 메시지 |
| 5. init (systemd 등) | 서비스 시작 | 로그인 프롬프트 |
시리얼 콘솔이 생명줄
보드 디버그 UART를 USB-시리얼로 PC에 연결해 두면 어느 단계에서 멈췄는지 바로 보입니다. 네트워크가 안 올라와도 시리얼은 됩니다.
U-Boot에서 할 수 있는 것
- 환경 변수로 커널 인자(
bootargs) 변경 - TFTP로 네트워크에서 커널을 받아 부팅 → 빌드할 때마다 SD 카드를 다시 굽지 않아도 됨
- 메모리, 저장장치 테스트
부팅 시간 줄이기
필요 없는 드라이버와 서비스 제거, 커널 압축 방식 변경, 빠른 화면 표시가 필요하면 U-Boot 단계에서 스플래시. 차량용 리눅스는 후방 카메라처럼 수 초 안에 떠야 하는 기능 때문에 부팅 최적화가 중요합니다.