SW 개발

yocto 빌드관련 결과물 제어하기 (하드디스크절약)

. . . 2022. 8. 31. 15:02
반응형

-tags : #yocto

yocto 에서 빌드과정중에 생성되는 object 나 configure 관련 파일들, 혹은 소스코드 fetch 등을 제어할 수 있다.

1 rm_work 옵션

1.1 간략설명

  1. yocto 를 통해서 빌드하다 보면 각 레시피마다 build 디렉토리가 생성되며, 소스코드와함께 빌드과정중에 생성되는 파일들을 모두 하드디스크에 저장하게된다.
  2. 물론 개발과정중에는 이러한 과정등을 보는것이 좋다. (코드, configure 추적하기등등)
  3. 하지만 단순 빌드머신등에서는 해당 임시결과물들이 필요없을수있다.
  4. 임시결과물이 필요없을 경우 INHERIT += "rm_work" 옵션을 통해서, 임시결과물들을 바로바로 삭제하게 하여 하드디스크 절약 및 빌드속도를 올릴 수있다.
  5. INHERIT += "rm_work" 을 세팅하고, 디버깅이 필요한 레시피가 있다면 RM_WORK_EXCLUDE을 세팅하여 해당 레시피만 임시결과물을 생성하도록한다.

1.2 세팅방법

set_env 명령어등을 한 후에 생성되는 build/conf/local.conf 파일에 다음의 라인을 추가한다.

INHERIT += "rm_work"

set env 명령어 초기부터 세팅하게 하려면, 관련 보드 레시비의 경로의 class 폴더에 대부분 전역설정파일이 있을것이다. 해당부분에 추가하면된다.

또한 동일파일에 RM_WORK_EXCLUDE += your_library 와 같이 설정하면 your_library 레시피에 대해서는 임시결과물을 생성하게 할 수있다.

1.3 관련 레퍼런스

  • yocto 관련 매뉴얼 : https://docs.yoctoproject.org/1.8/ref-manual/ref-manual.html#ref-classes-rm-work
7.107. rm_work.bbclass
rm_work 클래스는 임시 작업 공간 삭제를 지원하므로 빌드 중 하드 드라이브 요구 사항을 완화할 수 있습니다.

OpenEmbedded 빌드 시스템은 빌드 프로세스 중에 상당한 양의 디스크 공간을 사용할 수 있습니다. 이 공간의 일부는 각 레시피에 대한 $\TMPDIR\/work 디렉토리 아래의 작업 파일입니다. 빌드 시스템이 레시피 패키지를 생성하면 해당 레시피의 작업 파일은 더 이상 필요하지 않습니다. 그러나 기본적으로 빌드 시스템은 검사 및 가능한 디버깅 목적으로 이러한 파일을 보존합니다. 빌드가 진행됨에 따라 디스크 공간을 절약하기 위해 이러한 파일을 삭제하려는 경우 빌드 디렉토리에 있는 local.conf 파일에 다음을 추가하여 rm_work를 활성화할 수 있습니다.

    INHERIT += "rm_work"

레시피를 위해 작업 디렉토리에서 소스 코드를 수정하고 빌드하는 경우 rm_work를 활성화하면 소스에 대한 변경 사항이 손실 될 수 있습니다. rm_work에 의해 작업 디렉토리가 삭제되는 것을 막기 위해, RM_WORK_EXCLUDE 변수에 작업 중인 레시피 또는 레시피의 이름을 추가할 수 있으며, 이는 local.conf 파일에도 설정할 수 있습니다. 예를 들어보자.

    RM_WORK_EXCLUDE += "busybox glibc"

다음과같은 환경을 설정하면... 빌드과정에서 컴파일한 결과물을 지우면서 빌드한다.

INHERIT += "rm_work"

...

  • 본 포스팅은 obsidian 으로 작성하였으며, tistory-posting-cli 를 이용해 발행되었습니다.
반응형