buildroot 사용해보기는 리눅스 루트파일시스템을 직접 하나씩 맞추기 귀찮을 때 꽤 유용하다. 툴체인, BusyBox, 패키지, 파일시스템 이미지를 한 번에 잡아주는 느낌이라서 BeagleBone 실습에 잘 맞는다.
buildroot는 이름 그대로 빌드용 도구 모음이다. 복잡한 배포판을 그대로 가져오는 대신, 내가 필요한 것만 골라서 rootfs를 만드는 방식이다.
왜 buildroot를 쓰나
BeagleBone 리눅스 빌드하기를 하다 보면 rootfs를 어디서부터 손대야 할지 애매할 때가 있다. 그럴 때 buildroot를 쓰면 전체 흐름이 빨라진다. 설정하고 빌드하면 BusyBox, 라이브러리, 파일시스템 이미지까지 같이 만들어진다.
그래서 이 글은 buildroot가 무엇인지보다, 실제로 어떻게 시작하는지에 초점을 둔다.
진행 순서
- 소스를 받는다.
- make menuconfig로 옵션을 고른다.
- 타겟 보드와 툴체인을 맞춘다.
- 빌드한다.
- 결과물 rootfs를 보드에 반영한다.
이 과정은 크로스 툴체인 설치와 함께 보면 훨씬 자연스럽다. 그리고 결과를 실제로 띄우려면 NFS 프로토콜 사용해보기도 같이 보는 게 좋다.
실습할 때 보는 포인트
buildroot는 설정이 많다. 처음부터 다 만지기보다 보드, 툴체인, 패키지 정도부터 시작하는 게 낫다. 특히 BusyBox 옵션과 rootfs 구성은 서로 연결되니까, 필요 없는 걸 너무 많이 넣지 않는 편이 좋다.
또 buildroot는 재빌드가 생각보다 오래 걸릴 수 있다. 그래서 한 번 설정을 잘 잡아두는 게 중요하다. 괜히 설정 파일을 여기저기 손대면 다음에 또 다시 맞춰야 한다.
주의할 점
buildroot는 편하지만, 설정이 잘못되면 왜 안 되는지 찾는 데 시간이 걸린다. 그래서 빌드 전에 defconfig와 toolchain 옵션을 먼저 확인하자. 그리고 만들어진 rootfs가 실제 보드에서 올라가는지까지 꼭 확인해야 한다.
정리
buildroot 사용해보기는 리눅스 실습에서 꽤 효율적인 방법이다. 처음엔 좀 복잡해 보이지만, 익숙해지면 rootfs 만드는 속도가 확 빨라진다.
실행 체크
buildroot는 한 번 맞춰두면 편하지만, 처음 설정할 때는 손이 많이 간다. 그래서 완성도를 높이기보다, 먼저 돌아가는 최소 구성을 만드는 쪽이 낫다. BusyBox와 툴체인만 먼저 맞춰도 시작은 된다.
이후에는 필요한 패키지만 하나씩 늘리면 된다. rootfs가 갑자기 커지면 어디서 무거워졌는지 보기도 어려우니까, 처음부터 크게 잡지 않는 게 좋다.
- 최소 구성부터 시작
- 패키지는 나중에 추가
- NFS로 빠르게 테스트
buildroot를 쓸 때는 너무 많은 걸 한 번에 넣지 않는 게 좋다. 최소 구성으로 먼저 부팅해 보고, 그다음 필요한 패키지를 하나씩 추가하면 원인 추적이 쉬워진다. 이 방식이 생각보다 오래 간다.