Rev. LF5.15.52_2.1.0 — 30 September 2022
8. 자주 묻는 질문
8.1 빠른 시작
이 섹션에서는 Linux 머신에서 Yocto Project를 설정하고 이미지를 빌드하는 방법을 요약하여 설명한다. 이것이 의미하는 자세한 설명은 앞의 섹션에 있다.
- "repo" 유틸리티 설치
BSP를 다운로드하려면 "repo"가 설치되어 있어야 한다. 이 작업은 한 번만 수행하면 된다.
$ mkdir ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ PATH=${PATH}:~/bin
- Yocto Project 환경에서 BSP 다운로드
repo init에 대한 -b 옵션에서 다운로드를 원하는 릴리스의 정확한 이름을 사용한다. 이것은 각 릴리스에 대해 한번만 실행되어야 하며 첫 번째 단계에서 생성한 디렉터리에 배포를 설정한다. repo sync를 실행하여 sources 아래의 레시피를 최신으로 업데이트 할 수 있다.
$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-kirkstone -m imx-5.15.52-2.1.0.xml
$ repo sync
참고
https://github.com/nxp-imx/imx-manifest/tree/?h=imx-linux-kirkstone에는 이 릴리스에서 지원하는 모든 매니페스트 파일 목록이 있습니다.
- 특정 백엔드 설정
i.MX 8와 i.MX 9에서는 Framebuffer는 지원하지 않는다. i.MX 6와 i.MX 7 SoC에서만 지원한다.
Framebuffer 설정 :
$ DISTRO=fsl-imx-fb MACHINE=<machine name> source imx-setup-release.sh -b build-fb
Wayland 설정 :
$ DISTRO=fsl-imx-wayland MACHINE=<machine name> source imx-setup-release.sh -b build-wayland
XWayland 설정 :
$: DISTRO=fsl-imx-xwayland MACHINE=<machine name> source imx-setup-release.sh -b build-xwayland
- 모든 백엔드를 위한 빌드
Qt 없이 빌드
$ bitbake imx-image-multimedia
Qt 6, 머신 러닝 기능과 함께 빌드
$ bitbake imx-image-full
8.2 로컬 구성 조정
Yocto Project 빌드는 특히 여러 빌드 디렉터리에서 빌드할 때 시간과 디스크 사용량 면에서 상당한 빌드 리소스를 사용할 수 있다. 이를 최적화하는 방법이 있다. 예를 들어, 공유된 sstate cache(빌드 상태 캐시)와 다운로드 디렉터리(다운로드된 패키지 보관)를 사용한다. local.conf 파일의 어떤 위치에든 다음과 같은 명령문을 추가할 수 있다 :
DL_DIR="/opt/imx/yocto/imx/download"
SSTATE_DIR="/opt/imx/yocto/imx/sstate-cache"
디렉터리가 이미 존재하고 적절할 권한이 있어야 한다. 빌드 시간을 최소화하기 위해 공유된 캐시를 사용하는 여러 빌드 디렉터리가 설정되어 있을 때 공유된 sstate는 도움이 된다. 공유 다운로드 디렉터리는 패치 시간을 최소화한다. 이러한 설정이 없으면, Yocto Project는 기본적으로 sstate cache와 다운로드를 위해 빌드 디렉터리를 사용한다.
DL_DIR 디렉터리에 다운로드된 모든 패키지는 <package name>.done으로 표시된다. 네트워크에서 패키지를 패치하는 데 문제가 있는 경우, 패키지의 백업 버전을 DL_DIR 디렉터리에 수동으로 복사하고 touch 명령으로 <package_name>.done 파일을 생성할 수 있다. 그런 다음 bitbake 명령을 실행한다 : bitbake <component>.
자세한 내용은 Yocto Project Reference Manual을 참조한다.
8.3 레시피
각 컴포넌트는 레시피를 사용하여 빌드된다. 새 컴포넌트의 경우, 소스(SRC_URI)를 가르키고 해당하는 경우 패치를 지정하도록 레시피를 생성해야 한다. Yocto Project 환경은 레시피의 SRC_URI에 의해 지정된 위치에 있는 makefile로 빌드된다. 자동 도구에서 빌드가 설정되면, 레시피는 autotools 및 pkgconfig를 상속해야 한다. makefile은 Yocto Project로 빌드된 패키지를 가져오기 위해 Cross Compile 도구에 의해 재정의될 수 있도록 CC를 허용해야 한다.
일부 컴포넌트는 레시피는 있지만, 추가 패치나 업데이트가 필요할 수 있다. 이것은 bbapend 레시피를 사용하여 수행할 수 있다. 이것은 업데이트된 소스에 대한 기존 레시피 세부 정보에 추가된다. 예를 들어, 새 패치를 포함하는 bbappend 레시피에는 다음 내용이 있어야 한다 :
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI += file://<patch name>.patch
FILESEXTRAPATHS_prepend는 SRC_URI에 나열된 패치를 찾기 위해, 나열된 디렉터리를 찾도록 Yocto Project에 지시한다.
참고
bbapend 레시피가 선택되지 않으면, 작업 폴더 아래의 fetch 로그 파일(log.do_fetch)을 보고 관련 패치가 포함되어 있는지 확인한다. 때때로 bbapend 파일의 버전 대신 Git 버전의 레시피가 사용된다.
8.4 추가 패키지 선택 방법
해당 패키지에 대해 제공된 레시피가 있는 경우, 이미지에 추가 패키지를 추가할 수 있다. Community에서 제공하는 검색가능한 레시피 목록은 layers.openembedded.org/에서 찾을 수 있다. 애플리케이션에 이미 Yocto Project 레시피가 있는지 검색하고 다운로드할 수 있는 위치를 찾을 수 있다.
8.4.1 이미지 업데이트
이미지는 패키지와 환경 구성의 세트이다.
이미지 파일(imx-image-multimedia.bb와 같은)은 파일 시스템 내부에 들어가는 패키지를 정의한다. Root file system, Kernel, Modules, U-Boot 바이너리는 build/tmp/deploy/images/<machine name>에서 찾을 수 있다.
참고
패키지를 이미지에 포함하지 않고 빌드할 수 있지만, 패키지를 rootfs에 자동으로 설치하려면 이미지를 다시 빌드해야 한다.
8.4.2 패키지 그룹
패키지 그룹은 모든 이미지에 포함될 수 있는 패키지 세트이다.
패키지 그룹에는 패키지 세트가 포함될 수 있다. 예를 들어, 멀티미디어 작업은 시스템에 따라 VPU 패키지가 빌드되었는지 여부를 결정할 수 있으므로, BSP에서 지원하는 모든 보드에 대해 멀티미디어 패키지 선택이 자동화될 수 있으며, 멀티미디어 패키지만 이미지에 포함된다.
<build dir>/local.conf에 다음 라인을 추가하여 추가 패키지를 설치할 수 있다.
CORE_IMAGE_EXTRA_INSTALL:append = " <package_name1 package_name2>"
많은 패키지 그룹이 있다. packagegroup나 packagegroups이라는 하위 디렉터리에 있다.
8.4.3 선호하는 버전
선호하는 버전은 특정 컴포넌트에 사용할 레시피의 선호하는 버전을 지정하는 데 사용된다. 컴포넌트는 서로 다른 레이어에 여러 레시피를 가질 수 있으며, 선호하는 버전은 사용할 특정 버전을 가리킨다.
meta-imx 레이어의 layer.conf에서 모든 레시피에 대해 선호하는 버전이 설정되어, 프로덕션 환경에 정적 시스템을 제공한다. 이러한 선호하는 버전 설정은 정식 i.MX 릴리스에 사용되지만, 향후 개발에 필수적인 것은 아니다.
선호하는 버전은 이전 버전이 어떤 레시피를 사용해야 하는지 혼동을 일으킬 수 있는 경우에도 도움이 된다. 예를 들어, imx-test와 imx-lib에 대한 이전 레시피는 연도별 버전 관리를 사용했지만, <kernel-version> 버전 관리로 변경되었다. 선호하는 버전이 없으면 이전 버전이 선택될 수 있다. _git 버전이 있는 레시피는 선호하는 버전이 설정되지 않는 한, 일반적으로 다른 레시피보다 먼저 선택된다. 선호하는 버전을 설정하려면 local.conf에 다음을 입력한다.
PREFERRED_VERSION_<component>_<soc family> = "<version>"
선호 버전에 대한 자세한 내용은 Yocto Project manual을 참조한다.
8.4.4 선호하는 제공자
선호하는 제공자는 특정 컴포넌트에 대한 선호하는 제공자를 지정하는 데 사용된다. 컴포넌트는 여러 제공자가 있을 수 있다. 예를 들어, Linux Kernel은 i.MX나 kernel.org에서 제공할 수 있고 선호하는 제공자는 사용할 제공자를 나타낸다.
예를 들어, U-Boot는 denx.de와 i.MX를 통해 Community에서 제공한다. Community 제공자는 u-boot-fslc로 지정된다. i.MX 제공자는 u-boot-imx로 지정된다. 선호하는 공급자를 지정하려면, local.conf에 다음을 입력한다 :
PREFERRED_PROVIDER_<component>_<soc family> = "<provider>"
PREFERRED_PROVIDER_u-boot_mx6 = "u-boot-imx"
8.4.5 SoC 제품군
SoC 제품군은 특정 시스템 칩 세트에 적용되는 변경되는 클래스(제품 분류)를 문서화한다. 각 머신 구성 파일에서, 머신은 특정 SoC 제품군과 함께 나열된다. 예를 들어 i.MX 6DualLite Sabre-SD는 i.MX 6와 i.MX 6DualLite SoC 제품군에 속한다. i.MX 6Solo Sabre-auto는 i.MX 6와 i.MX 6Solo SoC 제품군에 속한다. 일부 변경 사항은 local.conf의 특정 SoC 제품군을 대상으로 하여 머신 구성 파일의 변경 사항을 재정의할 수 있다. 다음은 mx6dlsabresed Kernel 설정 변경의 예이다 :
KERNEL_DEVICETREE_mx6dl = "imx6dl-sabresd.dts"
SoC 제품군은 하드웨어 클래스에만 적용되는 변경을 수행할 때 유용하다. 예를 들어 i.MX 28 EVK에는 VPU(비디오 처리 장치)가 없으므로 VPU에 대한 모든 설정은 올바른 칩 클래스로 i.MX 5나 i.MX 6을 지정해서 사용한다.
8.4.6 BitBake 기록
BitBake는 tmp/work/<architecture>/<component>/temp의 temp 디렉터리에 빌드와 패키지 프로세스를 기록한다.
컴포넌트가 패키지를 패치하는 데 실패하면, 오류를 보여주는 로그가 log.do_fetch 파일에 있다.
컴포넌트가 컴파일에 실패하면, 오류를 보여주는 로그가 log.do_compile 파일에 있다.
때때로 컴포넌트는 예상대로 배포되지 않는다. 빌드 컴포넌트 디렉터리(tmp/work/<architecture>/<component>)의 하위 디렉터리를 확인한다. 각 레시피의 package, packages-split, sysroot* 디렉터리를 확인하여 파일이 해당 위치(배포 디렉터리로 복사되기 전에 준비된 위치)에 있는지 확인한다.
8.4.7 CVE 모니터링와 알림을 위한 메커니즘 추가 방법
CVE 추적 메커니즘은 GitHub에서 패치할 수 있다. imx-yocto-bsp/sources 디렉터리로 이동한다.
다음 명령을 실행한다 :
git clone https://github.com/TimesysGit/meta-timesys.git -b kirkstone
이 명령은 NXP와 Timesys에서 제공하는 Vigiles 제품의 일부로 보안 모니터링과 알림에 사용되는 이미지 매니페스트 생성을 위한 스크립트를 제공하는 추가 메타레이어를 다운로드한다. 솔루션 사용법에 대해서는 7.3 섹션을 참조한다.
전체 CVE 보고에 접근하려면 LinuxLink 라이선스 키가 필요하다. 개발 환경에 키가 없으면, Vigiles는 데모 모드에서 계속 실행되어 요약 보고서만 생성한다.
LinuxLink에서 Vigiles 계정에 로그인한다(또는 계정이 없는 경우 다음 사이트에서 생성한다 : https://www.timesys.com/register-nxp-vigiles/). 기본 설정에 액세스하고 새 키를 생성한다. 개발 환경에 키 파일을 다운로드한다. 다음 명령문으로 Yocto의 conf/local.conf 파일에서 키 파일의 위치를 지정한다 :
VIGILES_KEY_FILE = "/tools/timesys/linuxlink_key"
9. 참조
- 부팅 스위치에 대한 자세한 내용은 i.MX Linux® User`s Guide (IMXLUG)의 "How to Boot the i.MX Boards" 섹션을 참조한다.
- U-Boot를 사용하여 이미지를 다운로드하는 방법은 i.MX Linux® User`s Guide (IMXLUG)의 "Downloading Images Using U-Boot" 섹션을 참조한다.
- SD/MMC 카드를 설정하는 방법은 i.MX Linux® User`s Guide (IMXLUG)의 "Preparing an SD/MMC Card to Boot" 섹션을 참조한다.
'NXP i.MX SoC Family > IMX Yocto Project Users Guide 한글화' 카테고리의 다른 글
IMXLXYOCTOUG - i.MX Yocto Project User`s Guide - Customization (0) | 2022.10.07 |
---|---|
IMXLXYOCTOUG - i.MX Yocto Project User`s Guide - Image Deployment (0) | 2022.10.07 |
IMXLXYOCTOUG - i.MX Yocto Project User`s Guide - Image Build (0) | 2022.10.06 |
IMXLXYOCTOUG - i.MX Yocto Project User`s Guide - Yocto Project Setup (0) | 2022.10.06 |
IMXLXYOCTOUG - i.MX Yocto Project User`s Guide - Host Setup (0) | 2022.10.06 |