U-boot 컴파일하기는 BeagleBone Black용 부트로더를 직접 빌드하는 작업이다.
이 글은 U-Boot 빌드 순서를 처음부터 다시 따라가면서 distclean, defconfig, menuconfig, make까지 한 번에 정리한다.
부트로더를 직접 만지면 겁부터 날 수 있는데, 순서만 맞추면 생각보다 단순하다.
이 작업은 결국 보드에 맞는 설정 파일을 고르고, 빌드하고, 결과물을 확인하는 작업이다. 먼저 크로스 툴체인 설치 방법을 맞춰두면 U-boot 컴파일하기가 훨씬 덜 헷갈린다.
U-Boot 빌드 전에 볼 것
먼저 작업 환경이 맞는지 확인한다. 소스 트리에서 예전 설정이 남아 있으면 빌드가 꼬일 수 있으니, 시작 전에 clean부터 하는 게 맞다.
이 작업을 제대로 하려면 보드 이름, defconfig 이름, 툴체인 경로를 같이 봐야 한다. 여기서 하나라도 틀리면 결과물이 나와도 부팅이 안 될 수 있다.
공식 문서도 같이 보면 좋다. U-Boot 공식 문서에는 빌드 흐름과 설정 방식이 정리돼 있다. 외부 자료를 같이 보는 이유는, 보드별 옵션이 달라질 수 있기 때문이다.
이 작업은 결국 문서와 실제 설정을 같이 보는 습관이 중요하다.
U-Boot 빌드 순서
기본 순서는 비슷하다. distclean으로 흔적을 지우고, defconfig로 기본 설정을 잡고, 필요하면 menuconfig로 손보고, make로 결과물을 만든다. 여기서 중요한 건 명령을 외우는 게 아니라, 각 단계가 왜 필요한지 아는 것이다. 부트로더 빌드를 할 때는 설정값 하나가 전체 부팅 흐름을 바꿀 수 있다.
BeagleBone Black 기준으로는 보드에 맞는 설정을 먼저 잡아야 한다. 설정이 틀리면 부팅이 안 되고, 부팅이 되더라도 환경값이 원하는 대로 안 먹을 수 있다.
그래서 이 작업은 항상 설정과 결과를 같이 확인해야 한다. 빌드 결과물만 보는 게 아니라, 실제 보드에서 올라오는지도 같이 봐야 한다.
U-boot 컴파일하기에서 확인할 것
- 보드에 맞는 defconfig 이름
- 툴체인 경로
- 빌드 결과물 위치
- 환경변수와 부트 옵션
이 네 가지만 맞으면 빌드는 어렵지 않다. 이걸 할 때 자주 틀리는 건 명령 자체보다도 경로와 보드 설정이다. 그래서 한 번 성공한 뒤에도 같은 순서로 다시 확인하는 습관이 필요하다.
이 작업을 여러 번 반복하다 보면, 결국 실수는 거의 같은 지점에서 난다.
정리하면 이 작업은 clean, config, build, verify 순서로 보면 된다. 이 순서만 지키면 부트로더 빌드가 훨씬 덜 헷갈린다. BeagleBone 쪽 글을 같이 보려면 BeagleBone 리눅스 빌드하기도 같이 보면 흐름이 이어진다.
안녕하세요, 글 잘 읽었습니다.
u-boot는 부트로더 제작에 쓰이는 건가요?
종우님 안녕하세요.
uboot은 Universal Boot Loader의 약어로서, bootloader 제작 용도라기 보단 bootloader로서 쓰입니다. 자세한건 아래 위키 참고 부탁 드립니다.
https://en.wikipedia.org/wiki/Das_U-Boot