반응형

yocto 83

[번역] Embedded Linux Development Using Yocto Project 3판

작년 3월 아주 간단하게 https://www.yocto.co.kr/180 에서 Embedded Linux Development Using Yocto Project 3판에 대한 도서리뷰를 진행했다. 이후 출판사와 이야기하여 2023년 6월에 번역을 진행하기로 합의하고 연말까지 번역을 완료하기로 했다. 생각보다 2판에 비해 수정사항이 많아서 작지만 번역료는 처음부터 번역하는 가격과 동일하게 진행하기로 했다. 원래는 수정부분에 대한 페이지별로 번역료가 책정되지만 이 경우는 많은 부분이 최신 버전으로 업데이트 되고, 일부 장은 추가되기도 해서 그렇게 진행하기로 에이콘 출판사와 합의를 했다. 최종 번역 초안은 12월 중순에 출판사에 전달하였고 그 뒤로 자잘하게 1-2번 수정을 했다. 초안이 전달되고 정산일인 1..

Book 2024.08.07

Yocto Shared State Cache 디버깅 하기

Yocto 프로젝트의 shared state cache (SSTATE)는 빌드 시스템의 빌드 속도와 효율성을 높이기 위해 사용하는 메커니즘이다. 이 캐시 시스템은 이전에 빌드된 결과물을 재사용할 수 있도록 하여, 매번 전체 빌드 과정을 다시 수행하지 않아도 되게 한다. 위의 그림은 Bazel의 Remote cache에 대해 설명한 그림인데, Yocto의 Shared State Cache 또는 PREMIRROR 도 비슷하다. 원격의 공유할 수 있는 공간에 Cache를 담아 놓고 빌드할 때 접근해서 캐시를 사용한다. 캐시는 이미 빌드해 놓은 결과물로써 변경이 없으면 그대로 사용하여 빌드 속도를 향상시키는데 주 목적이 있다. 하지만 가끔 변경이 없거나 잘못된 의존성 등으로 인해서 Cache Hit이 되지 않아..

Yocto 2024.07.31

빌드 성능 개선 (최적화)

작년 10월 https://www.yocto.co.kr/176 글에서 Yocto 빌드 성능 최적화에 대해서 글을 썼고 중간중간 clang 적용, ccache 적용 등 회사에서 작업한 내용들을 간단히 적어보았다. 이 글에서는 일반론적인 임베디드 소프트웨어 개발에서 빌드 성능을 개선할 수 있는 작업들을 경험을 토대로 적어보고자 한다. Yocto Linux, QNX, 안드로이드 등 OS를 포함하는 빌드에서 성능을 개선하는데 큰 그림이 될 수 있을 것으로 생각된다. 차량용 ECU가 여러 개에서 하나로 통합되면서 고성능의 SoC가 필요하고 그 위에 하이퍼바이저 기반으로 여러개의 OS가 올라가서 동작한다. 이 각각의 OS를 빌드하는데도 오랜 시간이 걸리고 클라우드를 사용하면 그 비용을 상당히 많이든다. 현재 프로젝..

Development 2024.07.25

AWS에서 Yocto Shared State Cache 설정 (CI 환경)

빌드 속도 최적화 및 AWS 비용 최적화 작업을 진행중에 있다. MR (Merge Request) / PR (Pull Request) 하나에 10개 이상의 빌드가 동시에 돌아가고 이에 따라 AWS 비용이 엄청나게 증가하고 있다. 또한 경우에 따라 빌드가 안정적이지 않아 다양한 이슈가 생기고 있다. Yocto Shared State CacheYocto 프로젝트의 sstate cache(Shared State Cache)는 빌드 속도를 크게 향상시키기 위해 사용되는 기능이다. 이를 통해 Yocto는 재빌드 시 동일한 작업을 반복하지 않고 이미 완료된 작업을 재사용할 수 있다. 이전 글 (https://www.yocto.co.kr/291) 에서 Shared State Cache에 대해서 조금 더 이야기 했으니..

Yocto 2024.06.25

Yocto 병렬 빌드 옵션 최적화

Yocto 프로젝트에서 병렬 빌드 옵션을 설정하면 빌드 속도를 크게 향상시킬 수 있다. 일반적으로 Yocto 프로젝트는 OpenEmbedded 빌드 시스템을 사용하며, 병렬 빌드 옵션을 설정할 때 다음 두 가지 주요 변수를 설정해야 한다.BB_NUMBER_THREADS: BitBake가 병렬로 실행할 수 있는 스레드의 수를 지정한다.PARALLEL_MAKE: make가 병렬로 실행할 수 있는 작업의 수를 지정한다.이 변수의 기본 값은 빌드하는 호스트의 CPU 개수 값으로 meta/conf/bitbake.conf 파일에 설정 되어 있다. 작은 프로젝트나 Yocto 프로젝트의 레퍼런스인 Poky를 빌드할 때 기본 옵션을 사용해도 크게 상관은 없지만 이 옵션들은 빌드 호스트 머신의 성능과 프로젝트에 맞게 커스..

Yocto 2024.06.10

clang toolchain의 위력 (빌드 최적화, build time profiling)

인포테인먼트 제품을 개발하고 있고 Yocto 프로젝트 기반의 임베디드 리눅스를 기반으로 하고 있다. Yocto 버전은 dunfell을 사용하다가 작년에 kirkstone으로 고생해서 마이그레이션을 해서 사용중이다. 컴포넌트 하나가 이전에 4시간 걸렸던 것이 LTO (Link Time Optimization) 옵션을 적용해서 2시간으로 줄었다. 이 컴포넌트는 ARXML 기반으로 프로토콜이 작성되어 있고 이것이 code generator을 통해 헤더와 코드가 생성되고 라이브러리가 생성되는 구조이다. 그렇기에 엄청나게 많은 파일이 linking 단계에서 사용되어 오래걸렸던 것이다. LTO는 빌드 시간이 더 걸릴 수 있다고 봤지만 이 경우에는 엄청나게 단축되었다. 3가지 variant가 있는데 최근 업그레이드 ..

Linux 2024.06.06

git send-email 에서 gmail 사용시 비밀번호는?

오랜만에 Yocto 커뮤니티에서 iptables 버그 리포트가 날라왔다. 이유인 즉슨 이전 iptables 1.8.10 업그레이드 할 때 특정 패치도 함께 뺐기 때문이다. 다시 살리려고 빌드 환경을 셋업해서 테스트를 하고 아래 명령어를 통해 yocto에 올렸다. OE에 기여하는 방법과 gmail 환경 설정하는 방법은 https://www.yocto.co.kr/26 글을 참고하기 바란다. git send-email --to=openembedded-core@lists.openembedded.org --confirm=always -M -1 --subject-prefix="OE-core][PATCH" git send-email 명령어로 메일 주소와 함께 날리려고 하니 비밀 번호를 묻는다. 아주 오래전에 보안 문..

Yocto 2024.05.28

Yocto 프로젝트 Release

2024년 5월 16일 기준 Yocto 최신 릴리스는 5.0 Scarthgap 이다. 2024년 4월에 릴리스 되었고 4년동안 유지되는 LTS (Long Term Support) 버전이다. 기본적으로 Yocto 프로젝트는 6개월 단위로 릴리스를 하고 그 다음 릴리스가 나오면 유지보수를 종료시킨다 2020년에 Dunfell 3.1 버전부터 커뮤니티의 요구에 따라 2년 단위의 LTS 버전과 2년 유지보수를 결정했었다. 하지만 최근에 LTS 유지보수 기간을 2년에서 4년으로 연장하는 결정을 하였다. 위는 최근 릴리스 버전을 https://wiki.yoctoproject.org/wiki/Releases 에서 캡쳐해서 올려놓았다. https://docs.yoctoproject.org/next/migration-g..

Yocto 2024.05.16

Yocto의 logging 함수 (파이썬, 쉘)

Yocto에서는 디버깅을 할 때 로그를 남길 수 있도록 logging 함수를 파이썬과 shell로 각각 제공한다. 각 logging 함수의 종류와 비슷하지만 약간 다른 파이썬과 쉘 로깅함수에 대해서 이 글에서 간단히 알아보고자 한다.Logging 함수 종류파이썬: bb.fatal, bb.error, bb.wran, bb.note, bb.plain, bb.debugshell 스크립트: bbfatal, bberror, bbwarn, bbnote, bbplain, bbdebug함수 이름설명bb.fatal, bbfatal메시지를 출력하고 빌드를 중단시킨다.bb.error, bberror에러를 출력하지만 빌드가 중단되지는 않는다.bb.warn, bbwarn경고메시지만 출력한다.bb.note, bbnote사용자 정..

Yocto 2024.05.14

Yocto 패키지 디버깅 (oe-pkgdata-util) 방법

Yocto의 레퍼런스인 Poky의 scripts 디렉토리 밑에 다양한 툴이 있다. 이번글에서는 oe-pkgdata-util 스크립트를 가지고 간단히 패키지를 디버깅하는 방법을 알아보고자 한다. 다음은 help 명령어를 사용한 결과로 어떤 옵션들을 사용할 수 있는지를 알 수 있다. 이 글에서는 많이 사용하는 다음 명령어들을 사용해보면서 간단히 설명해보고자 한다.list-pkgs: 패키지 목록 출력. grep 명령어와 조합해서 특정 레시피의 패키지 목록을 찾아본다.list-pkg-files: 패키지에 있는 파일 목록 출력find-path: 파일 이름으로 패키지 이름 탐색. 디렉토리 경로까지 함께 주어야지 찾아진다.package-info: 패키지 버전 정보 출력 curl 레시피를 예를 들어 간단하게 현재기준 ..

Yocto 2024.05.14
728x90
반응형