i.MX Yocto Project User's Guide - 5

i.MX Yocto Project User's Guide(Rev. LF5.10.72_2.2.0 - 17 December 2021) - 5.Image Build 번역

#yocto #nxp #translation

i.MX Yocto Project User’s Guide(Rev. LF5.10.72_2.2.0 - 17 December 2021) - 5.Image Build

이 섹션에서는 이미지를 구축하는 과정과 함께 자세한 정보를 제공합니다.

5.1 Build configurations

i.MX는 i.MX 시스템의 설정을 단순화하는 imx-setup-release.sh 스크립트를 제공합니다. 스크립트를 사용하려면 빌드할 특정 시스템의 이름과 원하는 그래픽 백엔드를 지정해야 합니다. 스크립트는 지정된 시스템 및 백엔드에 대한 디렉터리와 구성 파일을 설정합니다. meta-imx 계층에서 i.MX는 메타 프리스케일 시스템 구성을 오버레이하는 새롭거나 업데이트된 시스템 구성을 제공합니다. 이러한 파일은 imx-setup-release.sh 스크립트에 의해 meta-freescale/conf/machine 디렉토리에 복사됩니다. 다음은 선택할 수 있는 i.MX 머신 구성 파일입니다. 최신 추가 사항에 대해서는 릴리스 정보나 시스템 디렉토리를 확인하십시오.

Untitled

각 빌드 폴더는 하나의 배포판만 사용하도록 구성해야 합니다. DISTRO_FEATURES 변수가 변경될 때마다 클린 빌드 폴더가 필요합니다. 각 그래픽 백엔드 프레임 버퍼, Wayland 및 XWayland에는 각각 배포판 구성이 있습니다. DISTRO 파일을 지정하지 않으면 XWayland 배포판이 기본값으로 설정됩니다. Distro 구성은 DISTRO 설정의 local.conf 파일에 저장되며 bitbake가 실행 중일 때 표시됩니다. 과거 릴리스에서는 layer.conf에서 포키 배포판과 사용자 정의 버전 및 공급자를 사용했지만, 사용자 정의 배포판이 더 나은 솔루션입니다. 기본 포키 배포판을 사용하는 경우, 기본 커뮤니티 구성이 사용됩니다. i.MX 릴리스로서 우리는 NXP가 지원하고 테스트한 일련의 구성을 선호합니다. 다음은 DISTRO 구성 목록입니다. fsl-imx-fb는 i.MX 8에서 지원되지 않으며 fsl-imx-x11은 더 이상 지원되지 않습니다.

  • fsl-imx-wayland: Wayland weston graphics.
  • fsl-imx-xwayland: Wayland graphics and X11. X11 applications using EGL are not supported.
  • fsl-imx-fb: Frame Buffer graphics - no X11 or Wayland. Frame Buffer is not supported on i.MX 8.

사용자는 선호하는 버전과 공급자를 설정하기 위해 local.conf를 업데이트하지 않고 환경을 사용자 정의하기 위해 이들 중 하나를 기반으로 자신의 배포판 파일을 만들 수 있습니다. imx-setup-release.sh 스크립트의 구문은 다음과 같습니다.

$ DISTRO=<distro name> MACHINE=<machine name> source imx-setup-release.sh -b <build dir>

DISTRO=은 빌드 환경을 구성하는 배포판으로 meta-imx/meta-sdk/conf/distro에 저장됩니다. MACHINE=은 meta-freescale 및 meta-imx의 conf/machine에 있는 구성 파일을 가리키는 시스템 이름입니다. -b 은 imx-setup-release.sh 스크립트에 의해 생성된 빌드 디렉토리의 이름을 지정합니다. 스크립트가 실행되면 사용자에게 EULA에 동의하라는 메시지가 표시됩니다. EULA가 수락되면 각 빌드 폴더 내의 local.conf에 수락이 저장되고 해당 빌드 폴더에 대한 EULA 수락 쿼리가 더 이상 표시되지 않습니다.

스크립트가 실행된 후 작업 디렉토리는 -b 옵션으로 지정된 스크립트에 의해 방금 생성된 디렉토리입니다. bblayers.conf 및 local.conf 파일을 포함하는 conf 폴더가 생성됩니다.

/conf/bblayers.conf 파일에는 i.MX Yocto 프로젝트 릴리스에서 사용된 모든 메타레이어가 포함되어 있습니다. local.conf 파일에는 시스템 및 배포 사양이 포함되어 있습니다. ```bash MACHINE ??= 'imx7ulpevk' DISTRO ?= 'fsl-imx-xwayland' ACCEPT_FSL_EULA = "1" ``` 필요한 경우 이 파일을 편집하여 MACHINE 구성을 변경할 수 있습니다. local.conf 파일의 ACCEPT_FSL_EULA는 EULA의 조건을 수락했음을 나타냅니다. meta-imx 계층에서 i.MX6 및 i.MX 7 시스템에 대한 통합 시스템 구성(imx6qpdlsolox.conf 및 imx6ul7d.conf)이 제공됩니다. i.MX는 이를 사용하여 테스트를 위해 하나의 이미지에 모든 장치 트리가 있는 공통 이미지를 구축합니다. 테스트 이외의 용도로 이 기계를 사용하지 마십시오. ### 5.2 Choosing an i.MX Yocto project image Yocto 프로젝트는 다른 레이어에서 사용할 수 있는 몇 가지 이미지를 제공합니다. Poky는 일부 이미지를 제공하고 meta-freescale 및 meta-freescale-distro는 다른 이미지를 제공하며 추가 이미지 레시피는 meta-imx 계층에서 제공됩니다. 다음 표에는 다양한 주요 이미지, 해당 콘텐츠 및 이미지 레시피를 제공하는 레이어가 나열되어 있습니다. | Image name | Target | Provided by layer | | --- | --- | --- | | core-image-minimal | 장치만 부팅할 수 있는 작은 이미지입니다. | poky | | core-image-base | 대상 장치 하드웨어를 완전히 지원하는 콘솔 전용 이미지입니다. | poky | | core-image-sato | 모바일 환경과 모바일 디바이스를 위한 비주얼 스타일인 Sato를 사용한 이미지입니다. 이미지는 Sato 테마를 지원하며 Pimlico 애플리케이션을 사용합니다. 여기에는 터미널, 편집기 및 파일 관리자가 포함되어 있습니다. | poky | | imx-image-core | Wayland 백엔드에 사용할 i.MX 테스트 애플리케이션이 있는 i.MX 이미지. 이 이미지는 우리의 일일 핵심 테스트에서 사용됩니다. | meta-imx/meta-sdk | | fsl-image-machine-test | 콘솔 환경의 FSL 커뮤니티 i.MX 코어 이미지 - GUI 인터페이스 없음. | meta-freescale-distro | | imx-image-multimedia | Qt 콘텐츠가 없는 GUI로 i.MX 이미지를 빌드합니다. | meta-imx/meta-sdk | | imx-image-full | 기계 학습 기능을 사용하여 오픈 소스 Qt 5 이미지를 빌드합니다. 이러한 이미지는 하드웨어 그래픽이 있는 i.MX SoC에서만 지원됩니다. i.MX 6UltraLite, i.MX 6UltraLiteLite, i.MX 6SLL, i.MX 7Dual, i.MX 8MNanoLite 또는 i.MX 8DXL에서는 지원되지 않습니다. | meta-imx/meta-sdk | ### 5.3 Building an image Yocto 프로젝트 빌드는 bitbake 명령을 사용합니다. 예를 들어, bitbake 는 명명된 구성 요소를 빌드합니다. 각 구성 요소 빌드에는 가져오기, 구성, 컴파일, 패키징 및 대상 rootfs에 배포와 같은 여러 작업이 있습니다. bitbake 이미지 빌드는 이미지에 필요한 모든 구성 요소를 수집하고 작업별 종속성 순서로 빌드합니다. 첫 번째 빌드는 구성 요소를 빌드하는 데 필요한 도구와 함께 도구 체인입니다. 다음 명령은 이미지를 빌드하는 방법에 대한 예입니다. ```bash $ bitbake imx-image-multimedia ``` ### 5.4 Bitbake options 이미지를 빌드하는 데 사용되는 bitbake 명령은 bitbake <이미지 이름="">입니다. 아래에 설명된 특정 활동에 추가 매개변수를 사용할 수 있습니다. Bitbake는 단일 구성 요소를 개발하기 위한 다양한 유용한 옵션을 제공합니다. BitBake 매개변수를 사용하여 실행하는 명령은 다음과 같습니다. ```bash bitbake ``` 는 원하는 빌드 패키지입니다. 다음 표는 몇 가지 BitBake 옵션을 제공합니다. | BitBake parameter | Description | | --- | --- | | -c fetch | 다운로드 상태가 완료로 표시되지 않은 경우 가져옵니다. | | -c cleanall | 전체 구성 요소 빌드 디렉토리를 정리합니다. 빌드 디렉토리의 모든 변경 사항이 손실됩니다. 구성 요소의 rootfs 및 상태도 지워집니다. 구성 요소는 다운로드 디렉토리에서도 제거됩니다. | | -c deploy | 이미지 또는 구성 요소를 rootfs에 배포합니다. | | -k | 빌드 중단이 발생하더라도 구성 요소를 계속 빌드합니다. | | -c compile -f | 임시 디렉토리 아래의 소스 코드를 직접 변경하는 것은 권장하지 않지만 변경되는 경우 이 옵션을 사용하지 않는 한 Yocto 프로젝트에서 다시 빌드하지 않을 수 있습니다. 이미지가 배포된 후 강제로 재컴파일하려면 이 옵션을 사용하십시오. | | -g | 이미지 또는 구성 요소에 대한 종속성 트리를 나열합니다. | | -DDD | 디버그 3레벨 깊이를 켭니다. 각 D는 다른 수준의 디버그를 추가합니다. | ### 5.5 U-Boot configuration U-Boot 구성은 기본 시스템 구성 파일에 정의되어 있습니다. 구성은 UBOOT_CONFIG 설정을 사용하여 지정됩니다. 이를 위해서는 local.conf에서 UBOOT_CONFIG를 설정해야 합니다. 그렇지 않으면 U-Boot 빌드는 기본적으로 SD 부팅을 사용합니다. 다음 명령을 사용하여 별도로 빌드할 수 있습니다(MACHINE을 올바른 대상으로 변경). U-Boot 구성 사이에 공백을 넣어 하나의 명령으로 여러 U-Boot 구성을 구축할 수 있습니다. 다음은 각 보드에 대한 U-Boot 구성입니다. i.MX 6 및 i.MX 7 보드는 OP-TEE가 없고 OP-TEE가 있는 SD를 지원합니다. - uboot_config_imx8mpevk="sd fspi ecc" - uboot_config_imx8mnevk="sd fspi" - uboot_config_imx8mmevk="sd fspi" - uboot_config_imx8mqevk="sd" - uboot_config_imx8dxlevk="sd fspi" - uboot_conifg_imx8dxmek="sd fspi" - uboot_config_imx8qxpc0mek="sd fspi" - uboot_config_imx8qxpmek="sd fspi" - uboot_config_imx8qmmek="sd fspi" - uboot_config_imx8ulpevk = "sd" - uboot_config_imx6qsabresd="sd sata sd-optee" - uboot_config_imx6qsabreauto="sd sata eimnor spinor nand sd-optee" - uboot_config_imx6dlsabresd="sd epdc sd-optee" - uboot_config_imx6dlsabreauto="sd eimnor spinor nand sd-optee" - uboot_config_imx6solosabresd="sd sd-optee" - uboot_config_imx6solosabreauto="sd eimnor spinor nand sd-optee" - uboot_config_imx6sxsabresd="sd emmc qspi2 m4fastup sd-optee" - uboot_config_imx6sxsabreauto="sd qspi1 nand sd-optee" - uboot_config_imx6qpsabreauto="sd sata eimnor spinor nand sd-optee" - uboot_config_imx6qpsabresd="sd sata sd-optee" - uboot_config_imx6sllevk="sd epdc sd-optee" - uboot_config_imx6ulevk="sd emmc qspi1 sd-optee" - uboot_config_imx6ul9x9evk="sd qspi1 sd-optee" - uboot_config_imx6ull14x14evk="sd emmc qspi1 nand sd-optee" - uboot_config_imx6ull9x9evk="sd qspi1 sd-optee" - uboot_config_imx6ulz14x14evk="sd emmc qspi1 nand sd-optee" - uboot_config_imx7dsabresd="sd epdc qspi1 nand sd-optee" - uboot_config_imx7ulpevk="sd emmc sd-optee" U-Boot 구성으로 빌드하려면 다음 단계를 수행하십시오. 단 하나의 U-Boot 구성으로: ```bash $ echo "UBOOT_CONFIG = \"eimnor\"" >> conf/local.conf ``` 다중 U-Boot 구성: ```bash $ echo "UBOOT_CONFIG = \"sd eimnor\"" >> conf/local.conf $ MACHINE= bitbake -c deploy u-boot-imx ``` ### 5.6 Build scenarios 다음은 다양한 구성에 대한 빌드 설정 시나리오입니다. 매니페스트를 설정하고 다음 명령으로 Yocto 프로젝트 레이어 소스를 채웁니다. ```bash $ mkdir imx-yocto-bsp $ cd imx-yocto-bsp $ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-hardknott -m imx-5.10.72-2.2.0.xml $ repo sync ``` 다음 섹션에서는 몇 가지 구체적인 예를 제공합니다. 명령을 사용자 지정하기 위해 지정된 시스템 이름과 백엔드를 바꿉니다. **5.6.2 XWayland image on i.MX 8QuadXPlus MEK** ```bash $ DISTRO=fsl-imx-fb MACHINE=imx6qpsabreauto source imx-setup-release.sh –b build-fb $ bitbake imx-image-multimedia ``` 이것은 프레임 버퍼 백엔드로 멀티미디어 이미지를 빌드합니다. **5.6.2 XWayland image on i.MX 8QuadXPlus MEK** ```bash $ DISTRO=fsl-imx-xwayland MACHINE=imx8qxpmek source imx-setup-release.sh -b build-xwayland $ bitbake imx-image-full ``` 이것은 Qt 5 및 기계 학습 기능으로 XWayland 이미지를 빌드합니다. Qt 5 및 기계 학습 없이 빌드하려면 imx-image-multimedia를 대신 사용하십시오. **5.6.3 Wayland image on i.MX 8M Quad EVK** ```bash $ DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source imx-setup-release.sh -b build-wayland $ bitbake imx-image-multimedia ``` 이것은 Qt 5 없이 멀티미디어로 Weston Wayland 이미지를 구축합니다. **5.6.4 Restarting a build environment** 빌드 디렉토리를 설정한 후 새 터미널 창이 열리거나 머신이 재부팅되면 환경 변수를 설정하고 빌드를 다시 실행하기 위해 설정 환경 스크립트를 사용해야 합니다. 전체 imx-setup-release.sh는 필요하지 않습니다. ```bash $ source setup-environment ``` **5.6.5 Chromium Browser on XWayland, and Wayland** Yocto 프로젝트 커뮤니티에는 GPU 하드웨어가 있는 i.MX SoC용 Wayland 버전 Chromium Browser용 Chromium 레시피가 있습니다. NXP는 커뮤니티의 패치를 지원하거나 테스트하지 않습니다. 이 섹션에서는 Chromium을 rootfs에 통합하고 WebGL의 하드웨어 가속 렌더링을 활성화하는 방법을 설명합니다. Chromium 브라우저에는 imx-release-setup.sh 스크립트에 자동으로 추가되는 메타 브라우저와 같은 추가 레이어가 필요합니다. XWayland 또는 Wayland용 local.conf에서 이미지에 Chromium을 추가합니다. X11은 지원되지 않습니다. ```bash CORE_IMAGE_EXTRA_INSTALL += "chromium-ozone-wayland" ``` **5.6.6 Qt 5 and QtWebEngine browsers** Qt 5에는 상용 라이선스와 오픈 소스 라이선스가 모두 있습니다. Yocto 프로젝트에서 빌드할 때 오픈 소스 라이선스가 기본값입니다. 이러한 라이선스의 차이점을 이해하고 적절하게 선택하십시오. 사용자 정의 Qt 5 개발이 오픈 소스 라이센스에서 시작된 후에는 상용 라이센스로 사용할 수 없습니다. 이러한 라이선스의 차이점을 이해하려면 법적 대리인과 협력하십시오. 4개의 Qt 5 브라우저를 사용할 수 있습니다. QtWebEngine 브라우저는 다음 위치에서 찾을 수 있습니다. - /usr/share/qt5/examples/webenginewidgets/StyleSheetbrowser - /usr/share/qt5/examples/webenginewidgets/Simplebrowser - /usr/share/qt5/examples/webenginewidgets/Cookiebrowser - /usr/share/qt5/examples/webengine/quicknanobrowser 세 브라우저 모두 위의 디렉토리로 이동하여 거기에 있는 실행 파일을 실행하여 실행할 수 있습니다. 실행 파일에 -plugin evdevtouch:/dev/input/event0 매개변수를 추가하여 터치스크린을 활성화할 수 있습니다. ```bash ./quicknanobrowser -plugin evdevtouch:/dev/input/event0 ``` QtWebengine은 i.MX 6, i.MX 7 및 i.MX 8의 GPU 그래픽 하드웨어가 있는 SoC에서만 작동합니다. 이미지에 Qtwebengine을 포함하려면 local.conf 또는 이미지 레시피에 다음을 입력합니다. ```bash IMAGE_INSTALL_append = "packagegroup-qt5-webengine" ``` **5.6.7 NXP® eIQ® machine learning** meta-ml 레이어는 이전에 별도의 meta-imx-machinelearning으로 출시되었던 NXP eIQ 머신 러닝의 통합입니다. 레이어가 이제 표준 BSP 이미지(imx-image-ull)에 통합되었습니다. 많은 기능에 Qt5가 필요합니다. imx-image-full 이외의 설정을 사용하는 경우 local.conf에 다음을 입력합니다. ```bash IMAGE_INSTALL_append = "packagegroup-imx-ml" ``` NXP eIQ 패키지를 SDK에 설치하려면 local.conf에 다음을 입력합니다. ```bash TOOLCHAIN_TARGET_TASK_append += " tensorflow-lite-dev armnn-dev onnxruntime-dev" ``` OpenCV DNN 데모에 대한 모델 구성 및 입력 데이터를 추가하려면 local.conf에 다음을 입력합니다. ```bash PACKAGECONFIG_append_pn-opencv_mx8 += " tests tests-imx" ``` **5.6.8 Systemd** Systemd는 기본 초기화 관리자로 활성화되어 있습니다. systemd를 기본적으로 비활성화하려면 fsl-imx-preferred-env.inc로 이동하여 systemd 섹션을 주석 처리합니다. **5.6.9 Multilib enablement** i.MX 8의 경우 multilib 구성을 사용하여 64비트 OS에서 32비트 애플리케이션을 구축할 수 있습니다. Multilib는 다양한 타겟 최적화 또는 아키텍처 형식으로 라이브러리를 구축하고 이를 하나의 시스템 이미지로 결합하는 기능을 제공합니다. Multilib는 MULTILIB, DEFAULTTUNE 및 IMAGE_INSTALL 선언을 local.conf 파일에 추가하여 활성화됩니다. Multilib는 데비안 패키지 관리에서 지원되지 않습니다. RPM 시스템이 필요합니다. 기본 RPM으로 이동하려면 local.conf에서 두 개의 패키지 관리 줄을 주석 처리합니다. MULTILIBS 선언은 일반적으로 lib32 또는 lib64이며 다음과 같이 MULTILIB_GLOBAL_VARIANTS 변수에 정의해야 합니다. ```bash MULTILIBS = "multilib:lib32" ``` DEFAULTTUNE은 다음과 같이 이 대체 라이브러리 유형에 대한 AVAILTUNES 값 중 하나여야 합니다. ```bash DEFAULTTUNE_virtclass-multilib-lib32 = "armv7athf-neon" ``` IMAGE_INSTALL이 다음과 같이 특정 애플리케이션에 필요한 32비트 라이브러리인 이미지에 추가됩니다. ```bash IMAGE_INSTALL_append += "lib32-bash" ``` i.MX 8의 경우 32비트 애플리케이션 지원을 구축하려면 local.conf에 다음 명령문이 필요합니다. 이 구성은 64비트 시스템을 기본 시스템 유형으로 지정하고 multilib:lib32를 추가합니다. 여기서 이러한 라이브러리는 armv7athf-neon 조정으로 컴파일된 다음 모든 이미지에 lib32 패키지를 포함합니다. ```bash MACHINE = imx8mqevk # Define multilib target require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7athf-neon" # Add the multilib packages to the image IMAGE_INSTALL_append = "lib32-glibc lib32-libgcc lib32-libstdc++" ``` 처리 오류를 방지하려면 deb 패키징을 비활성화하십시오. local.conf를 확인하고 다음 사항이 있으면 주석 처리합니다. ```bash PACKAGE_CLASSES = "package_deb" EXTRA_IMAGE_FEATURES += "package-management" ``` **5.6.10 OP-TEE enablement** OP-TEE에는 OP-TEE OS, OP-TEE 클라이언트 및 OP-TEE 테스트의 세 가지 구성 요소가 필요합니다. 또한 커널과 U-Boot에는 구성이 있습니다. OP-TEE OS는 부트로더에 있고 OP-TEE 클라이언트와 테스트는 rootfs에 있습니다. 이 릴리스에서는 OP-TEE가 기본적으로 활성화되어 있습니다. OP-TEE를 비활성화하려면 meta-imx/meta-bsp/conf/layer.conf 파일로 이동하여 OP-TEE에 대한 DISTRO_FEATURES_append를 주석 처리하고 제거된 행의 주석 처리를 제거합니다. **5.6.11 Building Jailhouse** Jailhouse는 Linux OS 기반의 정적 파티셔닝 Hypervisor입니다. i.MX 8M Plus, i.MX 8M Nano, i.MX 8M Quad EVK 및 i.MX 8M Mini EVK 보드에서 지원됩니다. Jailhouse 빌드를 활성화하려면 local.conf에 다음 줄을 추가하세요. ```bash DISTRO_FEATURES_append = " jailhouse" ``` U-Boot에서 jh_netboot 또는 jh_mmcboot를 실행합니다. Jailhouse 사용을 위한 전용 DTB를 로드합니다. Linux OS 부팅 후 i.MX 8M Quad를 예로 들면: ```bash #insmod jailhouse.ko #./jailhouse enable imx8mq.cell ``` i.MX 8의 Jailhouse에 대한 자세한 내용은 i.MX Linux® 사용자 가이드(IMXLUG)를 참조하십시오. **5.6.12 Package management** Yocto 프로젝트의 기본 패키지 관리는 rpm입니다. i.MX 배포판은 이제 패키지 관리로 데비안을 활성화합니다. 이것은 local.conf에서 package_rpm으로 설정된 PACKAGE_CLASSES를 추가하거나 데비안 패키지 피드 PACKAGE_CLASSES = "package_deb" 없이 사용자 정의 배포판을 만들어 쉽게 끌 수 있습니다. 데비안 패키지 피드를 추가하면 데비안 패키지 피드에 연결되는 /etc/apt에 소스.list를 추가할 수 있습니다. 이를 통해 사용자는 Yocto 이미지에 패키지를 추가하지 않고도 이미지에 제공되지 않은 패키지를 설치할 수 있습니다. 이 패키지 피드는 i.MX Yocto 빌드 프로세스에서 생성되지 않기 때문에 각 패키지가 올바른 종속성과 함께 작동한다는 보장은 없지만 더 간단한 도구를 제공할 수 있습니다. 복잡하고 특정 버전에 대한 종속성이 더 많은 소프트웨어는 외부 패키지 피드에 문제가 있을 수 있습니다.