'uClinux'에 해당되는 글 1건

BuildRoot 시스템

linux 2011. 9. 21. 10:17
넥스지는 프로젝트 개발시 BuildRoot System 을 사용한다. 

 BuildRoot System 은 개발프로젝트 관리를 위한 프레임 웍이라고 볼 수 있는데 간단히 설명하면 하위 디렉토리에 필요한 팩키지 소스를 등록하고 그 팩키지를 컴파일하기 위한 룰을 체계적으로 관리하기 위한 툴이라고 생각하면 된다.

 크게 보면 디렉토리 구성은 아래와 같다. 

   build_mips/{프로젝트}/{소스}
   local/{ROOT 프로젝트명}/{ROOT 설정파일}
   package/{프로젝트}/{프로젝트용 makefile}

 예를 들어 
  개발 프로젝트 : OCTEON SoC based project
  사용할 소스    : libpcap-1.1.1
 
 이라고 할때 디렉토리 구성은 아래처럼 된다. 

  build_mips/libpcap-1.1.1
  local/octeon
  package/libpcap

libpcap-1.1.1 의 다운로드 사이트 정보 및 configure 옵션에 대한 설정은 package/libpcap/libpcap.mk 에 기술하게 된다.

 이렇게 준비한후 make 를 실행하면 우선 필요한 팩키지를 각 사이트로부터 다운로드 받고 자동으로 configure 를 실행한후 rootfile system 에 결과물을 복사한후 kernel 과 rootfs 를 하나로 합쳐서 결과 이미지를 만들어 내게 된다. 

 BuildRoot 시스템을 사용하면 장,단점은 다음과 같다.
 장점
  1. 모든 프로젝트 소스에 같은 환경 설정을 적용하는 것이 쉽다.
  2. SoC BSP 공급자 입장에서 SDK 제공시 편리하다. 
  3. 프로젝트 소스의 업데이트가 편리하다. 

 단점
  1. 프로젝트 전체의 크기가 너무 방대하다. 
  2. 빌드시마다 프로젝트에 관련된 소스를 해당 사이트로부터 다운로드 받고 자신이 적용한 패치를 적용해야하며(자동화 되어 있지만) 컴파일을 새로 해야 한다. 
  3. 프로젝트 빌드 과정이 너무 방대하므로 철저한 관리가 어렵다.
  4. 각 오픈소스의 신버전이 나올때마다 바로 적용해서 업데이트 해야 하는 프로젝트라면 모르겠지만 그렇지 않은 경우라면 오버헤드가 크다. 
 

 BuildRoot 형태의 프로젝트 관리는 SoC 제작사가 BSP 를 배포할 때는 유용한 방식이라고 생각한다. 

 하지만 개발사의 입장에서는 각종 공용 library 를 매번 컴파일하거나 소스레벨로 프로젝트를 들고 다닐 필요가 없으므로 괜한 오버헤드 및 관리상의 문제점만 발생시킨다고 생각된다. 

 이건 추론이지만, 처음 프로젝트를 시작하였을 때 아마, 플랫폼 개발 경험이나 프로젝트 관리에 대한 경험을 가진 분이 안 계셨던 것으로 생각된다. 그래서 BSP 로 제공한 BuildRoot 에다 일부 소스만 추가하는 형태로 시작한 것이 아닌가 한다. 

 결론은

   BSP 제공하는 입장이라면 BuildRoot 를 통해서 제공하는 것이 유리하고
   BSP 를 사용하여 실제 개발을 하는 입장이라면 BSP 를 바탕으로 새로 프로젝트 관리툴을 구축하여 사용하는 것이 유리하다.

 입니다. 


BuildRoot 홈페이지
  http://buildroot.uclibc.org/



 


 

  
 

'linux' 카테고리의 다른 글

서브버전 사용법  (0) 2011.09.21
삼바 마운트 하는법  (0) 2011.09.21
윈도우 공유 디렉토리를 리눅스에서 마운트 하는 법  (0) 2011.03.25
media player 개발  (0) 2011.02.07
X window programming site  (0) 2011.01.10
블로그 이미지

김유석0

,