Rev. LF5.15.52_2.1.0 — 30 September 2022
7 사용자 정의
i.MX Linux OS에서 빌드하고 사용자 정의하는 세가지 방법이 있다:
- i.MX Yocto Project BSP를 빌드하고 i.MX 레퍼런스 보드에서 검증한다. 이 문서의 지침은 이 방법을 자세히 설명한다.
- Kernel을 사용자 정의하고 Kernel과 U-Boot에서 사용자 보드 및 장치 트리를 생성한다. SDK를 빌드해서 Yocto Project 빌드 환경 외부에서 Kernel과 U-Boot를 빌드하는 호스트 머신을 설정하는 방법에 대한 자세한 내용은 i.MX User`s Guide(IMXLUG)의 "How to Build U-Boot and Kernel in Standalone Environment"장을 참조한다.
- 사용자 정의 Yocto Project 레이어를 생성하여, i.MX Linux 릴리스에 제공되는 BSP에서 패키지를 추가하거나 제거하는 배포를 사용자 정의한다. i.MX는 i.MX BSP 릴리스 위에 사용자 정의 레이어를 표시하는 여러 데모 예제를 제공한다. 이 문서의 나머지 섹션에서는 사용자 정의 DISTRO와 보드 구성을 생성하기 위한 지침을 제공한다.
7.1 사용자 정의 distro 생성
사용자 정의 배포판(distro)은 사용자 정의 빌드 환경을 구성할 수 있다. 릴리스된 배포판(distro) 파일 fslimx-wayland, fsl-imx-xwayland, fsl-imx-fb는 모두 특정 그래픽 백엔드에 대한 구성을 보여준다. 배포판(distro)을 사용하여 Kernel, U-Boot, GStreamer와 같은 다른 파라미터를 구성할 수도 있다. i.MX 배포판(distro) 파일은 i.MX Linux OS BSP 릴리스를 테스트하는데 필요한 사용자 정의 빌드 환경을 생성하도록 설정된다.
각 사용자는 자신의 배포판(distro) 파일을 만들고 이를 빌드 환경에 대한 공급자, 버전, 사용자 정의 구성을 설정하는데 사용하는 것이 좋다. 배포판(distro)은 기존 배포판(distro) 파일을 복사하거나 poky.conf와 같은 파일을 포함하고, 추가 변경 사항을 추가하거나 i.MX 배포판(distro) 중 하나를 포함하고 이를 시작점으로 사용하여 생성된다.
7.2 사용자 정의 보드 구성 생성
레퍼런스 보드를 개발하는 공급 업체는 FSL Community BSP에 보드를 추가할 수 있다. FSL Community BSP에서 지원하는 새 머신을 사용하면 Community에서 소스 코드를 쉽게 공유할 수 있고 Community에서 피드백을 받을 수 있다.
Yocto Project를 사용하면 새로운 i.MX 기반 보드용 BSP를 쉽게 만들고 공유할 수 있다. 업스트림 프로세스는 Linux OS 커널과 부트로더가 작동하고 해당 머신에 대해 테스트될 때 시작되어야 한다. 안정적인 Linux Kernel과 부트로더(예로 U-Boot)가 해당 머신에 사용되는 기본 머신 구성 파일로 지정되도록 하는 것이 매우 중요하다.
또 다른 중요한 단계는 새로운 머신의 유지 관리자를 결정하는 것이다. 유지 관리자는 해당 보드에서 작동하는 메인 패키지 세트를 유지하는 책임을 진다. 머신 관리자는 업데이트된 커널 및 부트로더와 해당 머신에 대해 테스트된 사용자 공간의 패키지를 유지해야 한다.
필요한 단계는 아래에 나열되어 있다.
- 필요에 따라 커널 구성 파일을 사용자 정의한다. 커널 구설 파일은 arch/arm/configs에 있으며, 공급 업체의 커널 레시피는 커널 레시피를 통해 로드된 버전으로 사용자 정의해야 한다.
- 필요에 따라 U-Boot를 사용자 정의한다. 이에 대한 자세한 내용은 i.MX BSP Porting Guide(IMXBSPPG)를 참조한다.
- 보드의 유지 관리자를 지정한다. 이 유지 관리자는 필요에 따라 파일을 업데이트하여 빌드가 항상 작동하도록 한다.
- 아래와 같이 Yocto Project Community 지침에 설명된 대로 Yocto Project 빌드를 설정한다. Community의 master branch를 사용한다.
- Yocto Project Quick Start를 참고하여 호스트 Linux OS 배포판에 의존하는 필요한 호스트 패키지를 다운로드한다.
- 다음 명령을 사용하여 Repo를 다운로드한다 :
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
- 모든 것을 보관할 디렉터리를 만든다. 디렉터리 이름으로 어떤 것이든 사용할 수 있다. 이 문서에서는 imx-community-bsp를 사용한다.
$ mkdir imx-community-bsp
- 다음 명령을 실행한다 :
$ cd imx-community-bsp
- Repo의 master branch로 Repo를 초기화한다.
$ repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b master
- 빌드에 사용할 레시피를 가져온다.
$ repo sync
- 다음 명령으로 환경을 설정한다 :
$ source setup-environment build
- fsl-community-bsp/sources/meta-freescale-3rdparty/conf/machine에서 유사한 머신 파일을 선택하고 보드를 대표하는 이름을 사용하여 복사한다. 보드에 대한 정보로 새로운 보드 파일을 편집한다. 최소한 이름과 설명은 변경한다. MACHINE_FEATURE를 추가한다.
- 최신 Community master branch로 변경 사항을 테스트하여, 모든 것이 잘 동작하는지 확인한다. 최소한 core-image-minimal을 사용한다.
$ bitbake core-image-minimal
- 패치를 준비한다. www.openembedded.org/wiki/Styleguide의 스타일 가이드를 따르고 git.yoctoproject.org/cgit/cgit.cgi/meta-freescale/tree/README에서 Contributing 섹션을 따른다.
- meta-freescale-3rdparty로 업스트림. 업스트림하려면 meta-freescale@yoctoproject.org로 패치를 보낸다.
7.3 BSP의 보안 취약성 모니터링
CVE(Common Vulnerability and Exposures) 모니터링은 Timesys의 NXP 지원 Vigiles 도구를 사용하여 수행할 수 있다. Vigiles는 대상 이미지에 대한 빌드 타임에 Yocto CVE 분석을 제공하는 취약점 모니터링 및 관리 도구이다. Yocto Project BSP에 사용된 소프트웨어에 대한 메타데이터를 수집하고, NIST, Ubuntu 및 기타 여러 소스를 포함한 다양한 소스의 CVE에 대한 정보를 통합하는 CVE 데이터베이스와 비교하여 이를 수행한다.
탐지된 취약점에 대한 높은 레벨의 개요가 반환되며, CVE에 영향을 미치는 정보, 심각도, 사용 가능한 수정 사항이 포함된 전체 세부 분석을 온라인에서 볼 수 있다.
온라인으로 보고서에 접속하려면 다음 링크를 따라 NXP Vigiles 계정에 등록한다 :
https://www.timesys.com/register-nxp-vigiles/
Vigiles 설정 및 실행에 대한 추가 정보는 다음에서 찾을 수 있다 :
https://github.com/TimesysGit/meta-timesys
7.3.1 구성
BSP 빌드의 conf/bblayers.conf에 meta-timesys를 추가한다.
파일 형식에 따라 meta-timesys를 추가한다 :
BBLAYERS += "${BSPDIR}/sources/meta-timesys"
conf/local.conf의 INHERIT 변수에 vigiles을 추가한다 :
INHERIT += "vigiles"
7.3.2 실행
meta-timesys가 빌드에 추가되면, Vigiles는 Linux BSP가 Yocto로 빌드될 때마다 보안 취약점 스캔을 실행한다. 추가 명령은 필요하지 않다. 각 빌드가 완료된 후 취약점 스캔 정보는 imx-yocto-bsp/<build dir>/vigiles 디렉터리에 저장된다.
다음을 통해 보안 검사의 세부 정보를 볼 수 있다 :
- 명령어 라인 (요약)
- 온라인 (자세한 정보)
자세한 온라인 보고서에 대한 링크가 포함된 <image name>-report.txt라는 파일을 열기만 하면 된다.